不少抓取异常并不是内容或内链的问题,而是从 HTTPS 这一层就断掉了。证书过期、跳转没配好、页面里混着 http 资源,用户在浏览器里看到的可能只是一个小警告,但蜘蛛那边收到的往往直接是连接失败,或者页面加载不完整。
这类问题有个共同点:平时不发作,一发作就是全站级别的。所以它更适合放进固定的巡检清单里,而不是等报警了再临时处理。
一、先看证书本身
有效期与续期状态
最基础的一点:证书什么时候到期,续期是不是自动的,自动续期失败时有没有人收到通知。建议至少在到期前两周确认续期已经实际完成,而不是只看“已配置自动续期”这个状态。很多事故的根源就是续期任务早就静默失败了,只是没人发现。
覆盖的域名范围
主域名、带 www 的域名、子域、移动端域名,都要对着证书里的域名列表核一遍。如果用的是单域名证书,那么 www 或某个子域走 https 就会直接报错。多域名站点尤其要注意,新加的子域不会自动进旧证书。
证书链是否完整
有些服务器只部署了站点证书,中间的签发证书没带上。浏览器可能靠本地缓存补上,命令行工具和蜘蛛却可能直接判定失败。用在线检测工具或者命令行看一下完整链路,能省掉很多排查时间。
二、核对跳转与协议一致性
- http 版本能不能正常 301 到 https 版本,并且只跳一次;
- http 与 https、带 www 与不带 www 这几种组合,最终是不是都落到同一个地址;
- 站内链接、Sitemap、canonical 里写的地址,是不是就是最终那个 https 版本。
只要有一处还写着 http,蜘蛛就会沿着旧协议去抓,然后被跳转、被拦截,白白消耗一次访问。协议不统一的问题不会立刻显现,但会持续拉低整站的抓取效率。
三、检查页面里的混合内容
HTTPS 页面里引用了 http 的图片、脚本、样式或字体,浏览器可能只是降级提示,但在严格策略下会被直接拦掉,页面也就不完整了。这类资源藏得比较深,常见的位置有:
- 老文章里插入的外链图片;
- 第三方统计、客服、广告脚本;
- CSS 里用绝对地址写的背景图;
- 编辑器或模板默认插入的 http 资源。
用浏览器控制台筛一遍混合内容警告,比一条条翻文章快得多。批量替换之后再抽查几个老页面,确认没有遗漏。
四、HSTS 要谨慎启用
HSTS 能让浏览器以后只用 https 访问,减少一次跳转开销。但如果站点还没完全准备好,或者某些子域暂时没有可用证书,开启 HSTS 之后用户和蜘蛛都会被强制走 https,连回退的机会都没有。建议先在主站小范围开启,观察一段时间,确认没有异常再考虑更激进的配置。
五、用接近蜘蛛的视角验证一次
自查的落点不是“浏览器打开正常”,而是拿到和蜘蛛接近的响应结果。可以这样验证:
- 用命令行请求首页和几个典型内页,看状态码、跳转次数、TLS 是否报错;
- 换一个网络出口再试一遍,排除本地缓存和运营商差异;
- 在搜索后台的抓取工具里请求同一个地址,看返回内容是否完整;
- 对照服务器访问日志,确认蜘蛛的请求没有大量 5xx 或连接重置。
六、把提醒机制补上
证书、域名、服务器这几件事都不该只靠人记。至少要保证:
- 证书到期前有邮件或群通知;
- 续期失败有单独告警,而不是混在常规日志里被忽略;
- 域名解析和证书变更记录在同一个文档里,换人接手也能看懂;
- 每次变更后,按上面的流程重新验证一遍。
HTTPS 是抓取的第一道门。门开着的时候没人注意,门关上了,后面所有优化都无从谈起。
最后补一句:这些检查做完,只能说明抓取通道是通的,并不代表页面一定会被收录。内容质量、站内结构和更新节奏,仍然是更长期的事。