安全组给站点开了压缩体检测,bingbot 请求头里带 Accept-Encoding: br,gzip,被规则判成异常编码,直接回 403 挑战页。抓取统计里 403 从零涨到每天九百条。

一开始怀疑是「bingbot 官方 IP 段没进白名单,走的是通用拦截策略」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。自定义规则把 Accept-Encoding 含 br 的请求当作扫描器特征。少数情况下是挑战页用 403 返回而不是 200 加脚本,蜘蛛不会执行验证。

不容易想到的是,CDN 层开了压缩探测,回源请求头被改写后又命中第二条规则。

上来先按蜘蛛请求头复现一次

curl -sI -A 'Mozilla/5.0 (compatible; bingbot/2.0)' -H 'Accept-Encoding: br,gzip' https://www.lu0.cn/1.html

接着在 WAF 日志里筛出命中的规则号

grep ' 403 ' /var/log/waf/access.log | awk '{print $NF}' | sort | uniq -c | sort -nr | head

然后把搜索引擎 IP 段加白并放行 br 压缩

盯一天 403 的来源分布

awk '$9==403 {print $1}' access.log | sort | uniq -c | sort -nr | head

别只看报错消失,验证要多做一步。403 从每天九百条降到个位数,必应抓取量三天回到两千条以上,挑战页的访问日志彻底归零。

容易忽略的是,白名单别只写 UA,一定要按官方公布的 IP 段匹配,UA 谁都能伪造,只认 UA 等于给扫描器留了后门。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189