安全防护日志
GET/api/me/waf/logs
WAF / CC 的拦截记录,可用于告警、取证与误拦排查。
参数
| 参数 | 说明 |
|---|---|
page page_size | 分页 |
domain | 按域名过滤 |
start end | 时间范围(毫秒时间戳) |
响应
| 字段 | 说明 |
|---|---|
items[] | 日志条目 |
total page page_size | 分页信息 |
by_domain | 按域名的聚合计数 |
by_status | 按响应状态码的聚合计数 |
domains | 该时段出现过的域名列表 |
degraded | 日志后端是否降级 |
单条日志的字段:
| 字段 | 说明 |
|---|---|
time | 发生时间 |
domain | 被访问的域名 |
ip | 来源 IP |
method | HTTP 方法 |
uri full_uri | 路径 / 完整 URI |
status | 返回给攻击者的状态码 |
reason | 拦截原因 |
ua referer | User-Agent / Referer |
protocol scheme | 协议信息 |
node | 执行拦截的边缘节点 |
ja3 | TLS 指纹 |
写告警时请检查 degraded
degraded 为 true 表示日志后端处于降级状态,此时 total 会偏小。直接拿它判断「攻击已经结束」会误判 —— 正确做法是把 degraded=true 当作「数据不可信」,保持上一次的告警状态而不是解除。d = call("GET", "/api/me/waf/logs", params={"page_size": 1})
if d["degraded"]:
logging.warning("防护日志降级中, 本轮不做判定") # 不要在这里解除告警
elif d["total"] > THRESHOLD:
alert(...)
误拦排查
用户反馈「打不开」时,按域名 + 时间取一段日志,看 reason 与 uri。确认是误拦后,可在站点的 security / waf_overrides 里调整,见站点可写字段。