使用Python Requests携带Cookies无法登录网站的问题排查
问题分析与解决
错误根源
你碰到的TypeError是因为Chrome扩展导出的Cookies格式和requests库要求的格式不匹配:
- Chrome导出的JSON是包含
name、value、domain、path等多字段的Cookie对象列表 - 而
requests的cookies参数需要的是{cookie名称: cookie值}的键值对字典,你直接取了列表里的第一个Cookie对象(带额外字段),导致库无法解析。
另外,只取单个Cookie也会漏掉网站验证身份必需的其他关键Cookie(比如会话ID、CSRF令牌)。
修正后的代码
把导出的Cookies列表转换成requests兼容的格式:
import requests import json with open('cookies.json', 'r') as file: cookies_tmp = json.load(file) # 提取每个Cookie的name和value,生成requests需要的字典 cookies = {cookie['name']: cookie['value'] for cookie in cookies_tmp} s = requests.get( url='https://www.example.com/myServices?t_page=1', cookies=cookies, # 可选:部分网站会验证User-Agent,添加浏览器UA可提高请求成功率 headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'} )
额外注意点
- 确认Cookies完整性:导出时要选中目标网站的所有相关Cookies,不能只导出单个,确保包含登录会话、验证令牌等关键项。
- 请求头补充:有些网站会校验
User-Agent、Referer等请求头,模拟浏览器的请求头可以避免被服务器拒绝。 - Cookie有效性:Cookies可能有过期时间,部分网站还会绑定登录IP,如果导出后间隔太久使用,或者服务器IP和你登录的笔记本IP差异过大,Cookies可能失效。
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

