自定义规则
虽然 Access Control 为您提供粗粒度屏蔽(国家/地区、IP),但自定义规则让您表达精确的策略:"屏蔽来自 ASN 14061 的、user-agent 为空的访客,他们在过去 60 秒内访问 /cart 超过 10 次。"
规则的剖析
规则有四个部分:
- 名称 — 供您自己参考
- 条件 — 一个或多个,使用 AND 组合
- 操作 —
allow、challenge、block - 优先级 — 数字越低胜出。默认 100。
规则在基于评分的管道 之前 进行评估。如果任何规则匹配,则采取其操作,我们跳过评分。
条件
| 字段 | 操作符 | 示例值 |
|---|---|---|
ip |
equals, in CIDR | 203.0.113.0/24 |
country |
equals, in list | RU, [CN,KP,IR] |
asn |
equals, in list | 14061, [16509,14618] |
asn_org |
contains, regex | DigitalOcean |
user_agent |
contains, regex, empty | ^curl/ |
header.<name> |
exists, equals, regex | header.accept-language regex ^$ |
path |
equals, prefix, regex | /cart, prefix /account |
rate.requests |
gt within window | > 10 within 60s |
score |
gt, lt | > 50 |
正则表达式用 ^ 和 $ 锚定。使用 regex101.com 进行测试。
示例
屏蔽结账邻近路径上的所有空 user-agent:
| 字段 | Op | 值 |
|---|---|---|
user_agent |
empty | — |
path |
prefix | /checkout |
操作:block。优先级:50。
质询任何从已知数据中心 ASN 快速访问 /cart 的人:
| 字段 | Op | 值 |
|---|---|---|
asn |
in list | [16509, 14618, 14061, 8075] |
path |
prefix | /cart |
rate.requests |
gt within | 5 within 30s |
操作:challenge。优先级:30。
即使您的监控服务看起来可疑也允许它:
| 字段 | Op | 值 |
|---|---|---|
header.x-monitor-key |
equals | <您的共享密钥> |
操作:allow。优先级:1。
限制
| 套餐 | 每店规则 | 速率窗口存储 |
|---|---|---|
| Scale | 25 条规则 | 60s 滑动窗口 |
| Max | 100 条规则 | 5min 滑动窗口 |
Free/Grow 没有自定义规则。
测试规则
将规则保存为操作 monitor(无强制执行,仅记录匹配)24 小时。检查 访客分析 — 按 reason = rule:<您的规则名称> 过滤。如果匹配看起来正确,将操作切换到 block 或 challenge。
可用于
Scale ($49/月) 和 Max ($99/月)。