Python脚本使用网站的Cookie发送JSON请求

时间:2014-03-03 14:05:44

标签: python python-requests

我正在尝试模仿经过身份验证的JSON请求。我正在使用“请求”模块来执行此操作。

import requests
import json

url = "https://"
headers = {
    'Host': 'example.com',
    'content-type': 'application/json',
    'Connection': 'keep-alive'
}

data = {
"asdsdsd": {
    "AppName": "esdf",
    "Language": "EN",
    "fsef": [
        {
            "sfddf": [
                {
                    "sdfsdfsdf": "sdfsdfsdf"
                }
            ]
        }
    ]
},
"sdfdf": {
    "sdfsdf": "sdfsdfsdf"
}
}

r = requests.post(url, data=json.dumps(data), headers=headers ,verify=False)

如何将经过身份验证的Cookie包含在此中。

我可以使用浏览器打开此请求(带有标题和数据),然后我就可以使用浏览器的经过身份验证的Cookie。

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

使用Session object管理Cookie。

s = requests.Session()

# load initial page to get session cookies set, perhaps a CSRF token
loginform = s.get(loginurl)

# post login information to the form
s.post(someurl, data={...})

# post JSON with session with authentication cookie
s.post(someurl, ...)

答案 1 :(得分:0)

headers = {
'Host': 'example.com',
'content-type': 'application/json',
'Connection': 'keep-alive'
}

session = requests.session()
session.headers=headers

您可以使用会话进行发布

session.post(url, data=json.dumps(data) ,verify=False)

答案 2 :(得分:0)

您可以将您的数据直接传递到请求中的Cookie形式,如下所示:

data = {
    "sessionid":"yoursessionidorsomethingelseidontcarelolwtfhelloworld"
}
url = "https://youramazingurl.com/list_some_private_data"
res = requests.get(url, cookies=data)

完成:)