不少抓取異常並不是内容或内鏈的問题,而是從 HTTPS 這一层就断掉了。證书過期、跳轉没配好、頁面里混着 http 资源,用戶在浏览器里看到的可能只是一個小警告,但蜘蛛那邊收到的往往直接是连接失敗,或者頁面加载不完整。
這類問题有個共同点:平时不發作,一發作就是全站級別的。所以它更适合放進固定的巡检清單里,而不是等报警了再临时處理。
一、先看證书本身
有效期與續期狀態
最基础的一点:證书什么时候到期,續期是不是自動的,自動續期失敗时有没有人收到通知。建议至少在到期前两周確認續期已经實际完成,而不是只看“已配置自動續期”這個狀態。很多事故的根源就是續期任務早就静默失敗了,只是没人發現。
覆盖的域名范围
主域名、带 www 的域名、子域、移動端域名,都要對着證书里的域名列表核一遍。如果用的是單域名證书,那么 www 或某個子域走 https 就會直接报错。多域名站点尤其要注意,新加的子域不會自動進舊證书。
證书鏈是否完整
有些服務器只部署了站点證书,中間的簽發證书没带上。浏览器可能靠本地缓存补上,命令行工具和蜘蛛却可能直接判定失敗。用在线檢測工具或者命令行看一下完整鏈路,能省掉很多排查時間。
二、核對跳轉與协议一致性
- http 版本能不能正常 301 到 https 版本,並且只跳一次;
- http 與 https、带 www 與不带 www 這几種组合,最终是不是都落到同一個地址;
- 站内連結、Sitemap、canonical 里寫的地址,是不是就是最终那個 https 版本。
只要有一處還寫着 http,蜘蛛就會沿着舊协议去抓,然後被跳轉、被拦截,白白消耗一次訪問。协议不统一的問题不會立刻顯現,但會持續拉低整站的抓取效率。
三、检查頁面里的混合内容
HTTPS 頁面里引用了 http 的图片、脚本、样式或字体,浏览器可能只是降級提示,但在嚴格策略下會被直接拦掉,頁面也就不完整了。這類资源藏得比較深,常见的位置有:
- 老文章里插入的外鏈图片;
- 第三方統計、客服、广告脚本;
- CSS 里用绝對地址寫的背景图;
- 編輯器或模板預設插入的 http 资源。
用浏览器控制台筛一遍混合内容警告,比一條條翻文章快得多。批量替換之後再抽查几個老頁面,確認没有遗漏。
四、HSTS 要谨慎啟用
HSTS 能让浏览器以後只用 https 訪問,减少一次跳轉開销。但如果站点還没完全准备好,或者某些子域暂时没有可用證书,開啟 HSTS 之後用戶和蜘蛛都會被强制走 https,连回退的机會都没有。建议先在主站小范围開啟,观察一段時間,確認没有異常再考虑更激進的配置。
五、用接近蜘蛛的视角驗證一次
自查的落点不是“浏览器打開正常”,而是拿到和蜘蛛接近的响應结果。可以這样驗證:
- 用命令行請求首頁和几個典型内頁,看狀態碼、跳轉次數、TLS 是否报错;
- 換一個網絡出口再试一遍,排除本地缓存和运营商差异;
- 在搜尋後台的抓取工具里請求同一個地址,看返回内容是否完整;
- 對照服務器訪問日誌,確認蜘蛛的請求没有大量 5xx 或连接重置。
六、把提醒机制补上
證书、域名、服務器這几件事都不该只靠人记。至少要保證:
- 證书到期前有邮件或群通知;
- 續期失敗有單獨告警,而不是混在常規日誌里被忽略;
- 域名解析和證书變更记錄在同一個文档里,換人接手也能看懂;
- 每次變更後,按上面的流程重新驗證一遍。
HTTPS 是抓取的第一道门。门開着的时候没人注意,门關上了,後面所有優化都無從谈起。
最後补一句:這些检查做完,只能說明抓取通道是通的,並不代表頁面一定會被收錄。内容质量、站内结构和更新节奏,仍然是更長期的事。