2

我有一个网站可以进行四种不同的重定向,并且似乎并不总是传递 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?

还是有更好的方法来做到这一点?

4

1 回答 1

0

过去,当 cookie 域看起来像:.domain.com 并且请求是针对 domain.com 时,我注意到某个版本的 mechanize 存在问题,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
于 2012-04-18T01:04:18.540 回答