搜索抓取

搜索蜘蛛抓取:HTTPS 握手与证书链异常造成的入口不可达排查

抓取入口排查中最容易被跳过的一层是 HTTPS 握手。证书链不完整、SNI 与证书不匹配、协议与套件协商失败,都会让蜘蛛在建立连接阶段就断开,日志里甚至看不到请求行。本文整理这类异常的表现、可执行的排查顺序与核对清单,并说明它与 URL 发现、抓取路径的关系。

搜索抓取

搜索蜘蛛抓取:HTTPS 握手与证书链异常造成的入口不可达排查

排查搜索蜘蛛抓取入口时,多数人先看 robots.txt、Sitemap 和内链,HTTPS 握手这一层往往被跳过。实际情况是:只要 TLS 握手失败,后面的 robots、页面内容、内链都不存在,蜘蛛看到的就是“连不上”。这类问题不报错、不留痕,只在抓取记录里表现为可达率下降。

握手失败在抓取记录里的表现

  • 抓取频次整体下降,但没有对应的 4xx 或 5xx 记录可供对照。
  • 服务器访问日志里缺少对应 UA 的请求行,只有连接被中断的痕迹。
  • 部分 IP 段可抓、部分 IP 段完全抓不到,多节点回源时尤其明显。
  • 表现为间歇性失败,而不是某个 URL 稳定失败,容易被误判成限流。

三类常见异常

证书链不完整

只部署了站点证书,没有随握手下发中间 CA 证书。浏览器可能靠本地缓存或 AIA 补齐,而抓取客户端通常不做这一步,握手直接失败。典型现象就是“浏览器能打开,蜘蛛打不开”。

SNI 缺失或与证书不匹配

同一 IP 承载多个域名时,服务端依赖 SNI 选择证书。如果默认证书属于另一个域名,握手虽然能完成,但域名校验不通过。IPv6 回源、CDN 回源到源站这两条链路最容易出现默认站点证书不对的情况。

协议与加密套件协商失败

只允许 TLS 1.3 或仅开放少数套件时,版本较旧的抓取客户端可能协商失败;反过来,如果服务器仍保留已废弃的协议,某些安全策略严格的抓取端也会主动断开。两种方向的后果一样:入口不可达。

建议的排查顺序

  1. 先在多个网络出口验证握手,排除本地网络或本地代理的干扰。
  2. 查看完整证书链,确认中间证书是否随握手一起下发。
  3. 指定域名发起请求(带 SNI),确认返回的是本域名证书而非默认证书。
  4. 分别用 IPv4 和 IPv6 完成握手,确认两条链路拿到的证书一致。
  5. 核对 CDN 与源站证书的有效期和部署时间,避免只更新了一侧。
  6. 确认服务器是否对某些 UA 或高频连接提前断开。

实用核对清单

  • 证书有效期:抓取频次的下滑时间点是否与到期时间重合。
  • 回源链路:CDN 到源站是否使用自签证书而未加入信任。
  • HSTS:max-age 与预加载设置是否让 http 入口被强制跳转后失败。
  • 握手耗时:接近抓取端超时阈值时,表现是间歇失败而不是全挂。
  • 混合内容:主文档为 https、内链为 http 时不影响入口可达,但会影响渲染后的链接发现。
提示:TLS 层排查最好与 DNS、robots、Sitemap 分开做。一次只改一个变量,否则无法判断究竟是哪一层修好了。

修复与回归观察

证书链问题通常是补挂中间证书即可;SNI 问题需要为每个域名配置独立的 server 块,或确认默认证书正确;协议与套件问题建议同时保留 TLS 1.2 与 1.3,兼顾新旧客户端。

修改后不要只看一次握手成功就下结论。持续观察抓取频次、入口页的可达记录,以及不同 IP 段的差异是否收敛,稳定几天后再判断是否恢复。任何改动都不承诺收录或排名变化,这里解决的只是“能不能连上、能不能拿到入口”这一层问题。

与 URL 发现的关系

入口可达是 URL 发现的前提。握手不稳定时,Sitemap 提交、内链推送、主动提交都可能表现为“提交了但没动静”。先把这一层压稳,再去谈抓取路径、抓取预算和内链结构,顺序才不会反过来。