蜘蛛池入口頁現在基本都跑在 HTTPS 上,證书這件事也因此常被当成“配好就不用再管”的一次性工作。但證书一旦出問题,蜘蛛的訪問路径會立刻改變——它不會像浏览器那样彈一個“繼續訪問”的按钮让你点。
蜘蛛遇到證书問题时的几種反應
浏览器的容错能力比爬虫强得多,這中間的差距就是很多配置事故的来源。
- 證书過期或域名不匹配:多數搜尋引擎爬虫會直接放弃這次訪問,连接在握手阶段就断掉,你在訪問日誌里连一條记錄都看不到。
- 中間證书缺失:部分浏览器能靠缓存或补鏈机制蒙混過關,爬虫通常不行。表現是“自己能打開,蜘蛛不来”。
- 頁面内的混合内容:HTTPS 頁面里引用 HTTP 的脚本或图片,頁面本身還能被請求,但渲染後的内容可能残缺。
- 协议版本不匹配:只開 HTTP/2 而上游客戶端只支持 HTTP/1.1 时,也可能出現握手後的異常断開。
多域名场景下的證书覆盖
蜘蛛池通常是一批域名同时在线,證书怎么覆盖直接决定了後續维護成本。
- 單域名證书:适合入口頁數量少、域名固定的情况,域名一多就會變成流水线作业。
- 多域名(SAN)證书:一張證书覆盖多個域名,注意大部分 CA 對 SAN 數量有上限,且新增域名往往要重新簽發。
- 泛域名證书:能覆盖同一主域下的所有子域,适合用子域做入口頁的结构,但不覆盖不同主域。
選哪種不取决于“高級不高級”,而取决于你新增域名的频率和續期时能承受的操作量。
續期與自動化
證书過期是最容易避免、也最容易發生的問题。自動續期能解决大部分情况,但自動續期本身也會失敗。
- 續期驗證方式要固定下来:DNS 驗證受解析變更影响,文件驗證受目錄權限和跳轉規則影响。
- HTTP 驗證的域名如果被整体 301 到 HTTPS,驗證路径要單獨放行,否則驗證請求會被跳走。
- 續期成功後確認服務是否重新加载了證书,有些环境只是文件更新了,進程還在用舊的。
- 額外挂一個到期提醒,不要只依赖自動續期的成功日誌。
HTTP 到 HTTPS 的跳轉安排
跳轉本身不复杂,麻烦的是跳轉鏈條過長或者出現环。
- 尽量一步到位:HTTP → HTTPS 一次 301,不要中間再经過一個測試域名或带 www 的中間態。
- 检查两個协议下的入口是否都能正常返回,避免其中一個直接 5xx 或者指向一個空目錄。
- HSTS 要谨慎下發。它一旦生效,回退到 HTTP 的成本很高,測試阶段不建议開啟。
證书和跳轉属于“平时没人看、出事全站受影响”的配置,适合放進例行巡检,而不是等抓取量下滑了再回头查。
几個看起来正常、實际有問题的配置
- 證书鏈不完整:本地浏览器补齐了中間證书,所以顯示正常,但爬虫拿到的鏈是断的。
- SNI 分流:服務器按 SNI 返回不同證书,預設站点的證书和入口域名對不上,訪問就會失敗。
- CDN 邊缘正常、回源走 HTTP:外部看没問题,回源鏈路上的異常在入口日誌里看不到。
- 證书 SAN 漏了某個入口域名:批量接入时最容易漏,尤其是後补的域名。
一份可执行的排查清單
- 用命令行工具查看完整的證书鏈,確認中間證书有没有下發。
- 核對有效期和 SAN 列表,逐個入口域名對一遍。
- 分別請求 HTTP 和 HTTPS 两個入口,確認返回碼、跳轉次數和最终落点一致。
- 检查頁面里是否還有 HTTP 资源引用,尤其是脚本和样式。
- 在服務端日誌里找握手失敗、连接重置一類记錄,和抓取量的變化對齐看。
證书配置不會直接带来抓取,它只负责把“门”開着。把這一步做稳,至少能排除掉一批無從查起的抓取異常。