Cloudflare 的 Bot Management 功能会对请求来自机器人的可能性进行评分。
在创建用于机器人防护的自定义规则之前,请在 Security Settings 页面的 Bot traffic(机器人流量) 下查看相关设置。内置功能会随新的机器人签名自动更新,不计入自定义规则数量限制,且更易于管理。
| 用例 | 机器人设置 |
|---|---|
| 拦截 AI 爬虫(GPTBot、ClaudeBot 等) | Block AI bots(阻止 AI 机器人) |
| 拦截明确自动化流量(bot score 为 1) | Definitely automated(确定为自动化) |
| 质询可能自动化流量(bot score 为 2-29) | Likely automated(可能为自动化) |
| 允许已验证机器人(Googlebot、Bingbot 等) | Verified bots(已验证机器人) |
| 将机器人防护扩展到静态资源 | Static resource protection(静态资源防护) |
| 允许 WordPress 回环请求 | Optimize for WordPress(针对 WordPress 优化) |
当您需要按路径进行差异化防护(对 /api/ 与 /login/ 采用不同处理)、自定义评分阈值(例如低于 20 而非 30)、将 bot score 与其他字段组合的条件逻辑,或内置设置中不可用的自定义操作时,自定义规则仍然很有价值。
Bot score 的范围为 1 到 99。分数较低表示请求来自脚本、API 服务或自动化代理。分数较高表示请求由人类通过标准桌面或移动 Web 浏览器发出。
这些示例使用:
cf.bot_management.score以定位来自机器人的请求cf.bot_management.verified_bot以识别来自 已知良好机器人 ↗ 的请求cf.bot_management.ja3_hash以定位特定 JA3 Fingerprints
为获得最佳效果:
- 使用 Bot Analytics 在应用规则前了解您的流量。
- 从小范围开始,逐步提高机器人阈值。
您的规则也可能因 站点性质 以及对误报的容忍度而有所不同。
以下三条自定义规则可提供针对恶意机器人的基线防护:
规则 1:跳过已验证机器人
- 表达式:
(cf.bot_management.verified_bot) - 操作:跳过:
- 所有剩余自定义规则
- 已知良性机器人(Googlebot、Bingbot、监控服务)会绕过所有自定义规则。请参阅已验证机器人列表和 Radar 机器人目录 ↗。
规则 2:封锁明确的自动化流量
- 表达式:
(cf.bot_management.score eq 1) - 操作:封锁
- 评分为 1 的流量被明确判定为自动化流量。封锁此类流量误报风险极低。
规则 3:质询可能的自动化流量
- 表达式:
(cf.bot_management.score gt 1 and cf.bot_management.score lt 30) - 操作:托管质询
- 评分 2-29 表示可能存在自动化行为。质询可让合法用户通过,同时阻止机器人。
当请求明确为自动化(分数为 1)或可能为自动化(分数 2 到 29),且不在已知良好机器人列表中时,Cloudflare 会拦截该请求。
- 表达式:
(cf.bot_management.score lt 30 and not cf.bot_management.verified_bot) - 操作:Block
由于 Bot Management 会检测自动化用户,您需要显式允许良好的自动化流量——包括您的 API ↗ 和合作伙伴 API。
此示例提供与仅浏览器规则相同的防护,但允许访问您的 API 的自动化流量。
- 表达式:
(cf.bot_management.score lt 30 and not cf.bot_management.verified_bot and not starts_with(http.request.uri.path, "/api")) - 操作:Block
由于 Bot Management 对移动流量可能更敏感,您可能需要添加额外逻辑,以避免拦截合法请求。
如果您处理的是自己的移动应用请求,可以基于其特定的 JA3 fingerprint 允许该流量。
- 表达式:
(cf.bot_management.ja3_hash eq "df669e7ea913f1ac0c0cce9a201a2ec1") - 操作:Skip:
- All remaining custom rules
否则,您可以为移动流量设置更低的阈值。以下规则会拦截明确自动化的移动流量,并对可能自动化的流量发起质询。
规则 1:
- 表达式:
(cf.bot_management.score lt 2 and http.user_agent contains "App_Name 2.0") - 操作:Block
规则 2:
- 表达式:
(cf.bot_management.score lt 30 and http.user_agent contains "App_Name 2.0") - 操作:Managed Challenge
如果您的域名同时处理移动、浏览器和 API 流量,应按以下顺序排列这些示例规则:
当您使用 cf.bot_management.score 字段创建自定义规则时,静态资源默认会受到保护。
要排除静态资源,请在规则表达式中包含 not (cf.bot_management.static_resource)。详情请参阅 静态资源防护。
在此基础上,您可以根据特定请求路径(/login 或 /signup)、常见流量模式或许多其他特征来自定义规则。
请务必查看 Bot Analytics 和 Security Events,检查规则是否需要进一步调优。