先把当时的情况摆出来。站点上周接了新的 CDN,回源日志里 Googlebot 的请求全是 403,同时间的浏览器访问返回 200,GSC 抓取量三天掉了七成,把防火墙整个关掉现象也没变。

把日志和配置对完,能解释这个现象的基本就这几处。CDN 默认开了托管规则,命中疑似爬虫后直接返回 403。少数情况下是回源请求里 UA 被改写成 CDN 自己的标识,源站 WAF 不认。

还有一种情况,源站 Nginx 的 deny 规则按网段写了整段 IDC,蜘蛛 IP 正好落在里面。另外,HTTPS 回源时 SNI 与证书域名不匹配,握手阶段就被拒绝。

第一件事是确认 403 是边缘返回还是源站返回

curl -sI -A 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' https://www.example.com/

再看回源日志里的 UA 和状态码

awk '$9==403 {print $1,$12,$13}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head

然后对已核实的蜘蛛段放行并透传真实 UA

set_real_ip_from 66.249.64.0/19;
real_ip_header X-Forwarded-For;

末了把源站 deny 段收窄到真实恶意网段

deny 45.155.205.0/24;

怎么算真的好了,看的是同一批现象。同样的 UA 请求返回 200,回源日志里 UA 不再被改写,GSC 抓取统计两天后回到原来的水平。

容易忽略的是,放行要同时看官方 IP 段和 rDNS 两个条件,只信 UA 等于给伪造者开门。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189