現在做站,HTTPS 基本是預設選項。但對蜘蛛池来说,證书不只是安全标识這一层——如果 TLS 握手都完成不了,蜘蛛拿到的不是頁面内容,而是一次连接失敗。入口頁再漂亮,也等于没被訪問過。
證书出問题时,蜘蛛看到的是什么
需要先明确一点:蜘蛛抓取走的是和浏览器一样的 HTTPS 請求。如果證书不被信任,多數抓取客戶端會直接中断连接,不會像人一样点一下繼續訪問。所以證书問题不是体驗差一点,而是直接阻断。
常见表現是:入口頁在浏览器里能打開(因為你手動忽略了警告),但日誌里几乎看不到蜘蛛的訪問记錄,或者只有零星几次失敗請求。
几類高频問题
- 證书過期:最常见的低級错誤。免費證书三個月一續,自動化續期脚本挂了、域名解析換了、服務器迁移了,都會導致續期失敗。
- 域名不匹配:證书只簽了 aaa.com,你却用 www.aaa.com 或某個子域名去接蜘蛛,主机名對不上。多域名铺開时尤其容易漏。
- 中間證书缺失:浏览器可能靠缓存补齐,抓取客戶端不一定有這個容错,于是出現部分客戶端能连、部分不能连。
- 自簽名證书:測試环境图省事用了自簽,结果這套配置被带到线上。
- TLS 版本過舊:只支持很老的协议版本,較新的抓取客戶端可能直接拒绝握手。
混合内容:頁面是 HTTPS,资源却是 HTTP
證书没問题,也不代表就没事。如果 HTML 走 HTTPS,但里面引用的 CSS、JS、图片是 HTTP 地址,浏览器會拦截或警告,抓取端的情况則更不确定——可能拿到的頁面结构不完整,也可能某些资源請求被直接掐断。
對入口頁来说,正文和連結是核心,图片样式影响相對小。但如果連結是由 JS 负责輸出的,混合内容就可能让蜘蛛看不到本该出現的 URL。
HTTP 跳轉與 HSTS 的處理
如果還保留着 HTTP 到 HTTPS 的跳轉,要確認跳轉是 301、只跳一次、且目标地址本身證书正常。多层跳轉,或者跳到另一個有問题的域名,會白白消耗抓取次數。
開了 HSTS 之後,浏览器會强制走 HTTPS,但抓取端未必完全遵守。所以別指望 HSTS 帮你兜底,證书本身该修還得修。
排查顺序建议
- 用命令行工具(例如 openssl s_client 或 curl -v)直接看握手過程和證书鏈,而不是只看浏览器地址栏的小鎖。
- 確認證书覆盖的域名列表,把蜘蛛池實际使用的域名逐個對一遍。
- 检查證书到期時間,以及自動續期任務是否真的在执行。
- 随机抽几個入口頁,看看頁面里引用的资源是否全部為 HTTPS 或相對协议。
- 確認 HTTP、www、非 www 之間的跳轉鏈路足够简單清晰。
證书問题的特点是表現很安静——不是頁面报错,而是蜘蛛干脆不来。所以它更适合放進定期巡检,而不是等發現收錄不動了再去翻。
一点使用建议
如果蜘蛛池铺開的域名較多,建议把證书到期時間、域名覆盖范围做成一張表,纳入固定巡检。批量部署时用同一套配置模板,避免個別域名漏簽或用了不同證书。遇到某些域名有蜘蛛、某些完全没有的情况,先查證书和握手,往往比反复改内容更快定位問题。