2012-04-17 1 views
2

4 가지 리디렉션을 수행하며 항상 쿠키를 전달하지 않는 사이트가 있습니다.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 개의 다른 쿠키 값, 모든 페이지 (리디렉션) 또는 일부만 통과 한 쿠키 값이 있습니다. 위의 작업을 수행하고 쿠키를 수동으로 전달하려면 어떻게해야합니까? 값이 존재하지 않으면 null을 전달하면됩니까?

또는 더 좋은 방법이 있습니까?

답변

0

쿠키 도메인이 .domain.com이고 요청이 domain.com 인 경우 특정 버전의 mechanize에서 이전에 문제가 있음을 확인했습니다. 쿠키가 설정되지 않습니다.

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