现在做站,HTTPS 基本是默认选项。但对蜘蛛池来说,证书不只是安全标识这一层——如果 TLS 握手都完成不了,蜘蛛拿到的不是页面内容,而是一次连接失败。入口页再漂亮,也等于没被访问过。
证书出问题时,蜘蛛看到的是什么
需要先明确一点:蜘蛛抓取走的是和浏览器一样的 HTTPS 请求。如果证书不被信任,多数抓取客户端会直接中断连接,不会像人一样点一下继续访问。所以证书问题不是体验差一点,而是直接阻断。
常见表现是:入口页在浏览器里能打开(因为你手动忽略了警告),但日志里几乎看不到蜘蛛的访问记录,或者只有零星几次失败请求。
几类高频问题
- 证书过期:最常见的低级错误。免费证书三个月一续,自动化续期脚本挂了、域名解析换了、服务器迁移了,都会导致续期失败。
- 域名不匹配:证书只签了 aaa.com,你却用 www.aaa.com 或某个子域名去接蜘蛛,主机名对不上。多域名铺开时尤其容易漏。
- 中间证书缺失:浏览器可能靠缓存补齐,抓取客户端不一定有这个容错,于是出现部分客户端能连、部分不能连。
- 自签名证书:测试环境图省事用了自签,结果这套配置被带到线上。
- TLS 版本过旧:只支持很老的协议版本,较新的抓取客户端可能直接拒绝握手。
混合内容:页面是 HTTPS,资源却是 HTTP
证书没问题,也不代表就没事。如果 HTML 走 HTTPS,但里面引用的 CSS、JS、图片是 HTTP 地址,浏览器会拦截或警告,抓取端的情况则更不确定——可能拿到的页面结构不完整,也可能某些资源请求被直接掐断。
对入口页来说,正文和链接是核心,图片样式影响相对小。但如果链接是由 JS 负责输出的,混合内容就可能让蜘蛛看不到本该出现的 URL。
HTTP 跳转与 HSTS 的处理
如果还保留着 HTTP 到 HTTPS 的跳转,要确认跳转是 301、只跳一次、且目标地址本身证书正常。多层跳转,或者跳到另一个有问题的域名,会白白消耗抓取次数。
开了 HSTS 之后,浏览器会强制走 HTTPS,但抓取端未必完全遵守。所以别指望 HSTS 帮你兜底,证书本身该修还得修。
排查顺序建议
- 用命令行工具(例如 openssl s_client 或 curl -v)直接看握手过程和证书链,而不是只看浏览器地址栏的小锁。
- 确认证书覆盖的域名列表,把蜘蛛池实际使用的域名逐个对一遍。
- 检查证书到期时间,以及自动续期任务是否真的在执行。
- 随机抽几个入口页,看看页面里引用的资源是否全部为 HTTPS 或相对协议。
- 确认 HTTP、www、非 www 之间的跳转链路足够简单清晰。
证书问题的特点是表现很安静——不是页面报错,而是蜘蛛干脆不来。所以它更适合放进定期巡检,而不是等发现收录不动了再去翻。
一点使用建议
如果蜘蛛池铺开的域名较多,建议把证书到期时间、域名覆盖范围做成一张表,纳入固定巡检。批量部署时用同一套配置模板,避免个别域名漏签或用了不同证书。遇到某些域名有蜘蛛、某些完全没有的情况,先查证书和握手,往往比反复改内容更快定位问题。