这个坑值得记一笔。误写的 Disallow 撤回之后,第一天日志里蜘蛛反而更少了,第二天只来了几十条,团队怀疑规则没生效,又差点把整个文件改一遍。
刚开始盯着「解封前站点已积累大量 404,恢复抓取时先撞上错误页」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。解封后蜘蛛要重新排队,已有页面按旧优先级慢慢恢复;缓存和 CDN 各存了一份旧文件,不同节点读到的内容不一致;抓取统计要延后一两天才更新,实时日志才是准的。
第一件事是逐节点确认 robots 返回的内容一致
for ip in 1.1.1.1 2.2.2.2; do curl -s -H "Host: www.example.com" http://$ip/robots.txt | md5sum; done
再往下按天统计蜘蛛请求量
grep -c 'Googlebot' access.log
接着确认错误页比例没超过阈值
awk -F'"' '$2 ~ /Googlebot/ {print $3}' access.log | sort | uniq -c
剩下的就是用抓取测试确认页面可访问
curl -s -o /dev/null -w '%{http_code}\n' -A 'Googlebot' https://www.example.com/a/
怎么算真的好了,看的是同一批现象。三天后单日抓取量回到封禁前的八成以上,4xx 占比低于一成,各节点返回的 robots 内容哈希完全一致。
补一句。解封后的前两天数字难看是正常的,这时候再改一遍规则等于重启排队,先把缓存统一再说。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
