Python - 使用Set-Cookie on使用cookie无法正常工作

时间:2014-10-05 13:43:06

标签: python python-2.7 cookies urllib2 urllib

当我获得Set-Cookie并尝试使用它时,我似乎不会登录Facebook ...

import urllib, urllib2

data = urllib.urlencode({"email":"swagexample@hotmail.com", "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 个答案:

答案 0 :(得分:1)

首先,Set-Cookie标头格式与Cookie标头不同。

Set-Cookie标头包含其他信息(doamin,expire,...),您需要转换它们以将其用于Cookie标头。

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

即使您执行上述操作,仍然无法获得所需内容,因为默认的urllib2处理程序无法处理重定向cookie。

为什么不要use urllib2.HTTPCookieProcessor as you did before?