Requests报”requests.exceptions.InvalidHeader: Invalid return character or leading space in header: {header} “的原因以及解决办法

  • Post category:Python

问题原因:

requests.exceptions.InvalidHeader: Invalid return character or leading space in header报错是因为header头部中有非法字符,一般出现在请求头中的某些参数出现了空格或换行符等非法字符。

解决办法:

  1. 检查请求头中有没有多余的空格和换行符。

  2. 对于类似这种问题,可以使用str.strip()方法来消除空格和换行符。例如:

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
headers = {key:value.strip() for key,value in headers.items()}

在使用strip()方法之后,可以避免出现InvalidHeader错误。

  1. 使用正则表达式来过滤出不合法的字符,例如:

import re
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
pattern = re.compile('[\n\r]')
headers = {key:pattern.sub('', value) for key, value in headers.items()}

在使用正则表达式之后,可以避免出现InvalidHeader错误。

  1. 如果都不能解决问题,可以尝试更换requests库的版本,或者使用其他请求库。

以上是InvalidHeader错误的原因及解决办法的完整攻略,希望对你有所帮助。