搜尋抓取

搜尋蜘蛛抓取:HTTPS 握手與證书鏈異常造成的入口不可達排查

抓取入口排查中最容易被跳過的一层是 HTTPS 握手。證书鏈不完整、SNI 與證书不匹配、协议與套件协商失敗,都會让蜘蛛在建立连接阶段就断開,日誌里甚至看不到請求行。本文整理這類異常的表現、可执行的排查顺序與核對清單,並說明它與 URL 發現、抓取路径的關系。

搜尋抓取

搜尋蜘蛛抓取:HTTPS 握手與證书鏈異常造成的入口不可達排查

排查搜尋蜘蛛抓取入口时,多數人先看 robots.txt、Sitemap 和内鏈,HTTPS 握手這一层往往被跳過。實际情况是:只要 TLS 握手失敗,後面的 robots、頁面内容、内鏈都不存在,蜘蛛看到的就是“连不上”。這類問题不报错、不留痕,只在抓取记錄里表現為可達率下降。

握手失敗在抓取记錄里的表現

  • 抓取频次整体下降,但没有對應的 4xx 或 5xx 记錄可供對照。
  • 服務器訪問日誌里缺少對應 UA 的請求行,只有连接被中断的痕迹。
  • 部分 IP 段可抓、部分 IP 段完全抓不到,多节点回源时尤其明顯。
  • 表現為間歇性失敗,而不是某個 URL 稳定失敗,容易被誤判成限流。

三類常见異常

證书鏈不完整

只部署了站点證书,没有随握手下發中間 CA 證书。浏览器可能靠本地缓存或 AIA 补齐,而抓取客戶端通常不做這一步,握手直接失敗。典型現象就是“浏览器能打開,蜘蛛打不開”。

SNI 缺失或與證书不匹配

同一 IP 承载多個域名时,服務端依赖 SNI 選擇證书。如果預設證书属于另一個域名,握手虽然能完成,但域名校驗不通過。IPv6 回源、CDN 回源到源站這两條鏈路最容易出現預設站点證书不對的情况。

协议與加密套件协商失敗

只允许 TLS 1.3 或僅開放少數套件时,版本較舊的抓取客戶端可能协商失敗;反過来,如果服務器仍保留已废弃的协议,某些安全策略嚴格的抓取端也會主動断開。两種方向的後果一样:入口不可達。

建议的排查顺序

  1. 先在多個網絡出口驗證握手,排除本地網絡或本地代理的干扰。
  2. 查看完整證书鏈,確認中間證书是否随握手一起下發。
  3. 指定域名發起請求(带 SNI),確認返回的是本域名證书而非預設證书。
  4. 分別用 IPv4 和 IPv6 完成握手,確認两條鏈路拿到的證书一致。
  5. 核對 CDN 與源站證书的有效期和部署時間,避免只更新了一侧。
  6. 確認服務器是否對某些 UA 或高频连接提前断開。

實用核對清單

  • 證书有效期:抓取频次的下滑時間点是否與到期時間重合。
  • 回源鏈路:CDN 到源站是否使用自簽證书而未加入信任。
  • HSTS:max-age 與预加载設定是否让 http 入口被强制跳轉後失敗。
  • 握手耗时:接近抓取端超时阈值时,表現是間歇失敗而不是全挂。
  • 混合内容:主文档為 https、内鏈為 http 时不影响入口可達,但會影响渲染後的連結發現。
提示:TLS 层排查最好與 DNS、robots、Sitemap 分開做。一次只改一個變量,否則無法判断究竟是哪一层修好了。

修复與回归观察

證书鏈問题通常是补挂中間證书即可;SNI 問题需要為每個域名配置獨立的 server 块,或確認預設證书正确;协议與套件問题建议同时保留 TLS 1.2 與 1.3,兼顾新舊客戶端。

修改後不要只看一次握手成功就下结论。持續观察抓取频次、入口頁的可達记錄,以及不同 IP 段的差异是否收敛,稳定几天後再判断是否恢复。任何改動都不承诺收錄或排名變化,這里解决的只是“能不能连上、能不能拿到入口”這一层問题。

與 URL 發現的關系

入口可達是 URL 發現的前提。握手不稳定时,Sitemap 提交、内鏈推送、主動提交都可能表現為“提交了但没動静”。先把這一层压稳,再去谈抓取路径、抓取预算和内鏈结构,顺序才不會反過来。