包括 cookie 错误的 Python 请求

Stu*_*Cat 5 python cookies python-requests

我正在尝试在合并现有 Cookie 的同时使用 Requests 模块在 python 上发出 get 请求,这是我的代码的样子:

import requests

url="https://stackoverflow.com/"
headers = {"User-Agent", "Mozilla/5.0"}
cookie = {
    "domain": ".stackoverflow.com",
    "expirationDate": "1458316186",
    "hostOnly": "false",
    "httpOnly": "false",
    "name": "__qca",
    "path": "/",
    "secure": "false",
    "session": "false",
    "storeId": "0",
    "value": "P0-SOMEVALUE-SOMEVALUE",
    "id": 1
}

print requests.get(url, cookies=cookie).text


Traceback (most recent call last):
  File "test.py", line 19, in <module>
    print requests.get(url, cookies=cookie).text
  File "C:\Python27\lib\site-packages\requests\api.py", line 55, in get
    return request('get', url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 422, in request
    prep = self.prepare_request(req)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 360, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Python27\lib\site-packages\requests\models.py", line 296, in prepare
    self.prepare_cookies(cookies)
  File "C:\Python27\lib\site-packages\requests\models.py", line 491, in prepare_cookies
    cookie_header = get_cookie_header(self._cookies, self)
  File "C:\Python27\lib\site-packages\requests\cookies.py", line 134, in get_cookie_header
    jar.add_cookie_header(r)
  File "C:\Python27\lib\cookielib.py", line 1326, in add_cookie_header
    attrs = self._cookie_attrs(cookies)
  File "C:\Python27\lib\cookielib.py", line 1285, in _cookie_attrs
    self.non_word_re.search(cookie.value) and version > 0):
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)

不完全确定我做错了什么......

Mar*_*ers 6

Cookie 应该只是键值对。您还包括了更多内容,您包括了浏览器跟踪 cookie 的所有元数据,控制客户端代码如何返回或访问此类 cookie。

让你的cookie只是一个键值对:

cookies = {'__qca': 'P0-SOMEVALUE-SOMEVALUE'}
Run Code Online (Sandbox Code Playgroud)

映射中的其他内容不是发送到服务器的 Cookie 标头的一部分

在这种特定情况下,是'id': 1键值对引发异常,因为requests它所看到的 cookie 的值id应该是字符串,而不是整数。