搜尋抓取

證书過期、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、内鏈、抓取预算才有意义。與其反复調整頁面细节,不如先把這條通道保持稳定。