聊蜘蛛池时,HTTPS 经常被当成一个“有就行”的开关。实际上,它不直接决定蜘蛛来不来,也不承诺收录或排名,但配置出错时,蜘蛛很可能在入口页就被拦下。批量做站时,证书、跳转和混合内容这几处最容易留下坑。
证书:过期和链不完整是高频问题
蜘蛛访问 HTTPS 页面时,会校验证书链。如果证书过期、域名不匹配,或者中间证书缺失,访问就可能直接失败。浏览器有时会给用户一个“继续访问”的选项,但蜘蛛通常不会替你做这个选择。
- 过期时间:批量域名很容易漏续期,尤其是用脚本批量签发的证书。
- 域名匹配:证书只签了主域名,入口页却用了子域名或带 www 的版本。
- 证书链完整:只部署了站点证书,没带中间证书,部分客户端会校验失败。
- 自签名证书:测试环境无所谓,正式入口页不要用。
检查时不要只看浏览器地址栏的锁图标。可以用命令行工具分别验证证书链和到期时间,再把结果和访问日志里的 TLS 错误对照。
混合内容:页面是 HTTPS,资源却走 HTTP
入口页本身用 HTTPS,但页面里引用的图片、脚本、样式或 iframe 还是 HTTP,就属于混合内容。现代浏览器对主动混合内容(脚本、样式)通常会直接阻止,被动混合内容(图片)可能降级加载或提示不安全。
对蜘蛛来说,它主要关心 HTML 能否正常获取和解析。混合内容不一定会让蜘蛛完全拿不到页面,但可能导致页面渲染不完整,或者让蜘蛛在后续抓取资源时遇到额外失败。批量模板里如果写死了 HTTP 资源地址,换域名或换协议后就很容易批量中招。
- 检查 HTML 里是否有 http:// 开头的资源引用。
- 检查 CSS 文件内部的背景图、字体地址。
- 检查 JS 动态插入的资源地址。
- 检查站点地图和 canonical 是否还在用 HTTP。
跳转:HTTP 到 HTTPS 别跳太多次
从 HTTP 跳到 HTTPS 是常见做法,但跳转方式值得留意。301 表示永久跳转,302 表示临时跳转。对入口页来说,如果确定以后都用 HTTPS,用 301 更合适;如果只是临时切换,再考虑 302。
真正容易出问题的是跳转链太长:HTTP 跳到 HTTPS,再跳到带 www 的版本,再跳到带斜杠的版本,最后才到目标页。每多一跳,蜘蛛就多花一次请求,也更容易在中间某一步超时或放弃。
建议把入口页的跳转收敛到一跳:不管用户和蜘蛛从哪个协议、哪个主机名进来,都直接跳到最终 URL。
HSTS 和 SNI:批量站点要谨慎
HSTS 会让浏览器在一段时间内强制使用 HTTPS 访问。对单站来说这是好事,但批量站点如果配错了 HSTS 头,或者某个子域名还没准备好 HTTPS,就可能把自己锁在门外。上线前最好先用较短的 max-age 观察,再逐步延长。
SNI 方面,主流蜘蛛和现代客户端基本都支持,不用过度担心。但如果你的服务器很老,或者用了某些特殊 CDN 配置,还是建议实际抓取一次确认。
日常检查:把 HTTPS 纳入巡检
HTTPS 的问题往往不是一次性出现,而是证书到期、资源替换、跳转规则调整时慢慢冒出来。可以把它放进日常巡检:
- 每周抽查一批入口页的证书到期时间和证书链。
- 每次改模板后,扫一遍混合内容。
- 用不同协议和主机名访问入口页,确认最终落到同一个 HTTPS 地址。
- 看访问日志里有没有 TLS 握手失败或 4xx/5xx 集中出现。
HTTPS 本身不会让蜘蛛多抓几页,但配置稳定、跳转干净、资源一致,至少不会让入口页在第一步就丢分。批量站点尤其要把证书续期和跳转检查做成固定动作,而不是等出问题再回头补。