使用Firefox导出的cookies.txt调用Python Requests报Invalid header value错误求助
我之前也碰到过一模一样的情况,Firefox插件导出的cookies.txt经常会带一些不符合HTTP规范的内容,或者格式细节和Python的CookieJar预期的不匹配,才会触发这个Invalid header value错误。下面是几个亲测有效的解决思路:
方法1:用MozillaCookieJar直接加载(最直接的官方方式)
Python的http.cookiejar.MozillaCookieJar本来就是用来处理Netscape格式的cookies.txt的,这是官方推荐的加载方式,先试试这个:
import requests from http.cookiejar import MozillaCookieJar # 初始化CookieJar并加载本地文件 cookie_jar = MozillaCookieJar() # ignore_discard和ignore_expires用来保留那些本来会被丢弃/过期的Cookie cookie_jar.load('cookies.txt', ignore_discard=True, ignore_expires=True) # 把CookieJar绑定到Session上 session = requests.Session() session.cookies = cookie_jar # 测试请求 response = session.get('https://你的目标网站地址') print(response.status_code)
如果还是报错,那基本可以确定是导出的cookies.txt里有非法字符或者格式错误了。
方法2:手动清理cookies.txt的问题内容
打开你的cookies.txt文件,检查这几个点:
- 每一行是否严格遵循Netscape格式:
域名\t是否允许子域名\t路径\t是否安全\t过期时间\tCookie名称\tCookie值 - 重点看Cookie的值部分,有没有包含换行、制表符、双引号这类HTTP头禁止的字符(这些是触发错误的重灾区)
- 删掉值明显异常的Cookie行,或者手动转义特殊字符(比如把换行替换成
\n,不过更稳妥的是直接移除有问题的Cookie)
方法3:跳过导出,直接从Firefox读取Cookie(最省心)
如果手动清理太麻烦,推荐用browser-cookie3库直接读取Firefox的本地Cookie存储,完全不用导出文件,从根源避免格式问题:
先安装库:
pip install browser-cookie3
然后用代码读取:
import requests import browser_cookie3 # 直接从Firefox获取CookieJar cookie_jar = browser_cookie3.firefox() session = requests.Session() session.cookies = cookie_jar # 发起请求 response = session.get('https://你的目标网站地址') print(response.status_code)
这个库会自动处理Firefox的Cookie存储格式,还能过滤掉不符合规范的Cookie,我自己遇到这类问题时基本用这个方法解决。
为什么会出现这个错误?
本质是HTTP协议对Cookie值的字符有严格限制,Firefox本身允许存储一些特殊字符,但当Requests尝试把这些字符放到HTTP请求头里时,就会触发Invalid header value的校验错误。另外,部分导出插件可能没有严格遵循Netscape的cookies.txt格式,也会导致加载失败。
内容的提问来源于stack exchange,提问作者Rafed Muhammad Yasir
相关产品推荐
相关产品推荐

