【发布时间】:2017-06-08 21:19:25
【问题描述】:
就我而言,我需要从生产机器中提取数据。我的同事为我设计了以下策略 (API)。
- 登录应用程序 - 使用 cookie 设置您的应用程序/脚本;
- 访问项目主页 - 大量 JSON 格式的项目信息;
- 使用过滤器提取项目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