2

4 つの異なるリダイレクトを行うサイトがあり、常に 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

過去に、特定のバージョンの mechanize で、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
于 2012-04-18T01:04:18.540 に答える