Selenium 绕过 Cloudflare 反爬检测

在数据采集与自动化测试领域,Cloudflare 是开发者绕不开的反爬屏障,其 2026 年的防护体系已从单一的 IP 拦截、验证码验证,升级为融合 AI 行为分析、多维度指纹识别、实时信任评分的动态防御系统。原生 Selenium 因存在明显的自动化特征,极易被 Cloudflare 识别并拦截,而通过针对性的环境配置、工具优化与行为模拟,能够有效绕过其检测机制。本文将从 Cloudflare 检测原理出发,分享 2026 年实战验证的 Selenium 绕过方案,涵盖核心工具使用、指纹伪装、行为优化等关键要点,兼顾实用性与可操作性。

一、先搞懂:Cloudflare 如何识别 Selenium 自动化

Cloudflare 对 Selenium 的检测并非依靠单一指标,而是通过多维度信号构建客户端信任评分,评分低于阈值则会触发 JS 挑战、Turnstile 验证码甚至直接 403 拦截。其核心检测维度主要集中在以下 4 点,也是我们后续绕过的关键突破点:

  1. 浏览器指纹异常 :原生 Selenium 的 Canvas、WebGL、AudioContext 指纹具有规律性,与真实浏览器存在明显差异;同时navigator.webdriver属性会直接暴露自动化身份。
  2. 请求特征暴露:默认请求头不完整、User-Agent 固定、TLS 握手参数与真实浏览器不一致,HTTP/2 帧序列缺乏随机性。
  3. 行为模式机械化:请求间隔固定、无页面跳转的直接接口访问、鼠标 / 滚动操作无随机波动,与真人的不规则行为形成鲜明对比。
  4. IP 信誉过低:使用数据中心 IP、单一 IP 高频请求、IP 历史存在爬虫行为,会被 Cloudflare 列入低信誉库,直接提升检测等级。

二、核心方案:Selenium 防检测改造与工具选型

原生 Selenium 无法绕过 Cloudflare 的核心原因是自动化特征过于明显,因此最优解是基于 Selenium 进行去特征化改造,或使用封装了防检测能力的衍生工具。以下是 2026 年实战效果最佳的 3 种方案,从易到难排列,适配不同防护等级的站点。

方案 1:undetected-chromedriver------ 零配置快速上手

undetected-chromedriver(简称 uc)是 Selenium 的优化版 Chrome 驱动,也是目前绕过基础 Cloudflare 防护的首选工具 ,其核心是自动给 Chrome 驱动打补丁,隐藏navigator.webdriver属性、修复指纹特征,无需手动配置即可避开大部分基础检测。

安装与基础使用

python

运行

复制代码
# 安装最新版
pip install undetected-chromedriver
# 或从GitHub安装开发版,适配最新Chrome
pip install git+https://github.com/ultrafunkamsterdam/undetected-chromedriver@master
核心代码示例

支持无头模式、自定义浏览器参数,基础使用即可应对 80% 的 Cloudflare 基础防护:

python

运行

复制代码
from undetected_chromedriver import Chrome, ChromeOptions
import time

# 配置浏览器选项
options = ChromeOptions()
# 开启无头模式(可选,部分高防护站点建议关闭)
# options.headless = True
# 禁用图片加载,提升速度
options.add_argument('--blink-settings=imagesEnabled=false')
# 模拟真实浏览器窗口
options.add_argument('--window-size=1920,1080')
# 禁用自动化相关提示
options.add_argument('--disable-blink-features=AutomationControlled')

# 初始化驱动
driver = Chrome(options=options)
# 随机延迟,模拟真人操作
time.sleep(1 + float(f"{random.randint(1, 5)}")/10)
# 访问目标站点
driver.get("https://target-site.com")

# 后续操作:获取页面内容、解析数据等
print(driver.page_source)

# 关闭驱动
driver.quit()

方案 2:SeleniumBase UC 模式 ------ 适配中高防护站点

