先分清是整体下滑还是局部下滑
抓取量下降时,第一件事不是改 robots.txt,也不是马上调整 URL 结构,而是把最近一段时间的访问数据按目录、按页面模板拆开看。是整站所有 URL 都不再被访问,还是只有某个栏目、某类模板生成的页面没动静?前者通常指向服务器或站点级配置,后者更可能是模板、内链或页面级指令的问题。方向不同,排查顺序完全不同。
第一层:服务器与网络是否可达
蜘蛛访问不到,后面所有环节都无从谈起。这一层要确认的是:
- DNS 是否正常解析,有没有换过解析记录后未生效;
- TLS 证书是否过期,过期后抓取会直接中断;
- 防火墙或安全策略是否误封了大量请求,尤其是来自同一网段的访问;
- 源站或 CDN 是否在特定时间段集中返回 5xx。
这一层的问题往往表现为整站突然安静,而不是某个栏目消失。
第二层:robots.txt 与全站级响应头
robots.txt 被误改、被缓存,或本身返回 5xx,都会让抓取节奏出现异常。检查时重点看三件事:Disallow 规则是否被动过;是否误用了通配符把整站挡掉;文件本身是否稳定返回 200。此外,别忘了检查通过响应头下发的 X-Robots-Tag,一个配置错误的模板可能让整批页面带上 noindex 类指令。
第三层:响应码与重定向
服务器不稳定时,同一批 URL 可能在 200 和 503 之间反复。遇到持续失败,蜘蛛会主动降低来访频率,这是自我保护,不必理解成惩罚。需要关注:
- 5xx 与超时的比例是否在上升;
- 重定向链是否越拉越长,一次跳转变成了三跳;
- 是否出现了大批软 404 —— 页面返回 200,内容却是“没有找到”。
第四层:URL 发现入口是否还通
抓取量的变化,很多时候不是抓取被挡住,而是新 URL 不再被发现。按入口逐个确认:
- Sitemap 能否正常访问,里面是否是当前有效的 URL,lastmod 有没有跟着更新;
- 列表页、栏目页的内链是否还指向有效地址,有没有因为改版被替换成 JS 生成的空链接;
- 分页是否被截断,翻到第二页之后就没有下一跳;
- 如果有主动推送或更新订阅,接口是否还在正常返回。
第五层:页面级信号
到了单页层,问题通常更集中:canonical 指向了别的地址、页面被 noindex、模板报错输出空白 HTML、JS 渲染失败导致正文和链接都为空。这几类问题不会让整站抓取量骤降,但会让某个栏目长期处于有访问、无进展的状态。
第六层:内容与更新节奏
如果全站几个月没有新增内容,现有页面的内容也没有变化,重访频率自然回落,这属于正常现象,不必当成故障处理。反之,如果内容在稳定更新但蜘蛛迟迟不来,就要回到前五层继续核对。
排查时值得记录的几项数据
- 改动前后同一时间窗口的抓取次数,作为对照基线;
- 各响应码的占比变化;
- Sitemap 中 URL 数量与实际被抓取 URL 数量的差距;
- 每次配置改动的时间点,方便回溯是哪一步引入了变化。
抓取量波动本身不是问题,无法解释的波动才是。把每次改动和对应数据记录下来,比事后猜测配置出了什么问题要可靠得多。
整体思路是:从外到内、从站点级到页面级逐层确认,每确认一层再往下走。顺序对了,绝大多数抓取异常都能定位到一个具体环节,而不是停留在“蜘蛛不来了”这种无从下手的判断上。