收录迟迟不动,很多人会先怀疑内容质量、内链或者 sitemap 提交。但把服务器日志翻出来看,经常是另一回事:搜索引擎确实来过,只是每次都被挡回去,或者只抓了一两页就撤了。抓取是收录的前置条件,抓取通道如果长期不顺畅,后面所有关于页面质量的讨论都没有落脚点。
先把“抓不到”分成三类
同样是抓取失败,原因和处理方式完全不同,先分类再动手。
- 明确拒绝型:403、401、DNS 解析失败、连接被重置。通常来自访问控制、WAF 规则或 IP 封禁,属于硬拦截,蜘蛛基本不会反复重试。
- 临时失败型:500、502、503、504、429。服务器过载、后端超时、限速触发都会落到这里,短期可恢复,但持续出现会明显影响抓取频率。
- 正常但慢:返回 200,但首字节时间很长。不会直接算失败,只是每次抓取消耗的预算变多,抓取总量随之下降。
5xx:偶发几次和持续几天是两码事
偶发的 5xx 很常见,搜索引擎也能理解。真正需要注意的是成片、持续、集中在同一批 URL 上的 5xx。这种情况通常意味着后端某类页面在特定条件下出错,比如筛选项过多的列表页、需要实时查询的详情页、依赖外部接口的页面。
处理思路是先定位范围:从日志里按状态码筛选,看 5xx 集中在哪些目录、哪些参数、哪个时间段。如果集中在参数组合复杂的 URL 上,说明爬虫正在探索你的长尾入口,而这些入口本身可能就不该被抓。把它们的产生方式收一收,往往比一味调服务器更有效。
429 与抓取速率:是你在限,还是对方在退
429 的含义是请求过多。它可能来自你自己的限速策略,也可能来自 CDN 或云防护的默认规则。需要确认两点:这个限速是否对搜索引擎 UA 生效,以及限速阈值是不是定得太低。
搜索引擎抓取本身是有节制的,正常站点的抓取速率一般不会高到触发限速。如果日志里频繁出现 429,常见原因是:站点响应太慢导致并发堆积、站内存在大量自动跳转或重复请求、某些 URL 被抓取时触发连锁请求。先解决响应问题,再考虑调整限速。
CDN 和 WAF 是最容易被忽略的一层
很多“抓取异常”其实出在中间层。常见的几种情况:
- UA 黑名单误伤:规则里把包含 bot 字样的请求全部拦掉,顺带拦掉了正常蜘蛛。
- JS 质询:人机验证页面对普通浏览器无感,对不执行 JS 的爬虫就是一道墙。
- 地域限制:站点限定某些地区访问,而搜索引擎的抓取节点可能不在范围内。
- 回源配置错误:CDN 缓存了错误页,或者回源时后端返回 5xx,边缘节点把这个状态透传出去。
排查方法不复杂:用搜索引擎官方给出的验证方式,或者通过反向解析确认来源 IP,逐个节点测试能不能拿到正常的 200 与完整 HTML。
响应时间与抓取预算
抓取预算不是固定配额,而是搜索引擎在给定时间内愿意并且能够从你站点取回的页面数量。响应时间越长,单位时间取回的页面越少;页面体积越大、重定向链越长、需要加载的外部资源越多,单页成本越高。对于页面数量多、更新频繁的站点,这类损耗会直接体现在新页面被发现的速度上。
一条可执行的排查顺序
- 从服务器日志按搜索引擎 UA 筛选,统计状态码分布与趋势。
- 按目录、参数类型拆分,找出失败集中在哪些 URL 形态上。
- 区分是源站问题还是 CDN/WAF 问题,逐层绕过验证。
- 确认 robots.txt 与各类访问控制没有把正常抓取挡掉。
- 针对成片的失败页,判断是修复还是收口,比如加 noindex、改为 404、去掉入口。
- 修复后用日志观察两周,看抓取量与状态码是否回归正常。
修复之后的验证别只盯着收录数
服务器侧的问题解决后,最先变化的是抓取日志,而不是索引量。建议先看三个指标:抓取请求总数是否回升、200 占比是否提高、被抓取的 URL 是否开始覆盖之前失败的目录。索引量的变化通常滞后,用短期波动判断修复是否有效容易误判。
抓取通畅不等于一定被收录,但抓取长期不顺畅,收录基本无从谈起。先把通道打通,再谈页面质量。