做蜘蛛池的人常把注意力放在域名、模板和跳转上,HTTPS 配置往往被当作“服务器的事”放到最后。但对搜索引擎蜘蛛来说,协议和证书是抓取链路的第一道门:门打不开,后面所有优化都没有意义。
蜘蛛对 HTTPS 的处理和浏览器不完全一样
浏览器遇到证书问题时通常会给出一个“继续访问”的按钮,用户点一下就过去了。蜘蛛通常没有这个选项——证书验证不通过,抓取请求大概率直接中断,日志里可能只留下一条失败记录,不会给你任何提示。
另一处差别是缓存策略。浏览器会记住你手动放行的证书,蜘蛛一般不会,所以同一个错误会反复出现,每次抓取都失败一次。
常见的三种协议混用情形
1. 入口页用 HTTPS,内链却是 HTTP
这种情况最常见,多站点批量建站时尤其容易发生:模板里写死了 http:// 的链接,主站却已经切到 https。蜘蛛顺着链接走到 http,如果服务器没有做 301 到 https,就会出现两套 URL 同时可访问,权重被摊薄。
2. 入口页是 HTTP,通过跳转进 HTTPS
301 跳转本身没问题,问题在于链条长度。http 到 https、再加 www、再加一个目录跳转,几跳之后蜘蛛的耐心和抓取预算都会被消耗。建议入口页直接给出最终 URL,或者最多一跳到位。
3. 同一批域名里协议不统一
池子里几十个域名,有的 http 有的 https,维护起来容易漏。对蜘蛛来说这不算致命问题,但会让抓取来源识别和日志统计变得混乱,排查问题时很难一眼看出哪个域名出了状况。
证书本身容易踩的坑
- 证书过期:最常见也最容易避免。到期当天如果没续,抓取会失败;如果服务器同时开放 80 端口,部分蜘蛛会退回 HTTP 抓取,于是站点又变成双协议可访问。
- 证书链不完整:只装了站点证书、漏掉中间证书。部分浏览器能自动补全,蜘蛛客户端不一定有这种能力。
- 域名不匹配:泛解析下新增的二级域名,用了只签主域名的单域名证书,访问时报名称不匹配。
- 只覆盖部分域名:多域名证书没把池子里全部域名加进去,批量接入时漏掉一两个。
顺带说一句,证书是 DV、OV 还是 EV,对抓取能力没有任何影响,不必为了“看起来更正规”去多花钱,那是给人看的,不是给蜘蛛看的。
HSTS 与跳转的配合
开启 HSTS 之后,浏览器会强制用 HTTPS 访问,但蜘蛛是否遵循 HSTS 并不统一。如果同时设置了 includeSubDomains,而池子里恰好有只支持 HTTP 的二级域名,就可能出现无法访问的情况。更稳妥的做法是把所有域名都跑通 HTTPS,再考虑加 HSTS。
一个简单的自查方式:用命令行抓一次入口页,看返回码、看证书有效期、看跳转次数。能看到的问题,蜘蛛也会遇到;看不到的问题,往往就是在抓取环节暴露出来的。
接入前的自查清单
- 80 与 443 端口都通,且 80 有明确的跳转或返回。
- 证书有效期至少留出一个月以上,并设置续期提醒。
- 证书链完整,用工具验证一遍,不要只看浏览器绿锁。
- 入口页最终 URL 与对外给出的 URL 完全一致,跳转不超过一跳。
- 模板里的内链统一用相对协议或 https,避免写死 http。
- 池子里每个域名都单独验证一次,泛解析新增的域名不要漏。
HTTPS 配置不会带来额外的抓取量,但它决定了已有的抓取机会能不能落地。对蜘蛛池这种依赖批量域名的场景来说,把协议和证书做成一条固定流程,比事后逐个域名排查要省事得多。