解决'requests.exceptions.InvalidHeader' 错误:无效的请求头字符
'requests.exceptions.InvalidHeader' 错误:无效的请求头字符
这个错误是因为请求头中包含了无效的字符或格式不正确,导致请求被拒绝。
错误信息解析:
raise InvalidHeader(
requests.exceptions.InvalidHeader: Invalid leading whitespace, reserved character(s), or returncharacter(s) in header value: ' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
)
错误信息提示请求头中存在以下问题:
- Invalid leading whitespace: 请求头中存在无效的前导空格。
- reserved character(s): 请求头中存在保留字符。
- returncharacter(s): 请求头中存在换行符。
解决方法:
- 检查请求头的格式,确保没有包含无效字符或空格。
- 确保请求头中的所有字符都是有效的ASCII字符。
- 使用
urllib.parse.quote函数对请求头中的特殊字符进行编码。
示例:
import urllib.parse
headers = {
'User-Agent': urllib.parse.quote(' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36')
}
response = requests.get('https://www.example.com', headers=headers)
注意:
- 错误信息中提到的 Chrome 浏览器度量指标部分与该错误无关,可以忽略。
- 为了防止类似错误再次发生,建议在编写代码时仔细检查请求头中的字符,并使用标准库或第三方库提供的编码函数对特殊字符进行处理。
原文地址: https://www.cveoy.top/t/topic/oBji 著作权归作者所有。请勿转载和采集!