站点运营的日常检查,大多集中在内容、内链、站点地图这些看得见的部分。但蜘蛛第一步要做的,其实是和服务器完成一次 HTTPS 握手。证书过期、证书链不完整、页面里混着 HTTP 资源,都可能让抓取在拿到 HTML 之前就断掉。这类问题不常发生,一旦发生,影响面却往往是全站性的。
一、先看证书本身能不能握手成功
证书问题属于基础设施层面,排查起来不复杂,但需要一次性把几个点都确认掉,而不是等到浏览器弹出警告才想起来。
- 有效期:确认到期时间并设置提前提醒。用了自动续期,也要定期验证是否真的续上了。
- 证书链完整性:中间证书缺失时,部分客户端(包括一些抓取程序)会直接握手失败;浏览器因为缓存了中间证书,反而可能看不出问题。
- 域名覆盖:主域、带 www 的版本、常用的子域是否都在证书的 SAN 列表里。某个子域没被覆盖,蜘蛛访问时就会报错。
- 协议与加密套件:过老的 TLS 版本可能被现代客户端拒绝,建议只保留较新的版本。
- 多节点一致性:有 CDN 或多台服务器时,确认每个节点上的证书都是最新的,避免部分请求成功、部分失败。
检测方式不必复杂。用命令行工具看一次证书链,或者用在线检测查看完整握手过程,通常几分钟就能有结论。
二、混合内容:页面是 HTTPS,资源却不是
页面地址是 https,但里面的图片、脚本、样式、iframe 仍然用 http 加载,这就是混合内容。对蜘蛛来说,它可能只拿到主体 HTML,而样式、脚本、图片全部加载失败——渲染出来的结果和真实页面完全不是一回事。
两类混合内容
- 被动混合内容:图片、音视频一类。浏览器通常会加载,但会给出不安全提示。
- 主动混合内容:脚本、样式、iframe、异步请求。这类通常会被直接拦截,页面行为随之改变。
怎么把它们找出来
- 打开浏览器开发者工具的控制台,看是否有混合内容警告,同时在网络面板里看哪些请求被标记为不安全。
- 在页面源码里搜索 http 开头的资源地址,注意那些写死的绝对路径。
- 检查模板、第三方组件、CDN 引用、广告位脚本——这些地方最容易残留 http 地址。
- 把关键页面交给渲染型抓取工具跑一遍,对比渲染前后的差异,缺资源的地方通常一眼就能看出来。
- 站点规模大时,用爬虫工具全站扫描,按资源类型汇总一份清单。
修复思路很直接:能改成 https 的就改,不能改的(第三方只提供 http)就考虑替换或本地托管。相对路径在 HTTPS 页面里一般不会出问题,但写死绝对地址的地方要特别留意。
三、跳转和协议要保持一致
协议层面的另一类隐患是跳转逻辑混乱。常见情况包括:http 版本没有 301 到 https,或者反过来从 https 跳回 http;www 与裸域之间来回跳;一条链接要经过三四次跳转才到终点。
- 选定一个规范协议和主机形式,其余全部 301 指向它,并且只跳一次。
- 站内链接、站点地图、canonical 标签统一使用最终地址,不要一半写 http、一半写 https。
- 确认 HSTS 设置与当前状态匹配,开启前先确保全站 HTTPS 已经稳定运行。
四、这些问题会怎样反映在抓取上
证书或协议出问题时,抓取日志里通常会出现几类信号:连接被重置、握手超时、成规模的 5xx 或异常状态码、同一批 URL 反复失败。这时不要急着怀疑蜘蛛不来,先按上面的顺序把连接层面排查一遍。
另一个容易忽略的点是,抓取失败会占用抓取预算。同一个地址反复尝试失败,蜘蛛花在正常页面上的时间自然就少了。
五、简版自查清单
- 证书是否在有效期内,证书链是否完整。
- 所有需要被访问的域名是否都在证书覆盖范围内。
- HTTPS 页面中是否还有 http 资源引用。
- http 到 https 是否一次 301 到位,没有反向跳转。
- 内链、站点地图、canonical 是否统一了协议和主机形式。
- 抓取日志里是否出现成规模的握手失败或异常状态码。
基础设施类的问题不需要天天看,但值得按固定周期巡检一次。它不像内容那样能天天带来变化,却决定了其他优化有没有被看到的前提。
把 HTTPS 和混合内容纳入常规自查,成本不高,收效比较稳。与其等浏览器弹出警告、抓取出现异常再去补救,不如提前把这几项确认掉。