记录一下那天晚上的排查过程。Nginx 日志按 UA 统计,Googlebot 一天两万次请求,可 GSC 里的抓取数只有三千,把日志里的 IP 逐个反查,大多落在 47.98.x.x 这类云主机段,站点 CDN 流量费用当月翻了一倍。
刚开始盯着「WAF 的爬虫白名单只校验了 UA,没有校验来源 IP 段」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。UA 是最容易伪造的字段,脚本改一行 User-Agent 就能冒充。也可能是日志里没有记录反解域名,只按字符串统计必然被带偏。
少数情况下是CDN 回源时改写了真实 IP,源站拿到的全是边缘节点地址。
上来先按 UA 取样本 IP 再做反解
awk '$0~/Googlebot/{print $1}' access.log | sort -u | head -20 | xargs -I{} host {}
然后比对官方公布的网段列表
curl -s https://developers.google.com/static/search/apis/ipranges/googlebot.json | grep -o '"[0-9./]*"' | head
随后在 Nginx 里记录真实客户端地址
log_format main '$remote_addr $http_x_forwarded_for "$http_user_agent"';
只放行 rDNS 落在 googlebot.com 的请求
set_real_ip_from 66.249.64.0/19;
real_ip_header X-Forwarded-For;
怎么算真的好了,看的是同一批现象。日志里冒充 Googlebot 的请求集中到几个云主机段被封掉,真实抓取数与 GSC 统计基本对上,回源带宽回落三成。
容易忽略的是,只认 UA 的放行规则等于公开邀请伪造,反解域名和官方网段两个条件要同时满足才可信。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
