【问题标题】:Python - Using Set-Cookie on for cookie use not workPython - 使用 Set-Cookie on 进行 cookie 使用不起作用
【发布时间】:2014-10-05 23:06:28
【问题描述】:

当我得到 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

为什么?

【问题讨论】:

    标签: python python-2.7 cookies urllib2 urllib


    【解决方案1】:

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

    Set-Cookie 标头包含附加信息(域、过期、...),您需要将它们转换为用于Cookie 标头。

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

    即使你做了上述,你仍然不会得到你想要的,因为默认的 urllib2 处理程序不处理用于重定向的 cookie。

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

    【讨论】:

    • 我已经知道如何使用它了,只是我还需要学习如何正确使用它。
    • @user3818650,如果你真的想在没有 HTTPCookieProcessor 的情况下这样做,请禁用自动重定向。然后自己处理重定向(设置正确的 cookie)。
    猜你喜欢
    • 2012-11-09
    • 2018-11-03
    • 2019-09-06
    • 2017-07-19
    • 1970-01-01
    • 2017-12-04
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多