站点装好证书、地址栏挂上小锁,很多人就认为 HTTPS 这件事已经做完了。实际上,只要页面里还混着几个 http:// 开头的图片、脚本或样式,浏览器就可能把整页标记为不安全,甚至直接拦截。对访客来说这是信任问题,对蜘蛛来说则是资源抓取和渲染的不确定性。
什么是混合内容
简单说,就是 HTTPS 页面里引用了 HTTP 资源。浏览器按风险大致分两类:
- 被动型:图片、视频、音频等。多数浏览器目前会放行,但地址栏的锁会变成“不安全”提示。
- 主动型:脚本、样式表、iframe、字体、XHR 请求等。这些会被直接拦截,页面样式错乱、功能失效都可能由此而来。
被动内容不等于没有风险,图片和脚本都可能被中间人替换,只是触发拦截的门槛不同。
怎么找出页面里的混合内容
- 用浏览器开发者工具打开控制台,刷新页面,看有没有 Mixed Content 字样的告警,告警里通常带具体资源地址。
- 在 Network 面板按协议筛选,或直接搜索 http:// 开头的请求。
- 抓取几类典型页面:首页、栏目页、文章详情页、搜索结果页、带表单的页面。不同模板引入的资源往往不一样。
- 把问题地址整理成清单,标出它出现在哪个模板里,方便一次改一片。
如果站点页面很多,可以先用爬虫工具整站跑一遍,导出所有非 https 的资源引用,再按模板归类。人工一页页翻,很容易漏掉只在某篇旧文章里出现过一次的图片。
常见来源与修复思路
历史内容里的硬编码链接
早期发布的文章里,图片和附件地址常常是写死的 http 链接。数据库里做一次批量替换通常最快,但替换前务必备份,并确认目标站点的 https 版本确实可以正常访问。
第三方脚本与组件
统计代码、客服插件、评论系统、广告位,这些外部资源如果只提供 http 地址,就会持续报错。优先换成对方提供的 https 版本;如果对方不支持,就需要评估是否值得继续使用。
相对协议与配置遗漏
把资源写成 //example.com/a.js 这类相对协议是旧习惯,现在更建议直接写全 https。还要检查反向代理、CDN 和站内搜索的配置,有时后端返回的资源地址仍按 http 生成。
证书本身的问题
证书过期、域名不匹配、只签了主域名却用 www 访问,都会触发警告。建议记录到期时间,提前一到两周续期;有多台服务器或 CDN 节点时,确认证书在每一处都已更新。
把自查做成例行动作
- 每季度至少整站扫一次混合内容,模板或插件升级后再补一次。
- 把证书到期监控加进告警,别等访客看到警告才知道。
- 新页面发布前,在控制台确认没有新增告警。
- 关注 HSTS:开启后浏览器会强制走 https,配置出错时回退比较麻烦,启用前先确保全站资源都已就绪。
这些检查单次成本不高,但拖久了会变成“这个站看起来不太靠谱”的印象,也会让蜘蛛在抓取时留下额外的失败记录。把它当成和备份、日志一样的基础巡检项目,比出事之后再补救省事得多。