[ PROMPT_NODE_24412 ]
Waf API 参考
[ SKILL_DOCUMENTATION ]
# API 参考
## SDK 设置
typescript
import Cloudflare from 'cloudflare';
const client = new Cloudflare({
apiToken: process.env.CF_API_TOKEN,
});
## 核心方法
typescript
// 列出规则集
await client.rulesets.list({ zone_id: 'zone_id', phase: 'http_request_firewall_managed' });
// 获取规则集
await client.rulesets.get({ zone_id: 'zone_id', ruleset_id: 'ruleset_id' });
// 创建规则集
await client.rulesets.create({
zone_id: 'zone_id',
kind: 'zone',
phase: 'http_request_firewall_custom',
name: 'Custom WAF Rules',
rules: [{ action: 'block', expression: 'cf.waf.score gt 40', enabled: true }],
});
// 更新规则集 (包含规则 ID 以保留现有规则,省略 ID 则为新规则)
await client.rulesets.update({
zone_id: 'zone_id',
ruleset_id: 'ruleset_id',
rules: [
{ id: 'rule_id', action: 'block', expression: 'cf.waf.score gt 40', enabled: true },
{ action: 'challenge', expression: 'http.request.uri.path contains "/admin"', enabled: true },
],
});
// 删除规则集
await client.rulesets.delete({ zone_id: 'zone_id', ruleset_id: 'ruleset_id' });
## 动作与阶段
### 各阶段动作
| 动作 | 自定义 | 托管 | 速率限制 | 描述 |
|--------|--------|---------|------------|-------------|
| `block` | ✅ | ❌ | ✅ | 拦截请求并返回 403 |
| `challenge` | ✅ | ❌ | ✅ | 显示验证码挑战 |
| `js_challenge` | ✅ | ❌ | ✅ | 基于 JS 的挑战 |
| `managed_challenge` | ✅ | ❌ | ✅ | 智能挑战 (推荐) |
| `log` | ✅ | ❌ | ✅ | 仅记录,不拦截 |
| `skip` | ✅ | ❌ | ❌ | 跳过规则评估 |
| `execute` | ❌ | ✅ | ❌ | 部署托管规则集 |
### 阶段 (执行顺序)
1. `http_request_firewall_custom` - 自定义规则 (第一道防线)
2. `http_request_firewall_managed` - 托管规则集 (预配置保护)
3. `http_ratelimit` - 速率限制 (请求限流)
4. `http_request_sbfm` - 超级机器人防御模式 (仅限 Pro+)
## 表达式语法
### 字段
typescript
// 请求属性
http.request.method // GET, POST, 等
http.request.uri.path // /api/users
http.host // example.com
// IP 与地理位置
ip.src // 192.0.2.1
ip.geoip.country // US, GB, 等
ip.geoip.continent // NA, EU, 等
// 攻击检测
cf.waf.score // 0-100 攻击分数
cf.waf.score.sqli // SQL 注入分数
cf.waf.score.xss // XSS 分数
// 请求头与 Cookie
http.request.headers["aut"