首页 > 解决方案 > 在 Python 中发送 cookie

问题描述

我在 python 中有一些 cookie 存储如下:

    cookie = [
{"""
    "domain": ".justdial.com",
    "expirationDate": 1577653041.993055,
    "hostOnly": false,
    "httpOnly": true,
    "name": "_ctk",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "893b0b69e25c0359d6e1fd88f16fea90a4bd2e0e8f8356e80bfc572e7f7e1343",
    "id": 1"""
},
{"""
    "domain": ".justdial.com",
    "expirationDate": 1546136368,
    "hostOnly": false,
    "httpOnly": false,
    "name": "_fbp",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "fb.1.1546114608524.1389346931",
    "id": 2"""
}
]

requests.post(URL, cookies=cookie)

我正在尝试使用请求发送这些 cookie,但这不起作用。是格式错误,还是我发送的方式错误?

谢谢您的帮助!使用 RequestsCookieJar 有效,但我找到了另一种方法:我将其保存到单独的文件中,然后使用 json 库以正确的格式获取它并能够发送 cookie。

标签: pythonjsoncookiesweb-scrapingpython-requests

解决方案


在您的代码中,cookie是一个list. 您需要发送一个dict,或者您可以使用该requests.cookies.RequestsCookieJar()对象:

文档:

>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
>>> url = 'https://httpbin.org/cookies'
>>> r = requests.get(url, cookies=jar)
>>> r.text
'{"cookies": {"tasty_cookie": "yum"}}'

推荐阅读