不少站点把入口页从 HTTP 换成 HTTPS 之后,会发现日志里蜘蛛的访问量明显下滑,甚至直接归零。除了 robots.txt、防火墙、限速这些常见原因,还有一个容易被忽略的点:证书本身有问题。对搜索蜘蛛来说,握手失败就意味着连 HTML 都拿不到,页面里的目标 URL 自然也传不出去。
证书错误对搜索蜘蛛意味着什么
搜索蜘蛛访问一个 HTTPS 地址时,第一步是 TLS 握手,而不是读取页面内容。如果握手阶段就报错,蜘蛛端看到的是一次连接层面的失败,通常不会把这次访问算作一次正常抓取。也就是说,入口页的链接结构、锚文本、更新频率做得再好,这一环不通就全都白搭。
要注意这和返回 403、404 不是一回事。后者至少说明连接是通的,蜘蛛拿到了一个明确的 HTTP 状态码;证书错误更靠前,很多情况下连 HTTP 层都没进入。
几种常见的证书问题
- 证书过期:最常见,尤其是自动续期脚本失效后,往往等到访问量掉了才被发现。
- 域名不匹配:证书只签了带 www 或不带 www 的其中一个,另一个地址访问就会报错。
- 证书链不完整:中间证书没装好,浏览器可能靠缓存补上,但蜘蛛端不一定有这种容错。
- 自签名或测试证书:本地调试用的证书直接上线,蜘蛛一般不会接受。
- 多域名与 SNI 配置错误:同一台服务器上放了多个站点,请求指向了错误的证书。
蜘蛛遇到证书报错时的表现
从日志上看,这类问题往往表现为入口页的访问记录突然减少或消失,但服务器整体流量没有明显变化。部分情况下还能看到握手超时、证书校验失败之类的错误记录,需要翻 TLS 相关的日志才能发现。
还有一种比较隐蔽的情况:证书本身能用,但服务器同时强制跳转到另一个证书有问题的域名,蜘蛛跟着跳过去之后照样进不去。所以排查时不要只看主域名那一条链路,跳转目标也要一并验证。
怎么快速自查
- 用命令行工具直接访问入口页地址,观察是否提示证书校验失败。不要加忽略校验的参数,那样测不出问题。
- 检查证书有效期和它所覆盖的域名列表,确认蜘蛛访问的那个主机名在列表里。
- 确认证书链是否完整,可以换一个网络环境或者用在线工具对比结果。
- 检查从 HTTP 到 HTTPS、以及带 www 与不带 www 之间的跳转链路,逐跳验证一遍。
- 确认服务器没有因为 HTTPS 端口配置不当,把部分请求丢给了默认站点。
证书一时修不好怎么办
如果证书短期内确实修不好,可以考虑先把入口页切回能正常访问的 HTTP 地址,保证页面至少能被读出来,再腾出时间处理证书问题。这比让入口页挂着一个错误证书、蜘蛛连门都进不去要实际一些。
如果必须保留 HTTPS,至少要保证主链路可用,并且对跳转链路上的每个域名都做一遍检查。也可以先把单个入口页地址放进抓取测试工具里跑一次,看返回的是页面内容还是连接失败,用结果来判断问题出在哪一环。
证书问题属于基础可达性问题,先解决它,再谈链接结构、锚文本、sitemap 这些优化,顺序反了容易白忙一场。
小结
入口页的 HTTPS 配置是 URL 发现链条上的第一环。证书报错时,搜索蜘蛛通常不会冒险继续访问,页面里的目标 URL 也就无从被发现。定期检查证书到期时间、覆盖域名和跳转链路,比事后补救要省事得多。