聊蜘蛛池时,HTTPS 经常被当成一個“有就行”的開關。實际上,它不直接决定蜘蛛来不来,也不承诺收錄或排名,但配置出错时,蜘蛛很可能在入口頁就被拦下。批量做站时,證书、跳轉和混合内容這几處最容易留下坑。
證书:過期和鏈不完整是高频問题
蜘蛛訪問 HTTPS 頁面时,會校驗證书鏈。如果證书過期、域名不匹配,或者中間證书缺失,訪問就可能直接失敗。浏览器有时會给用戶一個“繼續訪問”的選項,但蜘蛛通常不會替你做這個選擇。
- 過期時間:批量域名很容易漏續期,尤其是用脚本批量簽發的證书。
- 域名匹配:證书只簽了主域名,入口頁却用了子域名或带 www 的版本。
- 證书鏈完整:只部署了站点證书,没带中間證书,部分客戶端會校驗失敗。
- 自簽名證书:測試环境無所谓,正式入口頁不要用。
检查时不要只看浏览器地址栏的鎖图标。可以用命令行工具分別驗證證书鏈和到期時間,再把结果和訪問日誌里的 TLS 错誤對照。
混合内容:頁面是 HTTPS,资源却走 HTTP
入口頁本身用 HTTPS,但頁面里引用的图片、脚本、样式或 iframe 還是 HTTP,就属于混合内容。現代浏览器對主動混合内容(脚本、样式)通常會直接阻止,被動混合内容(图片)可能降級加载或提示不安全。
對蜘蛛来说,它主要關心 HTML 能否正常获取和解析。混合内容不一定會让蜘蛛完全拿不到頁面,但可能導致頁面渲染不完整,或者让蜘蛛在後續抓取资源时遇到額外失敗。批量模板里如果寫死了 HTTP 资源地址,換域名或換协议後就很容易批量中招。
- 检查 HTML 里是否有 http:// 開头的资源引用。
- 检查 CSS 文件内部的背景图、字体地址。
- 检查 JS 動態插入的资源地址。
- 检查站点地图和 canonical 是否還在用 HTTP。
跳轉:HTTP 到 HTTPS 別跳太多次
從 HTTP 跳到 HTTPS 是常见做法,但跳轉方式值得留意。301 表示永久跳轉,302 表示临时跳轉。對入口頁来说,如果确定以後都用 HTTPS,用 301 更合适;如果只是临时切換,再考虑 302。
真正容易出問题的是跳轉鏈太長:HTTP 跳到 HTTPS,再跳到带 www 的版本,再跳到带斜杠的版本,最後才到目标頁。每多一跳,蜘蛛就多花一次請求,也更容易在中間某一步超时或放弃。
建议把入口頁的跳轉收敛到一跳:不管用戶和蜘蛛從哪個协议、哪個主机名進来,都直接跳到最终 URL。
HSTS 和 SNI:批量站点要谨慎
HSTS 會让浏览器在一段時間内强制使用 HTTPS 訪問。對單站来说這是好事,但批量站点如果配错了 HSTS 头,或者某個子域名還没准备好 HTTPS,就可能把自己鎖在门外。上线前最好先用較短的 max-age 观察,再逐步延長。
SNI 方面,主流蜘蛛和現代客戶端基本都支持,不用過度担心。但如果你的服務器很老,或者用了某些特殊 CDN 配置,還是建议實际抓取一次確認。
日常检查:把 HTTPS 纳入巡检
HTTPS 的問题往往不是一次性出現,而是證书到期、资源替換、跳轉規則調整时慢慢冒出来。可以把它放進日常巡检:
- 每周抽查一批入口頁的證书到期時間和證书鏈。
- 每次改模板後,掃一遍混合内容。
- 用不同协议和主机名訪問入口頁,確認最终落到同一個 HTTPS 地址。
- 看訪問日誌里有没有 TLS 握手失敗或 4xx/5xx 集中出現。
HTTPS 本身不會让蜘蛛多抓几頁,但配置稳定、跳轉干净、资源一致,至少不會让入口頁在第一步就丢分。批量站点尤其要把證书續期和跳轉检查做成固定動作,而不是等出問题再回头补。