Chrome支持将网页保存为MHTML文件,方法有四:一、启用chrome://flags/#save-page-as-mhtml标志后通过“另存为”导出;二、通过远程调试接口调用Page.captureSnapshot命令导出;三、安装MHTML Save或SingleFile扩展一键保存;四、用PowerShell结合Selenium自动化批量保存。

如果您希望在没有网络连接的情况下查看某个网页,或者需要将网页内容完整归档以备后续查阅,Chrome 浏览器支持将整个网页(含图片、CSS、JS 等资源)打包保存为单个 MHTML 文件。以下是实现该操作的具体方法:
一、使用 Chrome 原生“另存为”功能导出 MHTML
Chrome 自带的“另存为”选项默认不显示 MHTML 格式,但可通过启用实验性标志(flags)激活该功能。启用后,用户可在右键菜单或地址栏右侧的“更多”按钮中调出 MHTML 保存选项。
1、在 Chrome 地址栏输入 chrome://flags/#save-page-as-mhtml 并回车。
2、在搜索框中输入 save-page-as-mhtml,找到对应实验性功能。
立即学习“前端免费学习笔记(深入)”;
3、点击右侧下拉菜单,选择 Enabled。
4、点击页面右下角的 Relaunch 按钮重启浏览器。
5、重新打开目标网页,点击右上角三点菜单 → 另存为 → 在保存类型下拉框中选择 Web 档案(.mhtml) → 指定路径并点击保存。
二、通过开发者工具手动触发 MHTML 导出
当原生“另存为”未显示 MHTML 选项,或需批量保存多个标签页时,可借助 Chrome 的开发者工具协议接口,通过命令行方式强制导出当前页面为 MHTML 文件。此方法无需修改 flags,适用于已启用远程调试端口的环境。
1、关闭所有 Chrome 实例,然后以命令行方式启动 Chrome,并启用远程调试端口:chrome.exe --remote-debugging-port=9222 --no-first-run --no-default-browser-check(Windows)。
2、确保目标网页已加载完成并处于活动标签页。
3、使用 curl 或 Postman 向调试接口发送 POST 请求:http://localhost:9222/json 获取当前页面的 WebSocket 调试 ID。
4、向该页面的 DevTools 协议端点发送 Page.captureSnapshot 命令,获取 Base64 编码的 MHTML 内容。
5、将返回的 Base64 字符串解码并写入本地文件,扩展名设为 .mhtml。
三、安装支持 MHTML 导出的扩展程序
部分第三方扩展可在不修改浏览器设置的前提下,一键将当前页面保存为 MHTML 文件。这些扩展直接调用 Chrome 扩展 API 中的 webRequest 和 tabs 权限,捕获页面全部资源并组装成标准 MHTML 格式,兼容性较好且操作直观。
1、访问 Chrome 网上应用店,搜索关键词 MHTML Save 或 SingleFile(注意:SingleFile 默认输出 HTML,需在设置中勾选 Save as MHTML)。
2、点击“添加至 Chrome”,确认权限授权。
3、刷新目标网页,在地址栏右侧出现扩展图标,点击图标后选择 Save as MHTML。
4、在弹出窗口中确认文件名与保存位置,点击保存。
四、使用 Windows PowerShell 脚本调用 Chrome 自动化保存
适用于需定时或批量处理多个 URL 的场景。脚本通过启动 Chrome 实例、注入页面加载逻辑及模拟用户操作,最终触发 MHTML 保存流程。该方式绕过图形界面交互,依赖 ChromeDriver 与 Selenium WebDriver 绑定执行。
1、下载对应版本的 chromedriver.exe 并置于系统 PATH 中。
2、在 PowerShell 中运行命令安装 Selenium 模块:Install-Module -Name Selenium -Force。
3、编写 PowerShell 脚本,使用 Start-SeChrome 启动无头 Chrome 实例。
4、调用 Invoke-SeJavaScript 执行页面加载与资源等待逻辑。
5、通过 Send-SeKeys 模拟 Ctrl+S 快捷键,并使用 AutoHotkey 或 SendKeys 库切换保存对话框选项至 MHTML 格式。











