做蜘蛛池的人常把注意力放在域名、模板和跳轉上,HTTPS 配置往往被当作“服務器的事”放到最後。但對搜尋引擎蜘蛛来说,协议和證书是抓取鏈路的第一道门:门打不開,後面所有優化都没有意义。
蜘蛛對 HTTPS 的處理和浏览器不完全一样
浏览器遇到證书問题时通常會给出一個“繼續訪問”的按钮,用戶点一下就過去了。蜘蛛通常没有這個選項——證书驗證不通過,抓取請求大概率直接中断,日誌里可能只留下一條失敗记錄,不會给你任何提示。
另一處差別是缓存策略。浏览器會记住你手動放行的證书,蜘蛛一般不會,所以同一個错誤會反复出現,每次抓取都失敗一次。
常见的三種协议混用情形
1. 入口頁用 HTTPS,内鏈却是 HTTP
這種情况最常见,多站点批量建站时尤其容易發生:模板里寫死了 http:// 的連結,主站却已经切到 https。蜘蛛顺着連結走到 http,如果服務器没有做 301 到 https,就會出現两套 URL 同时可訪問,權重被摊薄。
2. 入口頁是 HTTP,通過跳轉進 HTTPS
301 跳轉本身没問题,問题在于鏈條長度。http 到 https、再加 www、再加一個目錄跳轉,几跳之後蜘蛛的耐心和抓取预算都會被消耗。建议入口頁直接给出最终 URL,或者最多一跳到位。
3. 同一批域名里协议不统一
池子里几十個域名,有的 http 有的 https,维護起来容易漏。對蜘蛛来说這不算致命問题,但會让抓取来源识別和日誌統計變得混乱,排查問题时很难一眼看出哪個域名出了状况。
證书本身容易踩的坑
- 證书過期:最常见也最容易避免。到期当天如果没續,抓取會失敗;如果服務器同时開放 80 端口,部分蜘蛛會退回 HTTP 抓取,于是站点又變成双协议可訪問。
- 證书鏈不完整:只装了站点證书、漏掉中間證书。部分浏览器能自動补全,蜘蛛客戶端不一定有這種能力。
- 域名不匹配:泛解析下新增的二級域名,用了只簽主域名的單域名證书,訪問时报名稱不匹配。
- 只覆盖部分域名:多域名證书没把池子里全部域名加進去,批量接入时漏掉一两個。
顺带说一句,證书是 DV、OV 還是 EV,對抓取能力没有任何影响,不必為了“看起来更正規”去多花钱,那是给人看的,不是给蜘蛛看的。
HSTS 與跳轉的配合
開啟 HSTS 之後,浏览器會强制用 HTTPS 訪問,但蜘蛛是否遵循 HSTS 並不统一。如果同时設定了 includeSubDomains,而池子里恰好有只支持 HTTP 的二級域名,就可能出現無法訪問的情况。更稳妥的做法是把所有域名都跑通 HTTPS,再考虑加 HSTS。
一個简單的自查方式:用命令行抓一次入口頁,看返回碼、看證书有效期、看跳轉次數。能看到的問题,蜘蛛也會遇到;看不到的問题,往往就是在抓取环节暴露出来的。
接入前的自查清單
- 80 與 443 端口都通,且 80 有明确的跳轉或返回。
- 證书有效期至少留出一個月以上,並設定續期提醒。
- 證书鏈完整,用工具驗證一遍,不要只看浏览器绿鎖。
- 入口頁最终 URL 與對外给出的 URL 完全一致,跳轉不超過一跳。
- 模板里的内鏈统一用相對协议或 https,避免寫死 http。
- 池子里每個域名都單獨驗證一次,泛解析新增的域名不要漏。
HTTPS 配置不會带来額外的抓取量,但它决定了已有的抓取机會能不能落地。對蜘蛛池這種依赖批量域名的场景来说,把协议和證书做成一條固定流程,比事後逐個域名排查要省事得多。