浏览器把完整网页保存成单个文件时,经常会生成 .mhtml.mht。这个文件不是截图,也不是普通 HTML,而是一份 multipart/related MIME 归档:HTML、样式表、图片和字体可能都作为独立分段放在同一个文件里。

直接双击通常会交给 Chrome 或 Edge 打开,但如果文件来自陌生邮件,或者你想先确认里面打包了哪些资源,直接渲染并不是唯一选择。MHTML 网页归档查看器会在浏览器本地解析归档,禁用脚本后预览页面,并列出可单独提取的图片、CSS 和其他 MIME 内容。

MHTML 怎样把一个网页装进单个文件#

归档根部通常声明一个 boundary。文件里的每一段都带有自己的 Content-TypeContent-Location、编码方式,有些还会使用 Content-ID。HTML 中原本指向网络地址的图片和样式,会通过这些位置重新关联到归档内资源。

解析时最重要的对应关系包括:

  • 根 HTML 是哪一个 MIME 分段;
  • Content-Location 对应原网页或资源的哪个 URL;
  • cid: 引用对应哪个 Content-ID
  • 内容使用 Base64、Quoted-Printable 还是普通文本编码;
  • 相对路径应以哪个原始页面地址为基准。

所以,把 .mhtml 后缀直接改成 .html 通常没有用。浏览器只会看到 MIME 边界和编码文本,图片也不会自动恢复。

为什么预览时要拦截脚本和外部请求#

归档页面仍然是 HTML。它可能包含脚本、表单、iframe、事件属性、外部图片、追踪链接或远程样式。如果预览器原样执行,打开一份离线文件也可能向外部网站发送请求,甚至运行归档时保存下来的交互代码。

本地查看器会移除脚本、表单、iframe、对象和可执行嵌入,把能够确认来源的图片与样式转换成本地数据后再放进预览。找不到、体积过大或类型不安全的引用会被拦截,并在页面上给出数量提示。

这种处理适合阅读和检查,不等于病毒扫描。下载出来的脚本、Office 文件、可执行程序和未知二进制,仍然需要根据来源另行判断,不能因为预览页面没有弹窗就认定安全。

一套实际的打开和提取顺序#

先选择 MHT 或 MHTML 文件。解析完成后,先看归档标题、原始页面地址、MIME 分段数量和警告,再打开安全预览。

如果页面缺图,不要立即认为文件损坏。切换到资源列表,检查对应图片是否真的存在,以及它记录的 Content-Location 是否能与 HTML 引用匹配。需要交给别人时,可以:

  1. 单独下载原始 HTML;
  2. 选择需要的图片、CSS 或附件;
  3. 导出资源清单 JSON,保留类型、大小和原始位置;
  4. 将选择的资源打包成 ZIP。

提取后的 HTML 不一定能脱离原 MHTML 独立显示。它里面可能仍保留原始 URL 或 cid: 引用;如果要重建成普通离线网站,还需要重新组织目录并改写资源路径。

乱码和缺少样式通常从哪里来#

MHTML 可能同时涉及邮件头编码、MIME 分段编码和 HTML 自身字符集。旧版浏览器或办公软件保存的文件,还可能使用 GBK、Windows-1252 等编码。只用一种 UTF-8 解码方式读取整个文件,很容易让标题正常、正文却乱码,或者反过来。

缺少样式的常见原因则包括:

  • 保存网页时资源还没有加载完成;
  • 页面使用跨域字体、延迟图片或脚本动态生成内容;
  • CSS 通过外部 @import 再加载其他文件;
  • 归档记录的是重定向前后不同 URL;
  • 浏览器没有把视频、Canvas 或受保护资源封装进去;
  • 文件经过邮件系统二次编码或截断。

查看器会尽量匹配 Content-Locationcid:,但无法凭空恢复归档里根本不存在的资源。需要忠实保存复杂交互页面时,MHTML 本身就可能不是最佳格式。

MHTML 不等于网页真实性证明#

MHTML 适合留存一个“当时看见的页面副本”,但文件内容可以被修改,时间和来源头也不天然可信。它不能单独证明某个网站在某时确实发布过这些内容。

重要归档应保留原文件,并用 Hash 校验工具记录 SHA-256。需要可审计的网页证据时,还应配合可信时间戳、HTTP 响应记录、WARC 归档、屏幕录像或第三方存证服务。

如果只是想把页面发给同事阅读,PDF 或完整页面截图可能更稳定;如果要继续编辑页面,保存 HTML 与资源目录通常更方便;如果要研究网络请求,则应该保留 HAR,而不是只看 MHTML。

总结#

MHTML 的优势是把一页网页收进单个文件,问题也来自这里:HTML、编码、资源路径和安全边界全混在一个 MIME 容器中。

合理的处理方式是先解析结构,再禁脚本预览,随后按需提取资源,同时保留原归档。把它当作方便的离线副本,而不是天然可信、完整无缺的网页证据,判断会更准确。