搜索抓取

服务器抖动与蜘蛛重试:5xx、连接中断和 Retry-After 对抓取路径的影响

蜘蛛抓取不是一次请求就结束。当服务器返回 5xx、连接被重置或响应不完整时,蜘蛛会根据错误类型决定重试、降频还是暂时放弃。本文讨论这些情况下抓取路径如何续接,以及运营侧该排查哪些服务器与日志信号。

搜索抓取

服务器抖动与蜘蛛重试:5xx、连接中断和 Retry-After 对抓取路径的影响

蜘蛛抓取是一个按 URL 排队的过程。入口页、列表页、内链和 Sitemap 提供待抓队列,蜘蛛逐个请求。如果某个 URL 请求失败,影响的不只是这个页面,还可能影响它后面的链接发现。

5xx 和 4xx 对蜘蛛不是一回事

4xx 通常表示 URL 本身不可用,比如 404、410。蜘蛛会较快把这类 URL 从待抓队列里降低优先级,Sitemap 里的 404 也会被逐渐忽略。5xx 不一样,它表示服务器临时或持续故障,蜘蛛通常不会立刻认定页面消失,而是保持观察,可能稍后重试。

常见的 5xx 包括 500 内部错误、502 网关错误、503 服务不可用、504 网关超时。对蜘蛛来说,这些都可能意味着“现在抓不到,但以后可能恢复”。如果站点大面积返回 5xx,蜘蛛会降低对整站的抓取频率,抓取路径会变窄。

503 与 Retry-After 的配合

503 是蜘蛛比较熟悉的临时不可用状态。如果服务器同时返回 Retry-After 头,告诉蜘蛛多久之后再来,蜘蛛会把这个信号纳入重试计划。没有 Retry-After 时,蜘蛛也会自行退避,但节奏由搜索引擎决定,站点控制力更弱。

注意,不要把 503 当成长期屏蔽手段。长期返回 503 可能让蜘蛛减少抓取,甚至影响已收录 URL 的重新访问。维护窗口短、可预期时用 503 加 Retry-After 相对合适;长期不可用应考虑其他方案。

连接中断与响应不完整

除了状态码,TCP 连接被重置、TLS 握手失败、响应头收到一半断开、HTML 不完整,也会被蜘蛛视为抓取失败。这类问题不会在 HTTP 状态码里留下明确记录,但在服务器日志或抓取统计里能看到异常。

  • 连接重置:常见于防火墙、负载均衡超时、后端进程崩溃。
  • 响应不完整:常见于 HTML 体积过大但连接提前关闭,或动态输出中途报错。
  • TLS 错误:证书链不完整、协议版本不匹配,会让整个站点的抓取路径从入口就断掉。

这类错误如果集中在某个 IP、某个 CDN 节点或某个时间段,运营侧应先查服务器和网络层,而不是改内链或 Sitemap。

重试与抓取路径的关系

蜘蛛重试某个 URL 时,不等于它会立刻再次抓取。重试通常有间隔和次数限制。期间,这个 URL 后面的内链可能没有被发现,列表页翻页也可能停在失败的那一页。

如果失败的是列表页或分类页,影响会放大。因为这类页面承担发现下一层 URL 的作用。建议:

  1. 核心入口页保持稳定,避免高峰期返回 5xx。
  2. 分页链接尽量用可抓取的 a 标签,减少对 JS 的依赖。
  3. Sitemap 保留稳定 URL,不要频繁加入临时故障 URL。
  4. 服务器日志按状态码和响应时间分组,观察 5xx 是否集中在特定路径。

蜘蛛降频后怎么恢复

如果蜘蛛已经因为 5xx 降频,恢复需要时间。先修好服务器,确保连续一段时间返回 200。然后观察日志里蜘蛛请求是否逐步恢复。可以检查:

  • 入口页和 Sitemap 是否可正常访问。
  • 服务器响应时间是否稳定,不要再出现大量超时。
  • 重要页面是否仍然在内链中可达。
  • Sitemap 是否只包含 200 状态、可正常返回的 URL。

不要为了“催”蜘蛛而频繁提交或制造大量新 URL。服务器不稳定时,增加 URL 只会让抓取队列更拥挤。

运营侧的最小检查清单

遇到抓取路径变窄,可以按下面顺序排查:

  1. 看服务器日志中 5xx、499、连接重置的比例。
  2. 确认 CDN 和 WAF 没有误拦蜘蛛,尤其是 403、429。
  3. 检查核心入口页是否在合理时间内返回完整 HTML。
  4. 确认列表页、分类页的分页链接没有断。
  5. 对照 Sitemap,确认没有大量 404 或 5xx URL。
  6. 观察一周抓取量变化,不要只看单日波动。

服务器稳定性是抓取路径的地基。状态码、连接质量和响应时间,都会影响蜘蛛能不能顺着内链继续走。把这些基础项守住,比事后补救更有效。

蜘蛛不会因为一次失败就永远放弃,但持续不稳定会让它降低访问频率。抓取路径的恢复,通常从服务器恢复稳定开始。