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

如何配置Python/Selenium使用认证Cookie复用已登录会话?

可复用认证状态的Selenium实现方案

默认Selenium启动时会加载独立的临时浏览器用户目录,没有日常使用积累的认证Cookie、本地存储数据,会被站点识别为匿名会话触发二次验证。可以通过以下两种稳定方案实现状态复用:

方案1:全量复用日常Chrome用户配置(稳定性最高)

这种方案会直接加载日常使用的Chrome完整用户数据,所有积累的认证状态、站点设置、本地存储会完全同步,和手动打开浏览器的状态没有差异,从根源上减少验证触发概率。

实现代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def test(self):
    chrome_options = Options()
    # 替换为本地Chrome实际的用户数据目录路径
    chrome_options.add_argument("--user-data-dir=/Users/myname/Library/Application Support/Google/Chrome")
    # 指定日常使用的Chrome Profile,默认登录账号对应目录为Default
    chrome_options.add_argument("--profile-directory=Default")
    # 禁用自动化特征标识,降低风控识别概率
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    chrome_options.add_experimental_option("useAutomationExtension", False)

    driver = webdriver.Chrome(
        executable_path="/Users/myname/dev/python/drivers/chromedriver",
        options=chrome_options
    )
    # 加载完用户配置后,直接打开目标站点就是已登录的认证状态
    driver.get("https://example.com")
    # 新版Selenium替换了旧版的find_element_by_xpath写法
    search_field = driver.find_element('xpath', '//input[@id="search-white-labels-table"]')
    search_field.send_keys('my_search_string')

注意事项

  • 启动脚本前必须完全关闭所有正在运行的Chrome进程,否则用户配置目录会被系统锁定,导致Selenium启动失败
  • 不需要手动额外导入Cookie,配置加载完成后所有认证状态会自动生效

方案2:单独导出目标站点Cookie注入会话(轻量化实现)

如果不想挂载全量用户目录,可以单独导出日常浏览器中目标站点的有效Cookie,在Selenium会话中注入后完成认证状态同步。

操作步骤

  • 先在日常使用的Chrome中打开目标站点,正常完成登录、二次验证流程,确认账号处于稳定的已登录状态
  • 通过浏览器开发者工具复制该站点下所有有效Cookie,整理为Selenium可识别的字典格式
  • 必须先在Selenium中打开目标站点的域名根路径,再执行Cookie注入操作,否则会因域名不匹配报错

实现代码

# 先访问目标域名根路径,满足Cookie注入的域名校验要求
driver.get("https://example.com")
# 替换为实际导出的Cookie列表,需包含name、value、domain三个必填字段
cookie_list = [
    {"name": "session_cookie", "value": "你的Cookie值", "domain": ".example.com"},
    {"name": "auth_token", "value": "你的认证Token值", "domain": ".example.com"}
]
# 逐个注入Cookie
for cookie in cookie_list:
    driver.add_cookie(cookie)
# 刷新页面使认证状态生效
driver.refresh()

方案局限性

  • 对于依赖localStorage、IndexedDB等本地存储做认证校验的站点,仅注入Cookie会缺失关键状态,仍可能触发二次验证,稳定性弱于方案1

关键避坑提示

  • 不要随意修改导出Cookie的domain、path字段,否则会因匹配规则失效导致Cookie不生效
  • 旧版Selenium的find_element_by_xpath系列方法已被废弃,替换为find_element(by=By.XPATH, value="定位表达式")的标准写法即可兼容所有新版本
  • 若仍触发验证,可以在Chrome配置中增加参数禁用自动化特征的暴露,进一步降低被站点风控识别为脚本会话的概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 05:24:05