搜索抓取

证书过期、DNS 抖动与连接中断:蜘蛛抓取失败的隐性原因

抓取失败常常不是 robots 或 404,而是证书、DNS、连接层的问题。本文从 TLS 握手、解析抖动、连接重置入手,说明这些隐性故障如何影响蜘蛛的抓取与 URL 发现,并给出可执行的排查顺序与日常维护习惯。

搜索抓取

证书过期、DNS 抖动与连接中断:蜘蛛抓取失败的隐性原因

蜘蛛抓取失败,很多时候并不是因为 robots.txt 挡住了,也不是因为页面返回了 4xx。证书配置、DNS 解析、连接中断这类问题,往往发生在蜘蛛读到 HTML 之前,日志上可能只留下一行超时。它们不容易被察觉,却会持续消耗 URL 的发现与抓取机会。

抓取失败不一定是“被拒绝”

服务器返回 5xx 或 429,是在明确表达态度;而连接层的问题更像“电话没接上”。蜘蛛按计划发起请求,DNS 没解析出来、TLS 握手失败、连接被中途重置,抓取就直接失败。站长在后台看到的往往只是笼统的“抓取异常”,没有页面级线索,排查起来容易绕远路。

证书与协议层容易踩的坑

  • 证书过期或证书链不完整:只补了中间证书却漏掉根链,浏览器可能宽容,蜘蛛不一定。
  • 混合内容:页面主体已经是 https,但内部跳转或资源链接还留着 http,抓取路径多一次跳转。
  • 强制跳转形成闭环:http 跳 https,某个子域又跳回 http,蜘蛛在中间来回打转。
  • 只看系统默认配置:服务器开放的协议版本或加密套件过窄,部分客户端握手直接失败。

DNS 与解析层面的抖动

更换解析服务商、修改 A 记录、CNAME 指向写错,都会造成短时间不可达。对蜘蛛来说,这段时间的抓取就是失败。如果站点有 www、m、static 等多个子域,解析不一致会让一部分 URL 长期抓不到。CDN 回源配置错误也类似:蜘蛛连上了边缘节点,回源却拿不到内容。

连接中断留下的痕迹

这类问题在日志里常见的表现是:连接建立成功但响应为空、读取超时、连接被对端重置。有些请求在应用层访问日志里甚至连一条记录都没有,因为请求还没被接收。

出问题时的排查顺序

  1. 用命令行工具检查证书有效期与跳转链,看能否在一次跳转内到达 https 版本。
  2. 检查多地 DNS 解析结果是否一致,TTL 是否过短导致解析频繁变化。
  3. 除了 4xx/5xx,还要关注连接重置、超时比例等指标。
  4. 把蜘蛛日志里的抓取失败时间点,与运维变更、发布、扩容时间做对照。
  5. 确认是否有安全策略或 WAF 对搜索引擎 UA、特定 IP 段误拦。

URL 发现会被间接拖慢

Sitemap 提交成功、内链结构也正常,但如果蜘蛛每次来访都握手失败,这些 URL 就等于没有被真正发现。抓取频次是动态调整的:一段时间内失败率升高,蜘蛛通常会降低对该站点的抓取频率,恢复需要时间。换句话说,连接层的小问题会被放大成 URL 覆盖面的问题。

日常维护的几个习惯

  • 证书到期前提前续期,续期后把跳转链完整跑一遍。
  • 解析变更尽量避开抓取高峰,变更后连续观察几天的抓取日志。
  • 保持 www 与非 www、http 与 https 只有一个规范版本,避免多版本长期并存。
  • 频率限制与安全策略给搜索引擎留合理通道,不要一刀切。
  • 新上线的域名或子域,先确认解析、证书、跳转都正常,再放进 Sitemap。

抓取是整条链路最前面的一环。证书、DNS、连接这些看不见的部分通了,后面的 Sitemap、内链、抓取预算才有意义。与其反复调整页面细节,不如先把这条通道保持稳定。