蜘蛛抓取一個頁面,第一步不是下载 HTML,而是和服務器完成 TLS 握手。如果證书過期、域名不匹配、中間證书缺失,或者 HTTP 與 HTTPS 两個版本各自為政,抓取請求很可能在拿到任何内容之前就被中断。這類問题在浏览器里往往只表現為“点一下繼續訪問”,容易被忽略,但對爬虫来说常常是硬性失敗。
為什么握手問题容易被忽视
人工訪問时,浏览器會给證书错誤一個“繼續前往”的按钮;抓取程序通常不會。多數爬虫遇到證书校驗失敗會直接终止该次請求,记為连接错誤,而不是把頁面降級抓取。结果就是:舊頁面看起来還在,但回訪失敗;新連結已经放出,却從未被抓。
證书與协议自查清單
- 有效期:確認到期時間,設定至少提前 30 天的提醒;自動續期也要有人盯失敗告警。
- 覆盖域名:主域名、www、移動端域名、静態资源域名是否都在證书范围内,通配符證书是否覆盖多級子域名。
- 證书鏈:中間證书是否完整部署,用在线檢測工具或命令行查看鏈路是否完整。
- 协议版本:關掉過舊的 TLS 版本,保留主流版本,避免老客戶端與爬虫协商失敗。
- 跳轉唯一性:HTTP 到 HTTPS、非 www 到 www 最好一次跳轉到位,不要串联多次。
- 混合内容:HTTPS 頁面里若還引用 HTTP 的图片、脚本、样式,浏览器會拦截,抓取端也可能拿不到這些资源。
- 服務器時間:系統時間偏差過大會導致證书校驗直接失敗,這個坑排查时很容易漏掉。
- CDN 與源站:CDN 上的證书和源站證书要同步更新,避免只換了一邊。
HSTS 要不要開
HSTS 能让浏览器强制走 HTTPS,但一旦開啟並設定較長有效期,回退會比較麻烦。建议先確認全站资源都已 HTTPS 化,頁面内也没有硬编碼的 http 地址,再考虑開啟,暂时不必急着提交预加载列表。
怎么查,查哪些頁面
- 用檢測工具看一遍證书鏈、有效期和服務器支持的协议版本。
- 抽查首頁、栏目頁、詳情頁、静態资源域名各若干條 URL,確認都能正常建立连接。
- 在服務器日誌或抓取日誌里筛 SSL、握手、连接超时相關记錄,看是否有集中出現的時間段。
- 在站長平台查看抓取错誤與安全類提示,確認没有大面积失敗。
換證书與調整协议时的注意事項
換證书尽量避開抓取高峰,先在一台或一部分节点上驗證,再全量替換。协议跳轉規則的調整最好一次改到位,改完後检查站内是否還残留 http 連結,尤其是導航、頁脚、图片地址和站点地图里的地址。調整後的几天内,观察日誌中回訪量是否恢复,抓取错誤是否回落。
證书和协议是抓取的入场券。内容、结构、内鏈做得再好,握手失敗一次,後面的工作都無從谈起。