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

Selenium调用Chrome默认配置文件的Cookie获取及无头模式异常问题

问题解决思路

1. Chrome运行时无法获取默认配置Cookie的问题

  • 原因:Chrome的用户数据目录(User Data)是独占锁定状态,同一时间仅能被一个Chrome进程占用。当本地Chrome处于运行状态时,Selenium启动的Chrome实例无法加载该目录,因此无法读取其中的Cookie。
  • 解决方案:
    • 方案一:使用Selenium前关闭所有本地Chrome进程(最直接)
    • 方案二:复制默认用户数据目录到新路径,让Selenium使用副本避免冲突:
      1. 关闭本地Chrome
      2. 复制C:\Users\Server\AppData\Local\Google\Chrome\User Data到新位置,比如C:\Users\Server\AppData\Local\Google\Chrome\Selenium User Data
      3. 修改代码中的user-data-dir参数指向新路径

2. 非headless模式下的DevToolsActivePort错误

  • 原因:指定user-data-dir后,Chrome需要明确的调试端口才能启动DevTools;非headless模式下默认端口分配失败,导致进程崩溃。另外Windows环境下--no-sandbox参数是多余的,反而可能引发权限问题。
  • 解决方案:
    • 添加--remote-debugging-port参数,指定未被占用的端口(如9222)
    • 移除Windows环境下无需的--no-sandbox参数
    • 确保user-data-dir路径对当前用户有读写权限

修改后的示例代码

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

chrome_options = Options()
chrome_options.add_argument("--remote-debugging-port=9222")  # 指定调试端口,解决DevToolsActivePort问题
chrome_options.add_argument(r"user-data-dir=C:\Users\Server\AppData\Local\Google\Chrome\Selenium User Data")  # 使用副本目录
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_argument(
    "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
)
# 注释掉以下行即可运行非无头模式
# chrome_options.add_argument("--headless")

driver = webdriver.Chrome(options=chrome_options)

额外注意事项

  • 确保ChromeDriver版本与本地Chrome版本完全匹配(如Chrome 114对应ChromeDriver 114)
  • 若需同步默认配置的Cookie,可定期从原User Data目录复制Cookies文件到副本目录

内容的提问来源于stack exchange,提问作者Сервер Чауш

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:15:04