2012-04-17 102 views
2

我有一個網站,做四個不同的重新指導,似乎並不總是通過cookie。紅寶石::機械化:: 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不會被設置時,我注意到過去有一個機械化版本的問題。

這可能不是來對付它的最好辦法,但我當時的解決辦法是猴子補丁機械化剝離出來的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 2012-04-20 01:34:30