MHTML和SingleFile是当前最可靠的单文件网页存档方案:MHTML由Chrome/Edge/QQ浏览器支持,需启用flag,适合图片多的静态页;SingleFile扩展更全面,兼容动态内容且无需配置。

用浏览器“另存为”保存成 .mhtml 文件
Chrome、Edge、QQ 浏览器原生支持 MHTML(.mhtml),它把 HTML、CSS、图片、字体全打包进一个文件,离线双击就能打开,不用折腾路径或编码。
但 Chrome 默认关闭该功能:地址栏输入 chrome://flags → 搜索 Save Page as MHTML → 设为 Enabled → 重启浏览器。之后右键网页任意空白处,“另存为”选项里就会出现 Web Archive (.mhtml)。
注意:Firefox 不支持 MHTML;Safari 只导出 .webarchive(仅 macOS 有效,Windows 打不开)。
- QQ 浏览器开箱即用,无需改 flag
- MHTML 文件体积通常比 SingleFile 小,适合含大量图片的新闻页
- 不支持 Service Worker 和部分 WebAssembly 模块,动态交互可能失效
用 SingleFile 扩展生成单文件 HTML
SingleFile 是目前最可靠的“一键完整存档”方案,它把所有资源内联:图片转 data:image/png;base64,...,CSS/JS 直接写进 <style> 和 <script> 标签,连字体和 SVG 都不放过。
立即学习“前端免费学习笔记(深入)”;
安装后点击图标 → “Save current tab” → 自动生成一个独立 .html 文件。这个文件在任何设备上双击即可运行,不需要服务器、不依赖 file:// 协议限制(不像普通另存为会因跨域报错)。
- 对 Shadow DOM、动态渲染内容(如 React/Vue 页面)支持更好
- 可选压缩、移除广告脚本、跳过大视频等策略,避免文件过大
- 不保存
localStorage或表单状态,只存静态快照
用 curl/wget 抓取原始 HTML 源码
命令行方式拿到的是服务端返回的原始 HTML(不含 JS 渲染后的内容),适合做备份、审计或后续解析。
执行 curl -o page.html https://example.com 最简单,但默认不下载 CSS/JS/图片。若需完整资源,得加参数:
-
wget --page-requisites --convert-links --no-parent https://example.com:下载全部依赖并改写为相对路径 -
curl本身不递归,得配合htmlq或 Python 脚本二次提取资源链接再抓取 - 遇到反爬(如 403、Cloudflare)时,需加
-H "User-Agent:..."模拟浏览器
这类方法产出的是分散文件(HTML + 子文件夹),不是“Web 档案”,离线移动前必须保持目录结构完整。
保存后打不开?重点检查这三处
离线打不开最常见的原因不是保存失败,而是路径、协议或执行环境被忽略:
- 用“查看源代码”+记事本保存的文件,如果原页面用了
https://绝对路径引用资源,离线时这些请求会被浏览器拦截(file://协议下禁止跨域加载) - 开发者工具 Elements 里复制的
outerHTML是渲染后 DOM,可能含临时 ID、动态 class,且图片已变成 base64 或 blob URL,直接保存可能无法复现原样 - 某些网站靠 Service Worker 缓存资源,本地打开时 SW 试图联网更新却失败,控制台报
Failed to register a ServiceWorker—— 此时需在保存前禁用 SW(Application → Service Workers → Unregister)
真正想“永久存档”,别信“右键另存为网页,全部”,那只是幻觉。MHTML 和 SingleFile 才是当前最接近“一文件一世界”的实践路径。



















