繁体   English   中英

python在附加cookie时请求unicode编码错误

[英]python requests unicode encode error while attaching cookies

我正在使用 Python 请求访问包含 JSON 数据的 HTTPS 页面。 我在 get 请求中传递了 2 个参数,它们列在下面 verify = False cookies = cookie 我知道 verify = False 是为了通过 SSL 认证验证,cookies = cookie 参数是为了传递 cookie 值。 实际上,我已将 2 个 cookie 值放入字典中,其中一个值很长,可能超过 300 个字符。 但是当我运行我的代码时,我收到了这个错误

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 602: ordinal not in range(256)

我的代码附在下面

import requests
test_url = "https://abc/cde"
cookie = {"cookie1":"value1(10 characters)", "cookie2":"value2(300+ characters)"}
response = requests.get(test_URL, verify=False, cookies= cookie)
print(response.content)

\…HORIZONTAL ELLISPSIS字符,它不是 cookie 中的合法字符(请参阅此问答的答案

>>> r = requests.get('https://www.google.com', cookies={'mycookie': '\u2026'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/me/virtual-envs/so310/lib/python3.10/site-packages/requests/api.py", line 75, in get 
    return request('get', url, params=params, **kwargs)
  File "/home/me/virtual-envs/so310/lib/python3.10/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
...
  File "/usr/local/lib/python3.10/http/client.py", line 1317, in _send_request
    self.putheader(hdr, value)
  File "/home/me/virtual-envs/so310/lib/python3.10/site-packages/urllib3/connection.py", line 224, in putheader
    _HTTPConnection.putheader(self, header, *values)
  File "/usr/local/lib/python3.10/http/client.py", line 1249, in putheader
    values[i] = one_value.encode('latin-1')
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 9: ordinal not in range(256)

此问题的常用解决方案是使用不公开非法字符的方法对值进行编码,例如 base64 或转义 unicode 字符的 JSON,假设 cookie 的使用者知道如何解码该值。 否则,请从 cookie 值中删除此类字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM