站点装好證书、地址栏挂上小鎖,很多人就認為 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,配置出错时回退比較麻烦,啟用前先确保全站资源都已就绪。
這些检查單次成本不高,但拖久了會變成“這個站看起来不太靠谱”的印象,也會让蜘蛛在抓取时留下額外的失敗记錄。把它当成和备份、日誌一样的基础巡检項目,比出事之後再补救省事得多。