先看现象。切到新 CDN 第二天收录归零,回源日志里每条请求都是 200,看起来一切正常,蜘蛛却不再来。

真正麻烦的地方在于,几个原因的现象几乎一样。边缘节点对爬虫做了脚本挑战,蜘蛛拿不到内容。另一种情况是缓存键包含 UA,蜘蛛每次都命中空缓存。

还有一种情况,节点返回的 robots 是缓存的旧版本。

动手时先用蜘蛛 UA 请求看响应

curl -A 'Googlebot/2.1' -sI https://www.example.com/

然后检查 robots 是否为最新

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

随后看是否命中挑战页

curl -s https://www.example.com/ | grep -i 'cf-mitigated'

等前面都确认过,再确认内容长度正常

curl -A 'Googlebot/2.1' -s https://www.example.com/ | wc -c

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

白天有业务在跑,能验证的部分都压到了晚上做。

恢复的判定其实很直接。蜘蛛 UA 请求返回 200 且内容完整,robots 为最新版本,收录三天内开始回流。

容易忽略的是,新 CDN 的默认安全策略经常连搜索引擎一起挡,上线前用蜘蛛 UA 走一遍全站。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189