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

Selenium操作Google Cookie保存后加载无效问题求助

Google账号Selenium Cookie加载后无法维持登录的解决方案

问题说明

登录Google账号后通过Selenium保存Cookie,尝试在新浏览器实例中加载Cookie以维持登录状态,但登录功能正常,加载Cookie后无法保持登录。

现有代码

保存Cookie代码

cookies = browser.get_cookies()
pickle.dump(cookies, open("cookies.pkl", "wb"))

加载Cookie代码

for cookie in cookies: 
    cookie['domain'] = '.google.com'
    try: 
        browser.add_cookie(cookie)
    except Exception as e: 
        print(e)

browser.get('https://mail.google.com/mail/u/0/#inbox')
time.sleep(120)

问题原因及修复方案

核心问题

  1. 加载Cookie前未进入对应域名页面,浏览器无该域名上下文,无法正确识别Cookie
  2. 强制修改所有Cookie的domain字段,部分Google服务Cookie依赖特定子域名,强制修改会导致失效
  3. 未处理Cookie的expiry字段类型,部分过期时间为浮点数,直接添加会触发Selenium报错

修改后的加载Cookie代码

import pickle
from selenium import webdriver
import time

# 初始化浏览器实例
browser = webdriver.Chrome()

# 加载Cookie前必须先访问Google账号页面,建立域名上下文
browser.get('https://accounts.google.com/')

# 读取保存的Cookie文件
cookies = pickle.load(open("cookies.pkl", "rb"))

for cookie in cookies:
    # 仅当domain字段缺失时补充,不强制覆盖原有值
    if 'domain' not in cookie or not cookie['domain']:
        cookie['domain'] = '.google.com'
    
    # 将浮点数类型的expiry转为整数,避免添加时出错
    if 'expiry' in cookie and isinstance(cookie['expiry'], float):
        cookie['expiry'] = int(cookie['expiry'])
    
    try:
        browser.add_cookie(cookie)
    except Exception as e:
        print(f"添加Cookie失败: {str(e)}")

# 刷新页面让Cookie生效
browser.refresh()

# 跳转至邮箱页面
browser.get('https://mail.google.com/mail/u/0/#inbox')

time.sleep(120)
browser.quit()

额外注意事项

  • 反爬机制:Google对Selenium有反检测机制,频繁操作可能触发人机验证,导致Cookie失效。建议尽量复用同一个浏览器实例,或通过指定user-data-dir参数直接保存浏览器会话(比Cookie更稳定)
  • Cookie有效期:Google的Cookie有有效期,过期后需重新登录并保存新的Cookie
  • 保存时机:确保在登录完成后(比如成功进入邮箱页面)再获取并保存Cookie,避免遗漏关键会话Cookie

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:12:47