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

为什么Selenium使用Chrome无头模式无法正常获取目标网页的页面源码?

问题原因

你遇到的访问拒绝是纳斯达克站点的反爬机制识别到Chrome无头模式的特征,拦截了自动化请求,具体原因如下:

  • User-Agent标识异常:Chrome旧版无头模式默认的请求头User-Agent会携带HeadlessChrome字样,站点反爬规则匹配到该特征后会直接判定为爬虫,返回403拒绝访问。
  • 浏览器特征指纹匹配:无头模式下存在大量和普通用户浏览器不一致的特征,比如window.navigator.webdriver属性值为true、默认无扩展插件、部分浏览器API返回值异常等,反爬系统的指纹识别规则会命中这些特征,拦截请求。
解决方案

你可以按以下顺序修改配置尝试解决:

  1. 替换为新版无头模式参数
    如果你使用的是Chrome 112及以上版本,将旧版无头参数替换为新版无头参数,新版无头模式的运行特征和有头模式几乎完全一致,可绕过大部分基础检测:
    把原来的
    chrome_options.add_argument("--headless")
    替换为
    chrome_options.add_argument("--headless=new")

  2. 自定义正常浏览器的User-Agent
    在配置项中添加你本地正常打开Chrome时的User-Agent,覆盖无头模式默认的UA:

# 注意替换下方UA为你自己浏览器的真实UA
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')
  1. 抹除webdriver标识
    在发起请求前执行CDP命令修改浏览器特征,隐藏webdriver属性:
browser = webdriver.Chrome(executable_path="/usr/bin/chromedriver",options=chrome_options)
# 新增以下代码
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
  1. 固定窗口分辨率
    无头模式下maximize_window()可能不生效,直接指定固定分辨率避免参数异常被检测:
chrome_options.add_argument('--window-size=1920,1080')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:15:04