Ruby :: Mechanize :: cookie_jar

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

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

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

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?

Или есть способ лучше?


person user1198316    schedule 17.04.2012    source источник


Ответы (1)


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

Возможно, это не лучший способ справиться с этим, но моим решением в то время было механизировать патч обезьяны, чтобы вырезать доменную часть файла 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
person pguardiario    schedule 18.04.2012