You need to enable JavaScript to run this app. Selenium配置Headless Chrome Driver后爬虫失效如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Selenium配置Headless Chrome Driver后爬虫失效如何解决

Selenium Headless 模式运行异常修复指南

问题本质

去掉--headless参数爬虫就能正常跑、加上就超时拿不到结果,核心原因是旧版headless实现和有头模式存在原生差异:

  • 直接传入--headless参数调用的是Chrome早已标记弃用的旧版无头内核,它的浏览器指纹、UA标识、渲染逻辑和有头模式不一致,很容易被目标站点的反爬规则识别,直接返回空页面或拦截页,最终因为等待不到指定元素触发超时
  • 你当前写的窗口尺寸参数存在格式错误,实际传值不生效,进一步放大了两种模式的渲染差异

具体配置修改步骤

按下面的方式调整Chrome Options,就能让headless模式和有头模式的运行效果完全对齐:

  • 替换弃用的旧headless参数
    把原来的options.add_argument("--headless")替换为新版无头内核参数options.add_argument("--headless=new"),这个模式完全复用有头Chrome的渲染管线、交互逻辑,从内核层面消除行为差异
  • 修正窗口尺寸配置
    原配置里的--window-size=1440, 900因为逗号后多了空格会导致传值失效,改成无空格写法options.add_argument("--window-size=1440,900"),同时补全设备像素比参数options.add_argument("--device-scale-factor=1"),保证页面渲染分辨率和有头模式完全一致
  • 关闭自动化特征标识
    添加以下3组参数,避免Chrome自带的自动化运行标识被反爬规则识别:
    • options.add_argument("--disable-blink-features=AutomationControlled")
    • options.add_experimental_option("excludeSwitches", ["enable-automation"])
    • options.add_experimental_option("useAutomationExtension", False)
  • 覆盖默认无头UA
    旧headless模式默认会在User-Agent字符串里带上HeadlessChrome标识,手动把UA替换成本地有头Chrome的完整标识(可通过打开chrome://version页第一行直接复制),通过options.add_argument("user-agent=替换为你的本地有头Chrome UA字符串")传入配置
  • 修正代码里的驱动混用问题
    当前代码导入了seleniumwire的webdriver但实际初始化用的是原生selenium的webdriver,如果不需要用seleniumwire的抓包功能,可以删掉多余导入;如果需要用到相关功能,要把驱动初始化语句替换为对应的wireDriver初始化写法,避免版本兼容问题

验证方法

改完配置后先运行到driver.get()步骤,打印driver.page_source确认返回的是正常的搜索结果页源码,再执行后续的元素定位逻辑,不会再出现等待超时的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 20:45:02