【问题标题】:Python requests CAN NOT get cookiesPython 请求无法获取 cookie
【发布时间】:2017-06-08 21:19:25
【问题描述】:

就我而言,我需要从生产机器中提取数据。我的同事为我设计了以下策略 (API)。

  1. 登录应用程序 - 使用 cookie 设置您的应用程序/脚本;
  2. 访问项目主页 - 大量 JSON 格式的项目信息;
  3. 使用过滤器提取项目ID,并使用特殊API获取每个合格项目的详细信息...

这是我的代码:

import requests
s = requests.session()
login_data=dict(User='XXXXXX',Password='XXXXXX')
url = 'http://internal-pilot-XXXXXXX-elb-15h4lq2sm46fi-6574XXXXX.us-east-1.elb.amazonaws.com/XXXX-editor-web/spring_security_login'
s.post(url, data=login_data)
r = s.get('http://internal-pilot-XXXXXXX-elb-15h4lq2sm46fi-6574XXXXX.us-east-1.elb.amazonaws.com/XXXX-editor-web/api/projects')

我逐行执行代码。运行 's.post(url, data=login_data)' 后,我注意到虽然我得到了 'Response [200]' 但会话 cookie 是空的。

>>> s.post(url, data=login_data)
<Response [200]>
>>> s.cookies
<RequestsCookieJar[]>

运行 s.get('...') 后,我注意到即使我得到了 'Response [403]',会话 cookie 也不再为空。

>>> s.get('http://internal-pilot-XXXXXXX-elb-15h4lq2sm46fi-6574XXXXX.us-east-1.elb.amazonaws.com/oaqc-editor-web/api/projects')
<Response [403]>    
>>> s.cookies.get_dict()
{'AWSELB': '39E1F543067A169F5670C20A97C217D25E0183C29D4C14F38EFC1FC58E993C6F96E88F97B58950E092F4C948A0A99AE42DED20A93E542EFD80F074EB26477729DB0DD1B5469C655062CB6005E3C6F5BDDDCEA57A12', 'JSESSIONID': '61A6DFB9DDDF1BFD7FD4F6B47E7E2B2D'}

然后我尝试了 r = s.get('...', cookies=s.cookies) 但仍然得到“响应 [403]”,这意味着 cookie 未成功存储并传递到以下请求中。

我在这里犯错了吗?我在 Stack Overflow 中搜索并发现了许多类似的讨论,但没有一个能解决我的问题。非常感谢。

【问题讨论】:

    标签: python session cookies python-requests


    【解决方案1】:

    我猜你的 login_data 语法无效。您没有为字典提供键值对。
    您需要这样提供 login_data:

    import requests
    s = requests.session()
    
    login_data = {'User':'XXXXX', 'Password': 'XXXXX'} # <----
    url = 'http://internal-pilot-XXXXXXX-elb-15h4lq2sm46fi-6574XXXXX.us-east-1.elb.amazonaws.com/XXXX-editor-web/spring_security_login'
    
    s.post(url, data=login_data)
    r = s.get('http://internal-pilot-XXXXXXX-elb-15h4lq2sm46fi-6574XXXXX.us-east-1.elb.amazonaws.com/XXXX-editor-web/api/projects')
    

    【讨论】:

    • 我试过你的建议,但没有任何区别。
    • 那我建议和你的同事谈谈或者使用 Postman 来测试 POST 请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2019-06-20
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多