【问题标题】:how to use python request auth and get the cookies at the same time如何使用python请求身份验证并同时获取cookies
【发布时间】:2017-03-22 17:09:58
【问题描述】:

我正在尝试登录网络,起初我尝试了 requests.session:

import requests
session=requests.Session()
params={"username":"woniu","password":"password"}
s=session.post(url,params)  
print(s.cookies.get_dict())

但是登录失败,并且没有cookies返回。(我以为这个网站可能是一个HTTP基本的aceess认证,我只能使用auth)

然后我尝试使用请求的身份验证

from requests.auth import AuthBase
from requests.auth import HTTPBasicAuth
auth=HTTPBasicAuth('woniu','password')
r=requests.post(url",auth=auth)

这次登录成功,但仍然没有返回cookie。

问题是:即使我登录成功,当我尝试发布某些内容时,我发现自己又回到了登录页面。 这是因为我没有处理饼干吗?我怎样才能成功登录并同时获取cookies。

【问题讨论】:

    标签: python cookies request


    【解决方案1】:

    如果您确定该页面:
    1. HTTPAuth 是否受保护
    2. 期待一个 POST 请求

    那么这应该可以工作(经过测试):

    >>> import requests
    >>> url = 'http://.../auth'
    >>> r = requests.post(url, data={'post_data': '987654321'},
    ...                   auth=('user123', 'pass456'))
    >>> r
    <Response [200]>
    >>> r.cookies.items()
    [('secret_cookie', '987654321')]
    

    请注意,POST 数据由 data 参数提供,HTTP Auth 凭据仅作为元组 auth 提供。

    【讨论】:

    • 感谢您的帮助!我不是 100% 确定该页面是否受 HTTPAuth 保护(这很重要,或者如何确保)。您是否建议我在发布数据时同时进行身份验证?我试过但似乎不起作用。为什么 post_data 在 cookie 项中?
    • 服务器将 cookie 设置为发布的任何内容。出于演示目的,POST 和 Auth 同时工作。
    • 你怎么不知道页面希望你发送什么? :(
    • 我用的是Fiddler(它是一个exe文件),它是一个免费的网络调试工具。刚开始用,还不太清楚。
    • 在我的问题中,需要发送的数据很多,我只选择了其中的一部分,可能需要将Fiddler显示的所有数据都发送出去。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2014-09-25
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多