You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法向Selenium中导入Cookie?expiry参数报错问题

解决Selenium添加Cookie时的invalid 'expiry'错误

我之前也踩过这个一模一样的坑!你遇到的InvalidArgumentException问题,核心原因是Chrome 78+版本的驱动对Cookie的expiry字段格式有严格要求——你用driver.get_cookies()拿到的expiry是整数类型的Unix时间戳,但add_cookie()方法需要这个值是浮点数,直接传入整数就会触发这个错误。

另外还有个容易忽略的细节:在添加Cookie之前,必须先让浏览器访问目标域名的页面,否则Selenium会拒绝添加跨域Cookie,这也是很多人栽跟头的地方。

修复步骤和代码示例

1. 保存Cookie的代码无需修改

原来的保存逻辑是完全正常的:

if auth_func():  # 认证成功后保存Cookie
    pickle.dump(driver.get_cookies(), open('cookies.pkl', 'wb'))

2. 修改加载和添加Cookie的逻辑

重点处理expiry字段的类型,同时提前访问目标页面:

# 先访问目标域名的页面(比如LinkedIn主页),确保域名匹配
driver.get("https://www.linkedin.com/")

# 加载保存的Cookie
cookies = pickle.load(open('cookies.pkl', 'rb'))

for cookie in cookies:
    # 把expiry字段转换为浮点数(如果存在该字段的话)
    if 'expiry' in cookie:
        cookie['expiry'] = float(cookie['expiry'])
    # 添加Cookie到当前会话
    driver.add_cookie(cookie)

# 刷新页面验证Cookie是否生效
driver.refresh()

为什么这样能解决问题?

  • 关于expiry字段:Chrome驱动在解析Cookie时会严格校验数据类型,整数格式的时间戳会被判定为无效,转换成浮点数后就能被正确识别。
  • 提前访问目标页面:Selenium的add_cookie()方法要求当前会话的域名必须和Cookie的domain字段匹配,提前打开目标网站页面可以避免额外的“invalid domain”错误。

内容的提问来源于stack exchange,提问作者kshnkvn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:11:31