SeleniumBase 是一个功能强大的 Selenium 封装库,其UC 模式整合了 undetected-chromedriver 的核心能力,并新增了 Turnstile 验证码辅助点击、自动处理 JS 挑战的功能,适配 Cloudflare 中高防护等级的站点。相比纯 uc,SeleniumBase 的行为模拟更贴近真人,支持随机鼠标移动、页面滚动,进一步降低检测概率。

安装与核心代码

python

运行

复制代码
# 安装SeleniumBase
pip install seleniumbase
# 核心代码:启用UC模式
from seleniumbase import SB

with SB(uc=True, headless=False, window_size=(1920, 1080)) as sb:
    # 访问目标站点,自动处理Cloudflare JS挑战
    sb.open("https://target-site.com")
    # 随机滚动页面,模拟真人浏览
    sb.scroll_randomly()
    # 随机延迟
    sb.sleep_random(1, 3)
    # 获取页面内容
    print(sb.get_page_source())

方案 3:原生 Selenium 深度改造 ------ 自定义指纹与请求头

若上述工具无法满足需求,可对原生 Selenium 进行深度去特征化改造,核心是手动隐藏自动化属性、伪造浏览器指纹、完善请求头,适配 Cloudflare 高防护站点。该方案需要一定的开发功底,适合定制化需求。

核心改造点
  1. 注入 JS 代码,删除navigator.webdriver属性:

python

运行

复制代码
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
  1. 配置真实且完整的请求头,避免 User-Agent 固定:

python

运行

复制代码
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 定制请求头
caps = DesiredCapabilities.CHROME
caps['goog:chromeOptions'] = {
    'args': ['--window-size=1920,1080'],
    'prefs': {'profile.default_content_settings': {'images': 2}}
}
# 设置真实User-Agent(建议从真人浏览器中复制)
caps['userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
  1. 禁用 Chrome 的自动化扩展,避免特征暴露:

python

运行

复制代码
options.add_argument('--disable-extensions')
options.add_argument('--disable-plugins-discovery')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)

三、进阶优化:从 "技术伪装" 到 "行为拟真"

2026 年的 Cloudflare 防护体系对行为特征的检测远胜于技术特征,即便完成了 Selenium 的去特征化改造,若行为模式仍呈机械化,依然会被拦截。因此,在技术改造的基础上,需通过以下优化让自动化行为无限贴近真人,提升 Cloudflare 的信任评分。

1. 模拟真人的访问行为

  • 遵循正常访问路径:先访问站点首页,再跳转列表页、详情页,避免直接请求数据接口,同时加载部分静态资源(如 CSS、JS);
  • 增加随机操作 :在脚本中加入随机的鼠标移动、点击空白处、页面滚动,使用 Selenium 的ActionChains实现不规则交互;
  • 控制请求节奏 :避免固定时间间隔,使用random.uniform(a, b)生成随机延迟,且延迟时间控制在 1-5 秒,符合真人浏览习惯。

2. 优化网络环境,提升 IP 信誉

IP 是 Cloudflare 检测的第一道关卡,即便伪装再好,低信誉 IP 也会直接触发高强度检测:

  • 优先使用住宅 IP/ISP 代理:这类 IP 归属真实用户,Cloudflare 信誉评分高,触发验证码的概率比数据中心 IP 低 60% 以上;
  • 实现IP 轮换与会话粘性 :每 5-10 次请求切换一次 IP,且通过验证获取cf_clearance Cookie 后,后续请求保持同一 IP,避免 IP 突变;
  • 控制单 IP 请求频率:避免短时间内高频请求,单 IP 每分钟请求数控制在 20 次以内。

3. 稳定浏览器指纹,避免频繁变化

Cloudflare 会跟踪指纹的一致性,频繁更换指纹会被判定为高风险行为:

  • 固定核心指纹参数:时区、语言、屏幕分辨率与代理 IP 的地区保持一致,例如海外 IP 设置为 UTC 时区、英文语言;
  • 避免频繁修改 User-Agent:可维护一个真实 User-Agent 列表,每次运行脚本随机选取,而非每次请求都更换。

