2014-10-05 2 views
1

일을하고 그것을 사용하려고하지 않는에서 설정 - 쿠키를 사용하여, 나는 늘파이썬 - 쿠키 사용이 내가 설정 - 쿠키가 도착하면

import urllib, urllib2 

data = urllib.urlencode({"email":"[email protected]", "pass":"password"}) 
request = urllib2.Request("http://www.facebook.com/login.php", data) 
request.add_header("User-Agent", "Mozilla 5.0") 

response = urllib2.urlopen(request) 
cookie = response.headers.get("Set-Cookie") 
new_request = urllib2.Request("http://www.facebook.com/login.php") 
new_request.add_header("User-Agent", "Mozilla 5.0") 
new_request.add_header("Cookie", cookie) 

new_response = urllib2.urlopen(new_request) 
if "Logout" in new_response.read(): 
     print("Logged in.") #No output 

왜 ... 내가 페이스 북에 로그인하고있어 보일?

답변

1

먼저 Set-Cookie 헤더 형식이 Cookie 헤더와 다릅니다.

헤더에 추가 정보 (doamin, expire, ...)가 포함되어 있으면 Cookie 헤더로 사용하도록 변환해야합니다. 기본 urllib2가 핸들러가 리디렉션을 위해 쿠키를 처리하지 못하기 때문에

cookie = '; '.join(
    x.split(';', 1)[0] for x in response.headers.getheaders("Set-Cookie") 
) 

은 위 않더라도, 당신은 여전히 ​​당신이 원하는 것을 얻을하지 않습니다.

use urllib2.HTTPCookieProcessor as you did before?

+0

나는 이미 그것을 사용하는 방법, 그 그냥 내가 제대로 또한이 작업을 수행하는 방법을 배울 필요 모른다. – user3818650

+1

@ user3818650, HTTPCookieProcessor없이 실제로 수행하려면 자동 리디렉션을 사용하지 않도록 설정하십시오. 그런 다음 적절한 쿠키 세트를 사용하여 직접 리디렉션을 처리하십시오. – falsetru

+1

@ user3818650, FYI, [파이썬의 urllib (2)가 리디렉션을 따르는 것을 방지하려면 어떻게합니까?] (http://stackoverflow.com/questions/554446/how-do-i-prevent-pythons-urllib2-from-following- 리디렉션) – falsetru