摘要:站点接上 Cloudflare 之后,自定义规则可按国家、URI 路径组合拦截或挑战请求;Bot 评分字段需注意套餐门槛。本文按官方文档整理规则条数、后台创建步骤与国家/路径/Bot 示例表达式,不写套餐价格。查询日期 2026-11-02。
依据:Cloudflare 文档 Custom rules、Create a custom rule in the dashboard、Allow traffic from specific countries only、Challenge bad bots、Bot scores。查询日期:2026-11-02(北京时间)。只放 Cloudflare 官网普通链接(
affiliate_later);不写单价与套餐价格。
被扫描打满带宽或登录接口被撞时,先止血见 网站被 CC/DDoS 攻击怎么办;安全组与流量告警见 网站被扫描打满带宽。本文专讲 WAF 自定义规则:怎么在后台按国家、路径、Bot 评分写表达式,以及免费档条数上限。接入橙云与 SSL 见 Cloudflare 免费 CDN 与 SSL。
1. 自定义规则是什么
官方 Overview 写明:自定义规则按表达式匹配进入站点的请求,可执行 Block、Managed Challenge、Skip 等动作。规则按顺序评估;Block 会中止后续规则。账号级自定义规则集需要 Enterprise;站点级各计划都能建。

文档 Availability 表(以页面当前表为准,本文不列价格):
| 计划 | 自定义规则条数(量级) | Regex | 备注 |
|---|---|---|---|
| Free | 5 | 否 | 动作除 Log 外基本可用 |
| Pro | 20 | 否 | 同上 |
| Business | 100 | 是 | 无 |
| Enterprise | 1,000 | 是 | 另含 Log、账号级规则集等 |
条数计入 http_request_firewall_custom 阶段。Free 只有 5 条时,优先护登录、后台、投稿接口,别把整站国家封锁和路径细拆占满。
2. 后台怎么创建一条规则
- 打开 Cloudflare 控制台 → Security rules。
- Create rule → Custom rules(或复制已有规则)。
- 填 Rule name。
- 在 When incoming requests match 用 Field / Operator / Value 搭条件;可用 And / Or;下方 Expression Preview 会生成表达式。
- Then take action 选动作。没有 Log 的计划,可先用 Managed Challenge,在 Security Events 看命中后再改 Block。
- 选 Block 时可配自定义响应(文档写明 Pro 及以上才有该项)。
- Deploy 上线,或先存草稿。

3. 按国家拦截或只放行
用例 Allow traffic from specific countries only 用字段 ip.src.country。示例:只允许美国、墨西哥,其余 Block:
- 规则构建器:Country → is not in →
United States,Mexico→ Block - 表达式:
(not ip.src.country in {"US" "MX"})

落地注意:
- 误伤 CDN 监控、支付回调、海外作者:先 Managed Challenge,确认 Security Events 再 Block。
- 中国内地源站若仍对公网裸奔,地理规则挡不住绕过 CDN 直打源 IP;安全组应收紧到回源段,见 安全组最小开放。
- 「只服务某国读者」和「全站开放但拦扫描国家」是两种产品目标,表达式要反过来写。
4. 按路径保护登录与接口
自定义规则常用 URI 路径字段(文档示例写作 http.request.uri.path)。典型组合:
| 场景 | 思路 | 示例表达式方向(需按站点改) |
|---|---|---|
| WordPress 登录 | 对 /wp-login.php、/xmlrpc.php 加强挑战或限流 | 路径等于或前缀匹配登录页 |
| 管理后台 | 仅允许办公出口国家访问 /wp-admin | 路径前缀 + ip.src.country |
| 公开 API | 低 Bot 分流量放行 /api,浏览器入口从严 | starts_with(..., "/api") 与 Bot 条件组合 |
Challenge bad bots 文档提醒:自定义规则适合路径差异化(/api/ 与 /login/ 不同策略)、自定义分数阈值、以及内置 Bot 设置没有的动作组合。免费档还有 Rate limiting 条数限制,登录接口可与自定义规则分工,见急救文中的 Rate limiting 表。
5. Bot 评分:能写什么、谁能用字段
Bot scores:分数 1–99,越低越像自动化,越高越像真人浏览器。文档注明:细粒度 cf.bot_management.score 面向已开通 Bot Management 的 Enterprise;其他客户更多通过 bot groupings 或安全设置里的 Bot 流量开关使用。
Pro 及以上常见分组(文档表):
| 分组 | 分数范围 |
|---|---|
| Not computed | 0 |
| Automated | 1 |
| Likely automated | 2–29 |
| Likely human | 30–99 |
| Verified bot | 已知良性爬虫等 |

Challenge bad bots 建议:先看安全设置里的 Bot 流量内置项(Definitely automated、Likely automated、Verified bots、Block AI bots 等),它们不占自定义规则条数。只有需要路径条件或自定义阈值时,再写自定义规则。示例方向(需 Enterprise Bot Management 字段):
- Skip 已验证爬虫:
(cf.bot_management.verified_bot)→ Skip - 明确自动化:
(cf.bot_management.score eq 1)→ Block - 疑似自动化:
(cf.bot_management.score gt 1 and cf.bot_management.score lt 30)→ Managed Challenge - 保护浏览器入口但放行 API:低分且非 verified,且路径不以
/api开头 → Block

没有 Bot Management 时:用 Super Bot Fight Mode / Bot Fight 一类内置能力 + 国家/路径自定义规则,不要编造控制台里不存在的 cf.bot_management.score 字段。
6. 推荐落地顺序(个人站 / 小团队)
- 确认 DNS 已代理(橙云),源站不对全网暴露。
- 用掉 1–2 条自定义规则:登录与 XML-RPC 路径 + Managed Challenge。
- 若业务只服务少数国家,再加国家白名单或黑名单(先挑战后封锁)。
- 有 Bot Management 再叠分数规则;否则打开内置 Bot 设置并观察误伤。
- 改规则后看 Security Events 与可用性监控,见 网站可用性监控。
- 境内对公众服务仍须依法 ICP 备案;本文不鼓励以违规跨境组网规避监管。
相关阅读
资料来源(查询日期 2026-11-02)
- https://developers.cloudflare.com/waf/custom-rules/
- https://developers.cloudflare.com/waf/custom-rules/create-dashboard/
- https://developers.cloudflare.com/waf/custom-rules/use-cases/allow-traffic-from-specific-countries/
- https://developers.cloudflare.com/waf/custom-rules/use-cases/challenge-bad-bots/
- https://developers.cloudflare.com/bots/concepts/bot-score/