蜘蛛抓取失敗,很多时候並不是因為 robots.txt 挡住了,也不是因為頁面返回了 4xx。證书配置、DNS 解析、连接中断這類問题,往往發生在蜘蛛讀到 HTML 之前,日誌上可能只留下一行超时。它們不容易被察觉,却會持續消耗 URL 的發現與抓取机會。
抓取失敗不一定是“被拒绝”
服務器返回 5xx 或 429,是在明确表達態度;而连接层的問题更像“电话没接上”。蜘蛛按計划發起請求,DNS 没解析出来、TLS 握手失敗、连接被中途重置,抓取就直接失敗。站長在後台看到的往往只是笼统的“抓取異常”,没有頁面級线索,排查起来容易绕遠路。
證书與协议层容易踩的坑
- 證书過期或證书鏈不完整:只补了中間證书却漏掉根鏈,浏览器可能宽容,蜘蛛不一定。
- 混合内容:頁面主体已经是 https,但内部跳轉或资源連結還留着 http,抓取路径多一次跳轉。
- 强制跳轉形成閉环:http 跳 https,某個子域又跳回 http,蜘蛛在中間来回打轉。
- 只看系統預設配置:服務器開放的协议版本或加密套件過窄,部分客戶端握手直接失敗。
DNS 與解析层面的抖動
更換解析服務商、修改 A 记錄、CNAME 指向寫错,都會造成短時間不可達。對蜘蛛来说,這段時間的抓取就是失敗。如果站点有 www、m、static 等多個子域,解析不一致會让一部分 URL 長期抓不到。CDN 回源配置错誤也類似:蜘蛛连上了邊缘节点,回源却拿不到内容。
连接中断留下的痕迹
這類問题在日誌里常见的表現是:连接建立成功但响應為空、讀取超时、连接被對端重置。有些請求在應用层訪問日誌里甚至连一條记錄都没有,因為請求還没被接收。
出問题时的排查顺序
- 用命令行工具检查證书有效期與跳轉鏈,看能否在一次跳轉内到達 https 版本。
- 检查多地 DNS 解析结果是否一致,TTL 是否過短導致解析频繁變化。
- 除了 4xx/5xx,還要關注连接重置、超时比例等指标。
- 把蜘蛛日誌里的抓取失敗時間点,與运维變更、發布、扩容時間做對照。
- 確認是否有安全策略或 WAF 對搜尋引擎 UA、特定 IP 段誤拦。
URL 發現會被間接拖慢
Sitemap 提交成功、内鏈结构也正常,但如果蜘蛛每次来訪都握手失敗,這些 URL 就等于没有被真正發現。抓取频次是動態調整的:一段時間内失敗率升高,蜘蛛通常會降低對该站点的抓取频率,恢复需要時間。換句话说,连接层的小問题會被放大成 URL 覆盖面的問题。
日常维護的几個习惯
- 證书到期前提前續期,續期後把跳轉鏈完整跑一遍。
- 解析變更尽量避開抓取高峰,變更後连續观察几天的抓取日誌。
- 保持 www 與非 www、http 與 https 只有一個規范版本,避免多版本長期並存。
- 频率限制與安全策略给搜尋引擎留合理通道,不要一刀切。
- 新上线的域名或子域,先確認解析、證书、跳轉都正常,再放進 Sitemap。
抓取是整條鏈路最前面的一环。證书、DNS、连接這些看不见的部分通了,後面的 Sitemap、内鏈、抓取预算才有意义。與其反复調整頁面细节,不如先把這條通道保持稳定。