先看现象。切到新 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 走一遍全站。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
