Cloudflare 对爬虫的检测方式分析

Posted on Mon, 17 Nov 2025 09:38:28 +0800 by LiangMingJian


Cloudflare 是什么?

Cloudflare 是一家网络基础设施和安全公司,它为客户提供包括 CDN(内容分发网络),DDoS 防御、WAF(网络应用程序防火墙)、DNS 等多样网络服务。网站通过与 Cloudflare 集成,可以快速的增强网站的安全性和访问性能。

Cloudflare WAF

Cloudflare 对爬虫的检测主要是使用 Cloudflare WAF 服务。WAF 全称 Web Application Firewall,它能保护网站免受包括爬虫,XSS 跨站脚本、DDoS 攻击等恶意活动的攻击。

Cloudflare 对爬虫的检测方法通常可以分为被动防御和主动防御两类:

  • 被动防御主要依赖于服务器后端的行为分析和 IP 信誉技术。
  • 主动防御主要依赖于客户端的 JavaScript 挑战和 Turnstile CAPTCHA 验证码测试。

CAPTCHA 是"全自动区分计算机和人类的图灵测试”的首字母缩写,其核心原理是通过设计对人类简单但对机器困难的测试(如识别扭曲字符、选择特定图片或点击复选框)来区分人机‌,防止恶意机器人带来的威胁。

Turnstile‌ 是 Cloudflare 提供的一种无感 CAPTCHA 验证码技术。

Cloudflare 的被动爬虫检测技术

Cloudflare 的被动爬虫检测技术主要有包括以下五种:

IP 地址信誉检测技术

Cloudflare 维护了一份 IP 地址信誉记录,也称为风险评分或欺诈评分记录。基于地理位置、ISP(互联网服务提供商) 和信誉历史记录等因素,网站可以限制或禁止信誉较差的 IP 地址访问。例如,使用 VPN 的 IP 地址信誉比住宅 IP 地址更差。

从这个方法引申的技术是区域限制技术,站点可以限制访问 IP 只能来自某一些区域,限制或禁止其他地区的 IP 地址访问,即我们俗称的锁区。

HTTP 请求头分析技术

Python 或其他编程语言在编写爬虫时,往往会缺少合法的 HTTP 请求头,或请求头的格式不标准或过时,此时,Cloudflare 可以通过对这些请求头进行分析检测,来识别请求是不是爬虫,从而限制或禁止非法的爬虫请求。比如,如果使用 python-requests 库进行访问时,所发送的请求往往会携带如 python-requests/2.220 的请求头。

TLS 指纹识别技术

HTTP 在访问服务器时,在完成 TCP 三次握手,四次挥手后,往往还需要进行 TLS 握手,让客户端和服务器协商加密算法、交换密钥,然后建立安全的加密通道。

TLS 握手通常在不同操作系统、不同浏览器或不同 HTTP 客户端上都有其独特的指纹。因此,Cloudflare 可以收集并分析客户端和服务器 TLS 握手期间的所有信息,与指纹数据库中的内容进行比对,来确定发送请求的客户端是否安全,从而限制或禁止非法的爬虫请求。

HTTP/2 指纹识别技术

HTTP/2 指纹识别与 TLS 指纹识别类似,其在 HTTP/1.1 协议的前提下,扩展了收集的参数值。Cloudflare 通过收集请求传入的 HTTP/2 参数与指纹数据库中的内容进行对比,来识别发送的请求是否安全可靠。

TLS 和 HTTP/2 指纹识别是基于请求的爬虫中最常用的一种技术。在爬虫过程中,这个部分的绕过是必须的。

Cloudflare AI 迷宫技术

Cloudflare 的 AI 迷宫(AI Labyrinth)本质是一个由人工智能驱动的蜜罐,它的功能主要是将爬虫重定向到错误的内容来浪费爬虫的时间和资源。与传统的静态蜜罐不同,它使用生成式 AI 动态生成内容,让爬取的内容看起来就像是真实用户的生成数据,因此更难被检测和绕过。

Cloudflare 的主动爬虫检测技术

与被动爬虫检测技术运行在服务器上不同,主动爬虫检测运行在客户端,通常是浏览器上。该技术主要包括以下四种:

验证码

验证码检测是最基本,也是最常用的一种主动爬虫检测机制。

Cloudflare 的验证码挑战称为 Turnstile CAPTCHA,是一种通过分析浏览器环境、操作系统、鼠标移动规矩、点击信号等内容来进行爬虫检测的验证码机制。

像下述图片所示的就是 Turnstile CAPTCHA,它由网站管理员所配置:

画布指纹识别

这里的画布 Canvas 是一个 HTML5 API,主要用于 JavaScript 网页绘图和制作动画。

一般来说,画布的绘图和动画不仅需要依赖浏览器的图像处理引擎,还需要依赖操作系统的硬件设备(GPU),因此,Cloudflare 可以通过收集这些数据生成唯一的指纹,然后与数据库大量合法的画布指纹来进行对比,从而识别访问网站的客户端是否安全正常,避免爬虫程序的欺骗。

事件侦听器

Cloudflare 支持向网页添加一定的事件侦听器来监控用户行为。

这些侦听器通常是静默的,对用户是不可见的,它会跟踪用户在网页上的所有操作,包括鼠标移动、点击、按键、滚动等。当侦听到异常操作时,比如在同一时间(极短时间)内点击相同元素,这些人类无法做出的行为时,Cloudflare 就会触发 JavaScript 挑战(验证码),要求用户进行验证,从而避免爬虫程序的执行。

Web API 监控

在浏览器中,存在大量可以用于检测爬虫的 Web API,Cloudflare 可以通过监控这些 API 来识别访问客户端是否正常,这些 API 通常分为以下四类:

  • 特定于浏览器的 API
  • 时间戳 API
  • 提示自动浏览器 API
  • 沙箱检测 API

结语

通过对 Cloudflare 爬虫检测技术的介绍,在实际爬虫编程时,可以针对性的对这些内容进行绕过,知己知彼,方能百战百胜。

————————————

How to Bypass Cloudflare in 2023: The 8 Best Methods @ZenRows