站点运营的日常检查,大多集中在内容、内鏈、站点地图這些看得见的部分。但蜘蛛第一步要做的,其實是和服務器完成一次 HTTPS 握手。證书過期、證书鏈不完整、頁面里混着 HTTP 资源,都可能让抓取在拿到 HTML 之前就断掉。這類問题不常發生,一旦發生,影响面却往往是全站性的。
一、先看證书本身能不能握手成功
證书問题属于基础设施层面,排查起来不复杂,但需要一次性把几個点都確認掉,而不是等到浏览器彈出警告才想起来。
- 有效期:確認到期時間並設定提前提醒。用了自動續期,也要定期驗證是否真的續上了。
- 證书鏈完整性:中間證书缺失时,部分客戶端(包括一些抓取程序)會直接握手失敗;浏览器因為缓存了中間證书,反而可能看不出問题。
- 域名覆盖:主域、带 www 的版本、常用的子域是否都在證书的 SAN 列表里。某個子域没被覆盖,蜘蛛訪問时就會报错。
- 协议與加密套件:過老的 TLS 版本可能被現代客戶端拒绝,建议只保留較新的版本。
- 多节点一致性:有 CDN 或多台服務器时,確認每個节点上的證书都是最新的,避免部分請求成功、部分失敗。
檢測方式不必复杂。用命令行工具看一次證书鏈,或者用在线檢測查看完整握手過程,通常几分钟就能有结论。
二、混合内容:頁面是 HTTPS,资源却不是
頁面地址是 https,但里面的图片、脚本、样式、iframe 仍然用 http 加载,這就是混合内容。對蜘蛛来说,它可能只拿到主体 HTML,而样式、脚本、图片全部加载失敗——渲染出来的结果和真實頁面完全不是一回事。
两類混合内容
- 被動混合内容:图片、音视频一類。浏览器通常會加载,但會给出不安全提示。
- 主動混合内容:脚本、样式、iframe、异步請求。這類通常會被直接拦截,頁面行為随之改變。
怎么把它們找出来
- 打開浏览器開發者工具的控制台,看是否有混合内容警告,同时在網絡面板里看哪些請求被标记為不安全。
- 在頁面源碼里搜尋 http 開头的资源地址,注意那些寫死的绝對路径。
- 检查模板、第三方组件、CDN 引用、广告位脚本——這些地方最容易残留 http 地址。
- 把關键頁面交给渲染型抓取工具跑一遍,對比渲染前後的差异,缺资源的地方通常一眼就能看出来。
- 站点規模大时,用爬虫工具全站掃描,按资源類型匯總一份清單。
修复思路很直接:能改成 https 的就改,不能改的(第三方只提供 http)就考虑替換或本地托管。相對路径在 HTTPS 頁面里一般不會出問题,但寫死绝對地址的地方要特別留意。
三、跳轉和协议要保持一致
协议层面的另一類隐患是跳轉逻辑混乱。常见情况包括:http 版本没有 301 到 https,或者反過来從 https 跳回 http;www 與裸域之間来回跳;一條連結要经過三四次跳轉才到终点。
- 選定一個規范协议和主机形式,其余全部 301 指向它,並且只跳一次。
- 站内連結、站点地图、canonical 标簽统一使用最终地址,不要一半寫 http、一半寫 https。
- 確認 HSTS 設定與目前狀態匹配,開啟前先确保全站 HTTPS 已经稳定執行。
四、這些問题會怎样反映在抓取上
證书或协议出問题时,抓取日誌里通常會出現几類信号:连接被重置、握手超时、成規模的 5xx 或異常狀態碼、同一批 URL 反复失敗。這时不要急着怀疑蜘蛛不来,先按上面的顺序把连接层面排查一遍。
另一個容易忽略的点是,抓取失敗會占用抓取预算。同一個地址反复尝试失敗,蜘蛛花在正常頁面上的時間自然就少了。
五、简版自查清單
- 證书是否在有效期内,證书鏈是否完整。
- 所有需要被訪問的域名是否都在證书覆盖范围内。
- HTTPS 頁面中是否還有 http 资源引用。
- http 到 https 是否一次 301 到位,没有反向跳轉。
- 内鏈、站点地图、canonical 是否统一了协议和主机形式。
- 抓取日誌里是否出現成規模的握手失敗或異常狀態碼。
基础设施類的問题不需要天天看,但值得按固定周期巡检一次。它不像内容那样能天天带来變化,却决定了其他優化有没有被看到的前提。
把 HTTPS 和混合内容纳入常規自查,成本不高,收效比較稳。與其等浏览器彈出警告、抓取出現異常再去补救,不如提前把這几項確認掉。