蜘蛛池入口页现在基本都跑在 HTTPS 上,证书这件事也因此常被当成“配好就不用再管”的一次性工作。但证书一旦出问题,蜘蛛的访问路径会立刻改变——它不会像浏览器那样弹一个“继续访问”的按钮让你点。
蜘蛛遇到证书问题时的几种反应
浏览器的容错能力比爬虫强得多,这中间的差距就是很多配置事故的来源。
- 证书过期或域名不匹配:多数搜索引擎爬虫会直接放弃这次访问,连接在握手阶段就断掉,你在访问日志里连一条记录都看不到。
- 中间证书缺失:部分浏览器能靠缓存或补链机制蒙混过关,爬虫通常不行。表现是“自己能打开,蜘蛛不来”。
- 页面内的混合内容:HTTPS 页面里引用 HTTP 的脚本或图片,页面本身还能被请求,但渲染后的内容可能残缺。
- 协议版本不匹配:只开 HTTP/2 而上游客户端只支持 HTTP/1.1 时,也可能出现握手后的异常断开。
多域名场景下的证书覆盖
蜘蛛池通常是一批域名同时在线,证书怎么覆盖直接决定了后续维护成本。
- 单域名证书:适合入口页数量少、域名固定的情况,域名一多就会变成流水线作业。
- 多域名(SAN)证书:一张证书覆盖多个域名,注意大部分 CA 对 SAN 数量有上限,且新增域名往往要重新签发。
- 泛域名证书:能覆盖同一主域下的所有子域,适合用子域做入口页的结构,但不覆盖不同主域。
选哪种不取决于“高级不高级”,而取决于你新增域名的频率和续期时能承受的操作量。
续期与自动化
证书过期是最容易避免、也最容易发生的问题。自动续期能解决大部分情况,但自动续期本身也会失败。
- 续期验证方式要固定下来:DNS 验证受解析变更影响,文件验证受目录权限和跳转规则影响。
- HTTP 验证的域名如果被整体 301 到 HTTPS,验证路径要单独放行,否则验证请求会被跳走。
- 续期成功后确认服务是否重新加载了证书,有些环境只是文件更新了,进程还在用旧的。
- 额外挂一个到期提醒,不要只依赖自动续期的成功日志。
HTTP 到 HTTPS 的跳转安排
跳转本身不复杂,麻烦的是跳转链条过长或者出现环。
- 尽量一步到位:HTTP → HTTPS 一次 301,不要中间再经过一个测试域名或带 www 的中间态。
- 检查两个协议下的入口是否都能正常返回,避免其中一个直接 5xx 或者指向一个空目录。
- HSTS 要谨慎下发。它一旦生效,回退到 HTTP 的成本很高,测试阶段不建议开启。
证书和跳转属于“平时没人看、出事全站受影响”的配置,适合放进例行巡检,而不是等抓取量下滑了再回头查。
几个看起来正常、实际有问题的配置
- 证书链不完整:本地浏览器补齐了中间证书,所以显示正常,但爬虫拿到的链是断的。
- SNI 分流:服务器按 SNI 返回不同证书,默认站点的证书和入口域名对不上,访问就会失败。
- CDN 边缘正常、回源走 HTTP:外部看没问题,回源链路上的异常在入口日志里看不到。
- 证书 SAN 漏了某个入口域名:批量接入时最容易漏,尤其是后补的域名。
一份可执行的排查清单
- 用命令行工具查看完整的证书链,确认中间证书有没有下发。
- 核对有效期和 SAN 列表,逐个入口域名对一遍。
- 分别请求 HTTP 和 HTTPS 两个入口,确认返回码、跳转次数和最终落点一致。
- 检查页面里是否还有 HTTP 资源引用,尤其是脚本和样式。
- 在服务端日志里找握手失败、连接重置一类记录,和抓取量的变化对齐看。
证书配置不会直接带来抓取,它只负责把“门”开着。把这一步做稳,至少能排除掉一批无从查起的抓取异常。