网站收录

状态码、超时、限流:服务器响应不好,收录也会跟着卡住

蜘蛛每天第一件事是发请求,请求走不顺,后面的质量判断根本轮不到。本文从状态码、跳转链、软 404、5xx 重试、限流与 WAF 拦截等角度,梳理服务器响应如何影响抓取节奏与收录结果,并附一份可照着排查的清单。

网站收录

状态码、超时、限流:服务器响应不好,收录也会跟着卡住

很多站点把收录问题都归结到内容上,但爬虫每天做的第一件事其实是发请求。请求这一步没走顺,后面的质量判断根本轮不到。服务器返回什么、响应多快、有没有被拦住,都会写进蜘蛛对这个站点的印象里。

抓取失败和收录被拒,是两件事

抓取失败,意味着蜘蛛这次没拿到页面,过一阵可能还会再来;收录被拒,则是页面已经拿到、也看完了,最后决定不留。状态码层面的问题大多属于前者。它的麻烦不在于一次失败,而在于会拉长从发现到收录的链路,还会影响站点能分到多少抓取额度。

2xx:正常返回里也有坑

  • 200:最常见,也是唯一能让页面进入后续判断的响应。
  • 204:表示成功但没有内容。用在接口上没问题,用在页面上,蜘蛛拿到的就是一片空白。
  • 206:分段返回,视频、大文件下载常见,只要分片逻辑正确,一般不影响识别。

比这些更麻烦的是软 404:服务器老实返回 200,页面里却只有一句“内容不存在”或者干脆是空壳模板。这种页面技术上抓得到、也可能被收录,但进去之后没有任何可用的正文,属于典型的占着索引位置不出活。

3xx:跳转链越长,损耗越大

301 和 302 蜘蛛都能跟,区别在于前者表示地址永久变更,后者是临时的。多跳跳转才是最该清理的:A 跳 B、B 跳 C、C 跳 D,每多一跳就多一次请求,也更容易在中途被放弃或跟丢。常见的坏味道包括 HTTP 跳 HTTPS 之后又跳 www、旧栏目 301 到新栏目但新栏目自己又 302 到别处。能一跳到位就别拖成三跳,循环跳转更要优先修掉。

4xx:404 和 410 表达的态度不同

404 是“暂时找不到”,410 是“已经明确删除”。对于确定不再提供的页面,410 传递的信号更干脆,蜘蛛放弃得更快。但要注意区分:内容确实下架了,就老老实实返回 404 或 410;内容还在,只是被隐藏或需要登录,返回 404 只会让页面从索引里白白消失。还有一种情况是页面被误判为不存在,通常是路由或缓存配置写错,需要对着日志一条条核。

5xx 与超时:蜘蛛会先降低期待

偶尔一次 500、502、503,蜘蛛通常会稍后重试,不用太紧张。真正的问题在于持续性的 5xx:如果多个页面反复返回错误,蜘蛛会认为这个站点不稳定,主动降低访问频率,等它想再来时,新内容可能已经排队很久了。

  • 计划内维护,用 503 加 Retry-After 头,明确告诉蜘蛛多久后再来,比直接断开连接好。
  • 响应时间尽量控制在几百毫秒级,个别重页面也不要拖到十几秒,蜘蛛的等待是有上限的。
  • 页面体积、第三方脚本、未优化的数据库查询,都会体现在响应时间上,最终体现在抓取节奏上。

限流与 WAF:别把蜘蛛和攻击流量一起拦

为了扛住压力,很多站点会加限流、频率控制和 WAF。规则写得太粗,蜘蛛会被一起挡在门外,表现为访问量骤降、返回 429 或直接连接被拒。几个可以检查的点:

  1. 按 UA 一刀切封禁,容易误伤正常蜘蛛,也容易被伪造 UA 绕过,意义有限。
  2. 限流阈值要给出足够的余量,让正常抓取不被触发,而不是等触发了再放白名单。
  3. CDN 和源站的规则要一起核对,有时源站放行、边缘节点照样拦。
  4. 如果确认是压力太大,优先做降频而不是封 IP,让蜘蛛慢慢来,比彻底不来好。

一份可以照着走的自查清单

  • 抽查一批已收录页面,确认返回码分布是否正常,有没有大量 200 的空壳页。
  • 清理跳转链,确认首页、栏目页、详情页各自一跳到位。
  • 找出所有返回 5xx 频次较高的 URL,逐个定位是应用报错还是资源问题。
  • 核对 robots.txt、限流规则、WAF 白名单是否互相打架。
  • 对比抓取日志里的访问量和响应时间,看是否有同步下滑的时间段。
服务器层面的稳定,不会直接换来收录,但它决定了蜘蛛愿不愿意常来、能不能顺利把页面读走。内容做得再好,门一直关着,也没有机会被看到。