【问题标题】:Retrieving no cookie from GET cookie从 GET cookie 中没有检索到 cookie
【发布时间】:2014-11-15 00:52:59
【问题描述】:

当我尝试获取响应实例的设置 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 标头,但问题是当我使用我的实际凭据时,将 None 值分配给 cookie_header。如何获取 cookie?

【问题讨论】:

  • cookie 将在 first opener.open() 连接上设置。 res 设置在哪里?
  • 只需使用requests 和它的sessions support 而不是手动处理这些东西。
  • @MartijnPieters 对不起,这应该是回应。

标签: python cookies session-cookies urllib2 urllib


【解决方案1】:

通过重新排列代码,我得以修复它。

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

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

【讨论】:

    【解决方案2】:

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

    你可以从 CookieJar 对象中获取 cookie:

    cookie = list(cookie.cookiejar)[0]
    

    如果你改用request library,你会更轻松:

    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']
    

    【讨论】:

      猜你喜欢
      • 2019-03-12
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2019-11-25
      相关资源
      最近更新 更多