news 2026/4/16 15:41:50

Selenium 绕过 Cloudflare 反爬检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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_clearanceCookie 后,后续请求保持同一 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 的防护演进,及时调整策略,同时保持爬虫行为的 “温和性”,才能在数据采集与反爬之间找到平衡。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 14:37:34

多模态大模型工作原理详解:视觉与语言信息如何在MLLMs中融合与传播?

本研究首次系统性分析多模态大语言模型内部跨模态信息流动机制,通过注意力屏蔽方法发现视觉信息通过三阶段传播:低层整合全局视觉特征,中层提取问题相关视觉信息,高层进行最终预测。这一发现揭示了LLaVA系列模型中信息流动的一致模…

作者头像 李华
网站建设 2026/4/16 11:14:08

一文搞定多级标题自动编号

在撰写长文档或技术报告时,多级标题的自动编号往往让人头疼。尤其是当需求超过 4 级,涉及到 1.1.1.1、(1)、1) 甚至 ① 的混合排版时,手动输入不仅效率低,还极易出错。 本文将带你彻底搞定 Word 和 WPS 中的多级列表排版&#xf…

作者头像 李华
网站建设 2026/4/16 14:21:36

拒绝 CRUD 搬砖:我如何用脚本 + 模板把重复工作降到 10%

一、真实痛点引入:我们是工程师,还是“高级打字员”? 回想一下你最近接的一个需求:“给后台增加一个商品分类管理功能”。 逻辑极其简单:增删改查(CRUD)。但你需要做哪些动作? 设…

作者头像 李华
网站建设 2026/4/13 6:15:33

2026毕设ssm+vue旅行网的设计与实现论文+程序

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。 系统程序文件列表 开题报告内容 一、选题背景 关于旅游信息化管理问题的研究,现有研究主要以传统OTA平台(在线旅游代理)的整体架构…

作者头像 李华
网站建设 2026/4/16 12:28:56

气动式定尺飞锯机设计

2气动式定尺飞锯机整体设计 2.1功能分析 气动式定尺飞行锯机应用的领域广泛,例如锯切焊接管,钢筋,轻铝管和大多合金管。显着的特征是由于其高的切割力和可切割管道的大直径范围,以及由于空气床装置保证了气动技术的高压力性&#…

作者头像 李华