记录一下那天晚上的排查过程。上线 WAF 后默认策略对人机验证拦截所有非浏览器请求,Googlebot 拿到的是一段挑战脚本,三天内新页面全部未收录,日志里 403 占九成。

原因不止一个,得分开看。挑战页对蜘蛛同样生效,没有按已验证机器人放行。另一种情况是挑战返回 403 而不是 200,蜘蛛直接判定不可抓取。

另外,静态资源和 HTML 用了同一套规则。

模拟蜘蛛请求看返回

curl -sI -A 'Mozilla/5.0 (compatible; Googlebot/2.1)' https://www.example.com/ | head -3

再往下核对 robots 与放行名单

curl -s https://www.example.com/robots.txt | head -3

末了确认挑战页不再命中

curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/post/1

当时还开着另一个排查窗口,两边日志对照着看才定位到。

同一份数据我导出了两份,一份留底,一份拿来试。

改完先别撤,确认这几项。放行后新文章在两天内被收录,日志里的 403 从九成降到不足百分之一。

提醒一点。人机验证只应作用于可疑请求,搜索引擎的验证方式是按 IP 反查而不是 UA。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189