在本文中,我们尽量回答了所有关键问题。要开始解决问题,第一步是确定当前使用的是哪种防护系统。为此,您可以查看常见验证码与反机器人防护系统列表,其中提供了可视化示例和关键特征,帮助您快速判断自己正在使用哪一种方案。
如果您发现自己的网站使用的是 Cloudflare Waiting Room,下一步就是更深入地了解它的特性和具体工作方式。在本文中,您还可以查看 Cloudflare Waiting Room 的接入说明,以便彻底弄清它在您的网站上是如何运行的。这样一来,您不仅能更好地理解当前的防护机制,还可以更合理地规划后续的维护和支持。
如何通过 CapMonster Cloud 解决 Waiting Room
在测试 Waiting Room 机制时,确保队列功能正常并能正确调节网站访问非常重要。
您可以通过以下方式进行检查:
- 打开启用了 Waiting Room 的页面,确保当超过用户限制时会出现队列。
- 尝试同时从多个设备或浏览器访问该站点以生成人工负载 —— 部分请求应被放入队列中。
- 验证进入队列的用户是否能看到等候页面,并在有空位时自动进入网站。
- 确保刷新页面不会将用户从队列中移除。
对于自动化测试和验证码识别,您可以使用专业服务,例如 CapMonster Cloud —— 这是一个接收验证码参数,在服务器上进行处理并返回现成解决方案的工具。该解决方案(Token 或 Cookie)可以插入到表单或浏览器中,从而无需用户交互即可通过验证。
通过 CapMonster Cloud API 工作的一般流程:
在请求解决 Cloudflare Waiting Room 时,必须指定以下参数:
type - TurnstileTask;
websiteURL - 存在挑战(Challenge)的页面 URL;
websiteKey - 目标网站上的 Cloudflare 密钥(Key);
cloudflareTaskType - wait_room;
htmlPageBase64 - 包含标题 <title>Waiting Room powered by Cloudflare</title> 的 Base64 编码 HTML 页面;
userAgent - 浏览器 User-Agent。请仅传递来自 Windows 操作系统的最新 UA;
此外,对于此任务,您必须使用自己的代理(Proxy):
proxyType :
- http - 标准 HTTP/HTTPS 代理;
- https - 如果 “http” 不起作用,请尝试此选项(某些自定义代理需要);
- socks4 - SOCKS4 代理;
- socks5 - SOCKS5 代理;
proxyAddress - 代理 IPv4/IPv6 地址;
proxyPort - 代理端口;
proxyLogin - 代理服务器登录名;
proxyPassword - 代理服务器密码.
https://api.capmonster.cloud/createTask{
"clientKey":"API_KEY",
"task": {
"type":"TurnstileTask",
"websiteURL":"https://example.com",
"websiteKey":"xxxxxxxxxx",
"cloudflareTaskType": "wait_room",
"htmlPageBase64": "PCFET0NUWVBFIGh0...vYm9keT48L2h0bWw+",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId": 0,
"status": "ready",
"solution": {
"cf_clearance": "1tarGvbY2_ZhQdYxpSBloao.FoOn9VtcJtmb_IQ_hCE-1761217338-1.2.1.1-vyVPoLYIGX0VCJomVuLjF7n0kdM0PXaPjpDsRcohxGr7hb2CE7WfcHpmQZ70goqEjdWxPsDhSVaKNTz9opxWguiNdWEEq_.SceWXIqfP7tnEb69f3bP0mixNqcWy_5P_9INpoAEqr1k7aYU0r45PT4gPr5pwHxedVySyLRdoBXIJasdTE52YOQ3NPdGWTwQ_3h2n_wYqqIvf0kCSAvimRrmsgZxomlyejwqPI6ZHi.w"
}
}收到的解决方案 (Cookie cf_clearance) 可以设置在浏览器中,或者通过指定 Cookie: cf_clearance=<值> 标头随 HTTP 请求一起发送。对于自动化和测试,使用 Puppeteer、Selenium 或 Playwright 也很方便,它们允许您模拟用户操作、注入 Cookie 并提交表单。
下面是一个使用预先获取的 Cookie 值向您的页面发送请求的示例。这对测试很有用:您可以传递正确的值和故意错误的值,以确保您的访问处理和验证逻辑工作正常。
GET https://example.com/
sec-ch-ua: "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
sec-fetch-site: same-origin
sec-fetch-mode: navigate
sec-fetch-user: ?1
sec-fetch-dest: document
accept-encoding: gzip, deflate, br
accept-language: en-US
cookie: cf_clearance=Jf0udVxx.pxJMEHnish22ZOFt4WZEh8iLKm62gIxQAw-1760087570-1.2.1.1-IAO44jrcaDIU6v3f01Q6MpH58vo521.cgZg9OG5ASav.EIf9fmqH2yETyPkmm7dExFNlRL.dYv6xA4iPtlwMepInUaeFinDbYtoMstD_9Vyexx2B2K.r4eJb9zMCQc0XA3yYDHViOC7cYBYHi58FbvycjBe4o236lyz2eoyC48IS.K1zSsVdqBqIoXIT4tEFYdibXdWudtp57lmyjwpryZy..fGFAcFjAGn3iho98_4
sec-ch-ua-arch: "x86"
sec-ch-ua-bitness: "64"
sec-ch-ua-full-version: "141.0.7390.55"
sec-ch-ua-platform-version: "19.0.0"
sec-ch-ua-model: ""
sec-ch-ua-full-version-list: "Google Chrome";v="141.0.7390.55", "Not?A_Brand";v="8.0.0.0", "Chromium";v="141.0.7390.55"
Origin: https://example.com
Upgrade-Insecure-Requests: 1- Cloudflare 计划:Waiting Room 适用于 Business (商业版) 和 Enterprise (企业版)。
- CDN 和代理:您的网站必须连接到 Cloudflare,并且域名或子域名的 DNS 记录必须是 已代理 (proxied) 的。
- Cookie:访客必须支持 Cookie,因为 Cloudflare 使用它们来跟踪队列位置。
- 确定哪些页面/用户将进入队列,哪些将绕过 Waiting Room(例如管理员、VIP、特定路径)。
1. 注册 Cloudflare 并连接您的网站。
2. 在 Traffic (流量) → Waiting Room 部分,创建一个新队列:
3. 点击 Create Waiting Room (创建等候室)。
指定:
- Waiting Room 将激活的 主机名 / URL (Hostname / URL)。
- Waiting Room 名称(用于内部记录)。
- 最大同时活跃用户数(可选,如果需要限制负载)。
4. 自定义等候页面设计:
- 您可以使用 Cloudflare 模板或自定义 HTML/CSS。
- 添加 Logo、等待时间信息和用户说明。
5. 保存并激活 Waiting Room。
6. 配置规则
Cloudflare 允许将特定流量排除在队列之外。
典型的绕过规则 (Bypass Rules):
- 管理员 IP 地址:始终允许。
- 路径/URL:排除静态文件(.js, .css, .png)或特定页面。
- 地理定位:排除特定国家/地区。
- 查询字符串 (Query string):排除特定 GET 参数。
- 在 Waiting Room → Manage Rules (管理规则) → Create new bypass rule (创建新绕过规则)。
配置:
- 规则名称 (Rule Name): Bypass JS Files
- 表达式 (Expression): ends_with(http.request.uri.path, ".js")
- 操作 (Action): Bypass Waiting Room
- 保存并部署。
所有绕过规则都允许将流量从活跃用户计数中排除,从而不影响队列。
高级功能:
- 预定事件 (Scheduled Event):仅在特定时间启用 Waiting Room(例如促销活动期间)。
- 分析 (Analytics):跟踪队列中的用户数量、等待时间和吞吐量。
- 额外的主机名/路径:单个 Waiting Room 可以在多个子域名或路径上运行。
通过 API 管理:
Cloudflare Waiting Room API 允许您:
- 创建、修改和删除绕过规则。
- 查看规则列表。
- 以编程方式管理所有 Waiting Room 设置。
POST zones/{zone_id}/waiting_rooms/{room_id}/rules
Content-Type: application/json
Authorization: Bearer <API_TOKEN>
{
"description": "Bypass admins",
"expression": "ip.src in { '1.2.3.4', '5.6.7.8' }",
"action": "bypass_waiting_room",
"enabled": true
}验证操作
1) 从不同的浏览器/设备打开网站。
2) 检查:
- 当超过限制时是否出现 Waiting Room?
- 刷新页面时队列位置是否保留?
- 绕过规则是否有效(例如管理员 IP 无需等待即可通过)?
支持的验证码
如果你接手了一个已经集成了验证码或其他防护系统的网站,但又无法访问其代码,也不用担心!要判断实际使用了哪种技术其实并不难。为了核实其是否正常工作,你可以在隔离的测试环境中使用CapMonster Cloud识别服务,确保令牌处理机制和校验逻辑都运行正常。
对于Cloudflare Waiting Room,只需识别出所用的系统,观察其行为,并确认防护是否正常工作即可。本文演示了如何识别 Cloudflare Waiting Room,以及到哪里查找其接入或重新配置的说明文档,从而帮助你自信地维护防护方案并掌控其运行情况。