'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 浏览器度量指标部分与该错误无关,可以忽略。
  • 为了防止类似错误再次发生,建议在编写代码时仔细检查请求头中的字符,并使用标准库或第三方库提供的编码函数对特殊字符进行处理。
解决'requests.exceptions.InvalidHeader' 错误:无效的请求头字符

原文地址: https://www.cveoy.top/t/topic/oBji 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录