4. 合理处理验证与错误,避免 "硬顶式重试"

遇到 JS 挑战、验证码时,直接重试会放大异常信号,导致信任评分快速下降:

  • 遇到验证页面时,先暂停脚本,或调用验证码识别 API(如打码平台)处理,而非反复刷新;
  • 遇到 403、超时等错误时,执行退避策略:先切换 IP,再降低请求频率,等待 1-2 分钟后再重新访问。

四、高防护场景:组合拳方案

对于 Cloudflare 开启了 Shield Synapse、Bot Management v4.0 的高防护站点,单一的 Selenium 改造已无法绕过,此时需要采用组合拳方案,结合工具、指纹浏览器、API 服务,实现全方位的伪装与规避:

  1. 指纹浏览器 + Selenium:使用比特浏览器等专业指纹工具,为每个爬虫任务创建独立的虚拟环境,底层修改浏览器内核指纹,再结合 undetected-chromedriver 实现自动化,解决 Canvas、WebGL 等深层指纹检测;
  2. 借助专业反爬 API:如穿云 API、ZenRows,这类服务封装了成熟的绕过方案,支持自动处理 Cloudflare 验证、伪装指纹与行为,只需调用 API 即可实现数据采集,无需手动配置 Selenium;
  3. 底层协议替换:抛弃 WebDriver 协议,使用 Nodriver 通过 Chrome DevTools Protocol(CDP)与浏览器通信,减少自动化特征暴露,适配超高防护站点。

五、注意事项与合规性提醒

  1. 及时跟进工具更新:Cloudflare 的防护机制持续升级,undetected-chromedriver、SeleniumBase 等工具也会同步更新补丁,需及时升级工具版本,避免因版本滞后导致绕过失败;
  2. 避免过度爬取:即便成功绕过检测,也需控制爬取规模,避免对目标站点的服务器造成压力,否则可能面临站点的人工封禁;
  3. 遵守法律法规与站点协议 :数据采集需遵循《网络安全法》《个人信息保护法》,不得爬取受保护的商业数据、个人信息,同时需查看目标站点的robots.txt协议,避免违规爬取。

六、总结

2026 年 Selenium 绕过 Cloudflare 的核心,已从单纯的技术伪装 转向全方位的行为拟真,不再是单一工具的使用,而是 "工具改造 + 指纹稳定 + 行为模拟 + 网络优化" 的综合方案。对于基础防护站点,使用 undetected-chromedriver 即可快速实现绕过;对于中高防护站点,需结合 SeleniumBase UC 模式与真人行为模拟;对于超高防护站点,则需要指纹浏览器、专业反爬 API 的组合加持。

同时,开发者需明确:Cloudflare 与爬虫的博弈是一个长期过程,不存在一劳永逸的绕过方法,唯有持续关注 Cloudflare 的防护演进,及时调整策略,同时保持爬虫行为的 "温和性",才能在数据采集与反爬之间找到平衡。

相关推荐
喵手3 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
Suchadar3 小时前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大3 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
喵手4 小时前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析
0思必得04 小时前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化
莫问前路漫漫4 小时前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程
木头左4 小时前
Backtrader框架下的指数期权备兑策略资金管理实现与风险控制
python
玄同7654 小时前
LangChain 核心组件全解析:构建大模型应用的 “乐高积木”
人工智能·python·语言模型·langchain·llm·nlp·知识图谱
喵手5 小时前
Python爬虫实战:从零构建 Hacker News 数据采集系统:API vs 爬虫的技术抉择!(附CSV导出 + SQLite 存储)!
爬虫·python·爬虫实战·hacker news·python爬虫工程化实战·零基础python爬虫教学·csv导出
测试老哥5 小时前
软件测试之功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例