蜘蛛池里的入口頁大多靠程序批量生成,域名一多,HTTPS 配置就容易被忽略。很多入口頁在浏览器里能打開,但蜘蛛拿到的却是證书错誤、跳轉循环或者半截内容。抓取失敗往往不是内容問题,而是這一层没打通。
證书错誤:蜘蛛看到的第一道门槛
搜尋引擎爬虫對 TLS 的處理比浏览器保守。證书鏈不完整、域名與證书不匹配、根證书過期、使用自簽名證书,都可能让爬虫直接放弃這次請求,或者在日誌里留下握手失敗的记錄。浏览器因為有用戶干预和證书缓存,常常看起来是正常的。
- 證书鏈不完整:服務器只下發站点證书,没带中間證书,桌面浏览器可能自動补齐,爬虫通常不會。
- 域名不匹配:泛域名證书只覆盖一层,a.example.com 有效,b.a.example.com 不一定。
- 時間错位:服務器時間不准,導致證书被判定為未生效或已過期。
- SNI 缺失:同一 IP 承载多個站点时,不返回對應證书會拿到預設站点的證书。
混合内容與协议跳轉
頁面本身是 HTTPS,但里面引用了 HTTP 的图片、脚本或样式,浏览器會拦截或降級處理,爬虫則可能直接跳過這些资源。入口頁對资源依赖不重,但一旦出現混合内容,頁面渲染结果和预期就可能不一致。
- 所有资源引用统一改成 HTTPS 绝對地址或相對协议地址。
- HTTP 到 HTTPS 的跳轉只保留一跳,避免 301 套 301。
- 跳轉目标要和原 URL 的路径、參數保持一致,不要顺手改寫大小寫或去掉斜杠。
解析层的問题同样會被记在抓取失敗帳上
證书没問题,但 DNS 解析不稳定、TTL 設定過短、解析结果在多個 IP 之間来回漂移,也會让蜘蛛的請求随机失敗。批量入口頁如果共用一套解析策略,出問题时往往是整批一起出問题。
排查顺序建议從外到内:DNS 解析是否稳定 → TLS 握手是否成功 → 响應头與狀態碼是否正常 → 正文是否完整。倒着查容易在内容上白費功夫。
證书類型怎么選
單域名證书最便宜但最难管理,域名一多就要對着一堆到期時間。泛域名證书适合一個主域下大量二級入口頁的场景,多域名證书适合入口頁分散在多個不相關域名的情况。選擇的核心不是價格,而是到期時間和部署位置能不能统一管理。
- 入口頁集中在同一主域下:優先泛域名證书。
- 域名分散且數量可控:多域名證书可以减少维護点。
- 临时或測試用入口頁:同样使用有效證书,不要靠忽略错誤来省事。
一份可以落地的检查清單
- 用命令行工具而不是浏览器驗證證书鏈,確認中間證书已下發。
- 检查證书覆盖的域名范围,泛域名證书要確認层級。
- 核對服務器時間同步。
- 同 IP 多站点时,逐個驗證 SNI 返回的證书是否正确。
- 抽查入口頁的资源引用,清理 HTTP 混用。
- 记錄跳轉鏈路,确保没有多跳和循环。
- 把證书到期時間纳入日常巡检,避免過期後再补救。
使用建议
入口頁數量上来之後,HTTPS 的维護成本不是线性的:域名越多,證书續期、解析變更、IP 調整的组合就越多。比較稳妥的做法是统一證书簽發方式、统一到期提醒、统一解析模板,把變量控制在少數几個维度上。抓取是否稳定,很多时候取决于這些不顯眼的配置细节,而不是内容本身寫得多好。