Cloudflare 上的 bot 防护通过两个互补的机制运行:通过 安全设置 中的开关配置的内置设置,以及您使用 bot 管理字段编写的 WAF 自定义规则。了解何时使用每种方法有助于您避免创建重复的规则,并简化您的安全配置。
以下功能是通过 安全设置 中的开关和下拉菜单进行配置的。它们不需要您编写任何规则表达式。
| 功能 | 它的作用 | 可用性 |
|---|---|---|
| 阻止 AI bot | 使用自动更新的托管规则阻止 AI 爬虫(GPTBot、ClaudeBot、Bytespider 等) | 所有套餐 |
| AI 迷宫 (AI Labyrinth) | 将不合规的 AI 爬虫引导至生成的不断重复内容的迷宫中 | 所有套餐 |
| 托管 robots.txt | 在您的 robots.txt 前面添加 AI 爬虫的拒绝 (disallow) 指令 |
所有套餐 |
| Super Bot Fight Mode > Definitely automated(确定为自动化) | 阻止或质询 bot 分数 (bot score) 为 1 的流量 | 专业版、商业版、企业版 |
| Super Bot Fight Mode > Likely automated(可能为自动化) | 阻止或质询 bot 分数为 2-29 的流量 | 商业版、企业版 |
| 已验证的 bot (Verified bots) | 高信任度 bot(Googlebot、Bingbot 等)的托管类别 | 专业版、商业版、企业版 |
| 静态资源保护 | 扩展 bot 操作以涵盖静态文件类型 | 专业版、商业版、企业版 |
| 优化 WordPress | 允许 WordPress 回环 (loopback) 请求通过 bot 防护 | 专业版、商业版、企业版 |
| JavaScript 检测 | 注入轻量级脚本以识别无法执行 JavaScript 的客户端 | 所有套餐(免费版上自动启用) |
当 Cloudflare 识别出新的 bot 签名和 AI 爬虫时,Bot 设置会自动更新,而自定义规则则需要手动更新。它们不计入您的自定义规则限制,并统一应用于您的整个域名,而没有表达式错误的风险。
当您需要内置设置不提供的功能时,自定义规则非常有用。以下场景需要配合 bot 管理字段使用 WAF 自定义规则。拥有 Bot Management 订阅的客户可以使用 bot 管理字段。
由于 Bot 设置适用于您域名上的所有流量,因此您可能需要使用自定义规则针对不同路径采取不同的 bot 处理方法 — 例如,在 /login/ 上采取比在 /public/ 上更严格的保护。
仅在您的登录端点上阻止可能为自动化的流量:
(cf.bot_management.score lt 30 and not cf.bot_management.verified_bot and http.request.uri.path eq "/login")Super Bot Fight Mode 中的 Definitely automated(确定为自动化) 和 Likely automated(可能为自动化) 设置使用固定的 bot 分数分组(1 和 2-29)。如果您需要不同的阈值,例如对分数低于 20 的所有流量发起质询,则需要自定义规则。
如果您需要将 bot 分数与其他请求字段(例如国家/地区、ASN、URI 路径、JA3/JA4 指纹或用户代理)结合使用,则需要自定义规则。Bot 设置不支持复合条件。
仅对来自特定 ASN 的可能为自动化的流量发起质询:
(cf.bot_management.score lt 30 and not cf.bot_management.verified_bot and ip.src.asnum in {64496 65536})Bot 设置提供 Block(阻止)、Managed Challenge(托管质询) 和 Allow(允许) 作为操作。
如果您需要其他操作,例如 Log(记录)(用于在执行前测试规则)、Interactive Challenge(交互式质询) 或 Skip(跳过)(以绕过其他规则),则需要自定义规则。
要针对特定的 bot 启发式检测采取行动,例如账户接管或抓取模式,您需要使用 cf.bot_management.detection_ids 字段创建自定义规则。Bot 设置不会公开单个检测 ID。
要将 bot 分数、已验证的 bot 状态或 JA3/JA4 指纹发送到您的源服务器,请使用转换规则 (Transform Rules)(包括托管转换规则 (Managed Transforms))或 Snippets。这些不属于内置 bot 设置的一部分。
自定义规则在 Super Bot Fight Mode 托管规则之前执行。如果自定义规则采取了终结性操作 (terminating action)(例如阻止或托管质询),则请求不会到达 bot 设置。