Python请求无法获取cookie

时间:2017-06-08 21:19:25

标签: python session cookies python-requests

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

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

    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中搜索并发现了许多类似的讨论,但没有一个能解决我的问题。非常感谢。

1 个答案:

答案 0 :(得分:0)

我猜你的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')
相关问题