2012-04-17 8 views
2

У меня есть сайт, который выполняет четыре разных переадресации и, похоже, не всегда передает файлы cookie.Ruby :: Mechanize :: cookie_jar

Так я исследовал здесь и попробовал несколько решений, таких как:

создает временную cookie_jar и назначение, что каждый раз. Я также попытался вручную передать куки так:

cookie = Mechanize::Cookie.new("TLSID",bot.cookie_jar.jar['.manageyourloans.com']  
["/"]["TLSID"].value) 
cookie.domain = ".manageyourloans.com" 
cookie.path = "/" 
bot.cookie_jar.add(bot.history.last.uri,cookie) 

cookie = Mechanize::Cookie.new("TLHID",bot.cookie_jar.jar['.manageyourloans.com'] 
["/"]["TLHID"].value) 
cookie.domain = ".manageyourloans.com" 
cookie.path = "/" 
bot.cookie_jar.add(bot.history.last.uri,cookie) 

Проблема с вышесказанным в том, что, если он не должен быть принят, я получаю сообщение об ошибке.
Можно ли сделать следующее. Есть 10-12 различных значений cookie, которые, кажется, проходят, некоторые с каждой страницей (перенаправление) или всего лишь несколько из них. Как я могу сделать выше и вручную передать файлы cookie, но если значение не существует, просто передайте null?

Или есть лучший способ сделать это?

ответ

0

В прошлом я заметил проблему с определенной версией механизации, когда домен файла cookie выглядит так: .domain.com и запрос для domain.com, cookie не будет установлен.

Это может быть не лучший способ справиться с этим, но мое решение в то время было обезьяны патч механизировать, чтобы вырезать часть домена куки:

class Mechanize::Cookie 
    class << self; alias_method :old_parse, :parse end 
    def self.parse(uri, str, log = Mechanize.log, &block) 
    str.gsub!(/domain[^;]*;/,'') 
    old_parse(uri, str, log, &block) 
    end 
end 
+0

спасибо! это работает. – user1198316

Смежные вопросы