如何将字符串格式Cookie传入Selenium的driver.add_cookie()方法
问题解决方案
错误根因
- 你存储的Cookie字符串是Python字典列表的字面量格式,键值用单引号包裹,而
json.loads()只识别标准JSON的双引号格式,无法解析单引号结构,因此抛出格式错误。 - 手动通过
split("},")切割Cookie列表、再拼接闭合符号的方式容错率极低,一旦Cookie的value字段中包含},类特殊字符,就会直接破坏Cookie结构导致解析失败。
正确实现代码
import ast from selenium import webdriver def parse_Cookie_string(driver, box_of_cookies): # 添加Cookie前必须先访问目标域名的任意页面,否则Selenium会报域不匹配错误 driver.get("https://kith.com/robots.txt") # 直接将Python风格的字面量字符串转为真实Cookie列表,无需手动处理结构 cookies_list = ast.literal_eval(box_of_cookies) for cookie in cookies_list: # 兼容旧版Selenium对sameSite字段的校验 if "sameSite" not in cookie: cookie["sameSite"] = "Lax" driver.add_cookie(cookie) # 所有Cookie添加完成后刷新页面即可生效 driver.refresh()
注意事项
- 不要手动拼接处理JSON/字典结构,直接用内置方法解析整体字符串的正确率和效率远高于手动拆分
- 如果你的Selenium版本低于3.141,遇到
sameSite: None的Cookie时可以单独移除该字段后再添加,避免兼容报错 - 后续存储Cookie时建议直接序列化转为标准JSON字符串存储,后续读取解析时直接用
json.loads()即可,兼容性更强
内容的提问来源于stack exchange,提问作者BotterBoy
相关产品推荐
相关产品推荐

