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

undetected_chromedriver无头模式遭Cloudflare拦截,如何解决?

解决无头模式下undetected_chromedriver触发Cloudflare检测的问题

当启用无头模式时,Chrome会暴露独特特征被Cloudflare识别,以下是关键修复步骤:

1. 使用新版无头模式并补充必要参数

Chrome旧版无头模式与正常浏览器差异较大,改用新版--headless=new能大幅降低被检测概率,同时补充一系列伪装参数:

  • --headless=new:新版无头模式,行为更接近正常Chrome
  • --window-size=1920,1080:设置真实窗口尺寸,避免默认小窗口暴露无头特征
  • --disable-gpu:无头模式下禁用GPU加速
  • --no-sandbox:绕过沙箱限制(部分运行环境需要)
  • --disable-dev-shm-usage:解决内存不足引发的异常
  • --accept-lang=en-US,en:设置浏览器语言,模拟真实用户
  • --disable-blink-features=AutomationControlled:直接禁用自动化检测标志

2. 修正User-Agent格式

原代码中User-Agent的内部双引号会导致参数解析错误,需去掉:

options.add_argument('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36')

3. 额外CDP命令伪装浏览器属性

通过Chrome DevTools Protocol(CDP)命令进一步隐藏自动化特征,修改navigator.webdriver和模拟真实屏幕信息:

driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': '''
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
        Object.defineProperty(screen, 'width', {
            get: () => 1920
        })
        Object.defineProperty(screen, 'height', {
            get: () => 1080
        })
    '''
})

完整修改后的代码

import ssl
import time
ssl._create_default_https_context = ssl._create_unverified_context

import undetected_chromedriver as uc
from selenium import webdriver

options = webdriver.ChromeOptions()
# 修正后的User-Agent
options.add_argument('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36')
# 新版无头模式及核心参数
options.add_argument('--headless=new')
options.add_argument('--window-size=1920,1080')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--accept-lang=en-US,en')
options.add_argument('--disable-blink-features=AutomationControlled')

driver = uc.Chrome(options=options)
# 注入隐藏自动化特征的脚本
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': '''
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
        Object.defineProperty(screen, 'width', {
            get: () => 1920
        })
        Object.defineProperty(screen, 'height', {
            get: () => 1080
        })
    '''
})

driver.get('website_url')
time.sleep(10)
driver.save_screenshot('sample.png')
driver.quit()

额外注意事项

  • 确保undetected_chromedriver为最新版本,旧版本可能存在无头模式兼容性问题
  • 避免长期使用固定User-Agent,可定期更新为当前Chrome官方UA
  • 若仍触发验证码,可尝试替换固定time.sleep为随机延迟,或模拟鼠标滚动、点击等真实用户行为

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:40:39