Cloudflare 提供了两种开发人员经常混淆的不同机器人防护产品:机器人管理(企业网络级防御)和 Turnstile(免费的验证码替换小部件)。 Bot Management 是一个综合平台,包括 WAF 规则、速率限制和行为分析。 Turnstile 是一个独立的验证码小部件,任何网站都可以免费嵌入。了解差异对于选择正确的自动化方法至关重要。
快速比较
| 特征 | 机器人管理 | 旋转门 |
|---|---|---|
| 它是什么 | 企业机器人防御平台 | 免费验证码小部件 |
| 定价 | 企业计划 ($$$) | 所有计划免费 |
| 部署 | 网络级(Cloudflare 代理) | JavaScript 小部件(嵌入页面) |
| 需要 Cloudflare DNS | 是的 | 否(适用于任何网站) |
| 可见的挑战 | 有时(管理挑战) | 很少(大部分是看不见的) |
| 检测范围 | 所有对域的请求 | 特定页面操作(表单提交等) |
| 机器人得分 | 1-99(根据要求) | 通过/fail(每次挑战) |
| WAF 集成 | 是(基于机器人分数的规则) | 不 |
| JavaScript 挑战 | 是(5 秒等待页面) | 是(后台工作量证明) |
| 速率限制 | 是的 | 不 |
| CaptchaAI 支持 | 通过 Turnstile/Challenge 方法 | 是(100% 成功率) |
Cloudflare 机器人管理(企业)
机器人管理是 Cloudflare 企业计划的一部分。它在网络级别运行——对域的每个请求在到达源服务器之前都会被评估。
机器人管理如何运作
Request arrives at Cloudflare edge
↓
Bot Management engine evaluates:
├─ Machine learning model (behavioral fingerprint)
├─ Heuristics (known bot patterns)
├─ JavaScript fingerprinting (if JS challenge triggered)
├─ JA3/JA4 TLS fingerprint
├─ HTTP header analysis
└─ IP reputation (Cloudflare sees ~20% of internet traffic)
↓
Bot score assigned: 1 (definitely bot) to 99 (definitely human)
↓
WAF rules act on the score:
- Score > 50 → Allow
- Score 30-50 → Managed challenge
- Score < 30 → Block or JavaScript challenge
机器人管理组件
| 成分 | 目的 |
|---|---|
| 机器人得分 | 每个请求的基于 ML 的评分 |
| 管理挑战 | 自适应显示 JS 挑战或旋转门 |
| 超级机器人战斗模式 | Pro/Business 计划的简化模式 |
| 机器人分析 | 显示机器人流量与人工流量的仪表板 |
| WAF 自定义规则 | 在机器人分数阈值上触发的规则 |
| 速率限制 | 每个 IP/session 的请求率阈值 |
| JavaScript 检测 | 无头浏览器和自动化工具检测 |
自动化遇到什么
当站点使用机器人管理时,自动请求可能会看到:
- 直接阻止 (403) — 机器人分数非常低,WAF 规则阻止
- JavaScript 挑战页面 — 5 秒的“检查您的浏览器”页面
- 托管挑战 — Turnstile 小部件或 JS 挑战
- 隐形通行证 - 允许请求(机器人得分足够高)
Cloudflare Turnstile(免费验证码)
Turnstile 是一个独立的验证码小部件,可替代传统的验证码。它独立于机器人管理工作,可以在任何网站(不仅仅是 Cloudflare 代理的网站)上使用。
旋转栅门的工作原理
Page loads Turnstile widget
↓
Widget runs background checks:
├─ Browser proof-of-work challenge (cryptographic puzzle)
├─ Private Access Token (Apple devices)
├─ Browser environment validation
└─ Cloudflare threat intelligence
↓
Result: cf-turnstile-response token generated
↓
Token submitted with form data
↓
Server validates token via Cloudflare API (siteverify)
Turnstile小部件模式
| 模式 | 行为 | 使用案例 |
|---|---|---|
| 管理 | Cloudflare 在隐形和交互式之间做出选择 | 默认,推荐 |
| 非交互式 | 始终不可见(仅限工作量证明) | 低摩擦形式 |
| 无形的 | 没有可见的小部件,在页面加载时运行 | 背景核查 |
旋转栅门集成
<!-- Simple Turnstile integration -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQhMMQ_Rxrg"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
解决机器人管理与Turnstile问题
解决Turnstile问题(简单)
Turnstile通过CaptchaAI的Turnstile方法解决,成功率100%:
import requests
import time
API_KEY = "YOUR_API_KEY"
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "turnstile",
"sitekey": "0x4AAAAAAAC3DHQhMMQ_Rxrg",
"pageurl": "https://example.com/signup",
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
token = result["request"]
print(f"Turnstile token: {token[:50]}...")
break
解决机器人管理挑战
机器人管理使用多个防御层。验证码组件(如果存在)通常是呈现为 Turnstile 的托管挑战:
# Bot Management flow for automation:
# 1. Make initial request
response = requests.get("https://protected-site.com/api/data")
# 2. Check if challenged
if response.status_code == 403:
# Hard block — need to adjust headers, proxy, or approach
pass
elif "challenge" in response.text.lower() or response.status_code == 503:
# JavaScript challenge or managed challenge
# If it contains a Turnstile widget, solve it:
if "cf-turnstile" in response.text or "challenges.cloudflare.com" in response.text:
# Extract sitekey and solve via CaptchaAI
sitekey = extract_turnstile_sitekey(response.text)
token = solve_turnstile(sitekey, "https://protected-site.com/api/data")
Cloudflare 验证流程 页面(非旋转门)
“检查您的浏览器”JavaScript 挑战页面不是 Turnstile 小部件。 CaptchaAI 通过 cloudflare_challenge 方法处理此问题:
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "cloudflare_challenge",
"sitekey": "managed",
"pageurl": "https://protected-site.com/login",
"json": 1,
})
当你遇到每一款产品时
| 设想 | 可能的产品 | 如何识别 |
|---|---|---|
| 5 秒“检查您的浏览器”页面 | 机器人管理(JS 挑战) | 页面源中的 cf-chl-bypass、jschl_vc |
| 表单上的Turnstile小部件 | 旋转栅门(独立式) | cf-turnstile 类、challenges.cloudflare.com/turnstile |
| Cloudflare 错误页面出现 403 Forbidden | 机器人管理(硬块) | cf-ray 标头,Cloudflare 错误模板 |
| Cloudflare 页面上的交互式复选框 | 托管挑战(机器人管理) | challenges.cloudflare.com 域名 |
| 没有明显的挑战,但 cf cookies 设置 | 机器人管理(通过) | qa_session_cookie cookie |
检测码
import requests
def identify_cloudflare_protection(url):
"""Identify which Cloudflare protection a URL uses."""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/120.0.0.0",
}
response = requests.get(url, headers=headers, timeout=15, allow_redirects=False)
html = response.text
result = {
"cloudflare_protected": "cf-ray" in response.headers.get("cf-ray", "")
or "cloudflare" in response.headers.get("server", "").lower(),
"bot_management_challenge": False,
"turnstile_widget": False,
"hard_block": False,
"passed": False,
}
if response.status_code == 403:
result["hard_block"] = True
elif response.status_code == 503 and "jschl" in html:
result["bot_management_challenge"] = True
elif "cf-turnstile" in html:
result["turnstile_widget"] = True
elif response.status_code == 200:
result["passed"] = True
return result
常见问题
站点可以同时使用机器人管理和旋转门吗?
是的。 Bot Management 在网络级别针对所有请求运行,而 Turnstile 可以作为小部件添加到特定页面上。站点可能会使用机器人管理来阻止边缘的明显机器人,并在登录 /signup 表单上使用 Turnstile 进行额外验证。
Turnstile 是机器人管理的一部分吗?
不直接。旋转栅门是一个单独的产品。然而,机器人管理的“托管挑战”模式可以呈现类似旋转门的小部件。求解方法是相同的 - 使用 CaptchaAI 的 Turnstile 求解器。
哪个更难解决?
机器人管理更加困难,因为它使用多个信号(TLS 特征、IP 信誉、请求模式)评估网络级别的每个请求。 Turnstile 本身仅保护特定的表单提交。对于机器人管理,除了解决验证码挑战之外,您还需要正确的标头、TLS 配置和 IP 轮换。
CaptchaAI 能解决这两个问题吗?
CaptchaAI 解决 Turnstile 小部件(100% 成功率)和 Cloudflare 验证流程 页面。机器人管理的网络级阻止(403 响应)需要额外的基础设施(适当的标头、代理),这些基础设施超出了 CaptchaAI 的范围 - CaptchaAI 处理 CAPTCHA 质询组件。
概括
Cloudflare Bot Management 是一种企业网络级防御,可通过 ML 评分、WAF 规则和行为分析来评估每个请求。 Cloudflare Turnstile 是一个免费的验证码小部件,可通过浏览器工作量证明来验证用户。对于自动化,旋转门直接解决CaptchaAI(100%成功率)。机器人管理挑战需要正确的浏览器模拟以及验证码挑战组件的 CaptchaAI。
相关文章
- Cloudflare 浏览器完整性检查与验证码
- Cloudflare 验证流程 与旋转门检测对比
- Geetest 与 Cloudflare Turnstile 比较