蜘蛛抓取一个页面,第一步不是下载 HTML,而是和服务器完成 TLS 握手。如果证书过期、域名不匹配、中间证书缺失,或者 HTTP 与 HTTPS 两个版本各自为政,抓取请求很可能在拿到任何内容之前就被中断。这类问题在浏览器里往往只表现为“点一下继续访问”,容易被忽略,但对爬虫来说常常是硬性失败。
为什么握手问题容易被忽视
人工访问时,浏览器会给证书错误一个“继续前往”的按钮;抓取程序通常不会。多数爬虫遇到证书校验失败会直接终止该次请求,记为连接错误,而不是把页面降级抓取。结果就是:旧页面看起来还在,但回访失败;新链接已经放出,却从未被抓。
证书与协议自查清单
- 有效期:确认到期时间,设置至少提前 30 天的提醒;自动续期也要有人盯失败告警。
- 覆盖域名:主域名、www、移动端域名、静态资源域名是否都在证书范围内,通配符证书是否覆盖多级子域名。
- 证书链:中间证书是否完整部署,用在线检测工具或命令行查看链路是否完整。
- 协议版本:关掉过旧的 TLS 版本,保留主流版本,避免老客户端与爬虫协商失败。
- 跳转唯一性:HTTP 到 HTTPS、非 www 到 www 最好一次跳转到位,不要串联多次。
- 混合内容:HTTPS 页面里若还引用 HTTP 的图片、脚本、样式,浏览器会拦截,抓取端也可能拿不到这些资源。
- 服务器时间:系统时间偏差过大会导致证书校验直接失败,这个坑排查时很容易漏掉。
- CDN 与源站:CDN 上的证书和源站证书要同步更新,避免只换了一边。
HSTS 要不要开
HSTS 能让浏览器强制走 HTTPS,但一旦开启并设置较长有效期,回退会比较麻烦。建议先确认全站资源都已 HTTPS 化,页面内也没有硬编码的 http 地址,再考虑开启,暂时不必急着提交预加载列表。
怎么查,查哪些页面
- 用检测工具看一遍证书链、有效期和服务器支持的协议版本。
- 抽查首页、栏目页、详情页、静态资源域名各若干条 URL,确认都能正常建立连接。
- 在服务器日志或抓取日志里筛 SSL、握手、连接超时相关记录,看是否有集中出现的时间段。
- 在站长平台查看抓取错误与安全类提示,确认没有大面积失败。
换证书与调整协议时的注意事项
换证书尽量避开抓取高峰,先在一台或一部分节点上验证,再全量替换。协议跳转规则的调整最好一次改到位,改完后检查站内是否还残留 http 链接,尤其是导航、页脚、图片地址和站点地图里的地址。调整后的几天内,观察日志中回访量是否恢复,抓取错误是否回落。
证书和协议是抓取的入场券。内容、结构、内链做得再好,握手失败一次,后面的工作都无从谈起。