聊收录的时候,大家习惯从内容质量、内链、站点地图这些地方找原因,但收录链条的第一环其实是服务器响应:抓取程序发出请求,你的服务器得先稳定地把页面完整交出去。这一步不顺畅,后面谈索引、谈排序都没有意义。
抓取失败和“抓到了没收录”是两件事
很多人把这两者混着看。抓取失败指的是请求根本没拿到一份可用的 HTML,比如连接超时、返回 5xx、被防火墙拦掉;而“抓到了没收录”是服务器已经完整返回了页面,抓取程序看完之后决定先不进索引。前者是通道问题,后者是判断问题,排查方向完全不同。如果日志里大量请求的状态码不是 200,就先别急着改内容。
几种常见的服务器侧拦截
响应太慢甚至超时
抓取程序对每个请求都有等待上限。页面要跑完一堆同步接口、数据库查询慢、首屏资源全部阻塞,都会把响应时间拉长。偶发一次超时问题不大,但同一批 URL 反复超时,抓取程序会降低对整站的访问频率,结果是新页面被发现得更慢。
间歇性 5xx
应用偶发报错、后端服务重启、负载高时的 502 或 503,用户侧看起来只是“网站偶尔打不开”,但抓取程序正好撞上那几次,就会记为失败。它不会立刻放弃,可反复失败会削弱对这批 URL 的信心。
429 与频率限制
有些站点在 Nginx、CDN 或云防护里配了速率限制,本意是防攻击,但抓取程序短时间内请求多个 URL 时也会被算进去。表现是返回 429 甚至 403,日志里能看到同一来源的大批请求被拒。
WAF、CDN 与“人机校验”误拦
这是最隐蔽的一类:真实用户访问一切正常,抓取程序却拿到验证码页、跳转页或一段空内容。原因可能是 UA 规则、Cookie 校验、脚本挑战。此时状态码甚至还是 200,但正文里没有实际内容,这种“看起来成功”的失败最难发现。
怎么确认问题出在服务器这一侧
- 按状态码统计日志:非 200 的比例、集中在哪些路径、集中在哪个时间段。
- 区分访问来源:把抓取程序所在网段的请求和普通用户流量分开看。
- 对比同一 URL 的多次抓取记录:是稳定失败,还是偶发失败。
- 看抓取统计里的响应时间和主机状态,如果整站平均响应时间偏长,先解决性能。
- 如果非 200 的响应都带着验证页特征,检查防护规则是否放行了正规抓取来源。
处理顺序建议
- 先修稳定报错。持续返回 5xx 的接口优先处理,别让它继续消耗抓取机会。
- 再做性能优化。加缓存、减少同步请求、把重查询挪到后台,把响应时间压下来。
- 然后放开误拦。确认抓取来源的放行规则,别只做 UA 简单匹配,容易被伪装绕过。
- 最后才谈提交与内链。通道顺畅之后再补站点地图和内链入口,效率才高。
收录问题不总是内容问题。先确认服务器有没有把页面完整交出去,再往下游的索引环节找原因。
另外提醒一点:修完服务器问题不会立刻看到收录变化,抓取频率和索引更新都有自己的节奏。用日志和抓取统计观察请求成功率的趋势,比盯着某一天的收录数字更可靠。