未从GET cookie中检索任何cookie



当我尝试获取响应实例的设置cookie时,当我使用实际登录用户名和密码时,我会得到一个None值。

import urllib2, urllib, cookielib 
jar = cookielib.CookieJar()                                                                                                                        
cookie = urllib2.HTTPCookieProcessor(jar)                                                                                                                               
opener = urllib2.build_opener(cookie) 
data = urllib.urlencode({'email':'user@hotmail.com','pass':'password','login':'Log+In'})
req = urllib2.Request('http://www.facebook.com/login.php')
response = opener.open(req, data)
response = opener.open(req, data) #I open it twice on purpose
if "Logout" in response.read():
    print("Logged In")
else:
   print("Not Logged In")
cookie_header = response.headers.get("Set-Cookie")
print(cookie_header)

我知道如何设置cookie头,但问题是,当我使用实际凭据时,cookie_header被分配了一个None值。我怎样才能拿到饼干?

通过重新排列代码,我能够修复它。

response = opener.open(req, data)
cookie_header = response.headers.get("Set-Cookie")
response = opener.open(req, data) #I open it twice on purpose

因为饼干是在第一次打开时设置的。

cookie将在第一个响应上设置,而您正在测试第二个。Facebook不会在此处设置另一个cookie。

您可以从CookieJar对象获取cookie:

cookie = list(cookie.cookiejar)[0]

如果你使用request库来代替,你会轻松很多

import requests
session = requests.Session()
data = {'email':'user@hotmail.com','pass':'password','login':'Log+In'}
form = session.get('http://www.facebook.com/login.php')
response = session.post('http://www.facebook.com/login.php', data/data)
cookie_value = session.cookie['datr']

相关内容

最新更新