news 2026/9/11 17:34:33

monolith 单文件网页 在 命令行 上的落地实战:4 步从零到离线可用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
monolith 单文件网页 在 命令行 上的落地实战:4 步从零到离线可用

monolith 单文件网页 在 命令行 上的落地实战:4 步从零到离线可用

【免费下载链接】monolith⬛️ CLI tool and library for saving complete web pages as a single HTML file项目地址: https://gitcode.com/GitHub_Trending/mo/monolith

monolith 把任意网页连同 CSS、图片和 JavaScript 内嵌成单文件网页,断网也能原样打开。装好环境执行一条命令,就得到一个自包含的离线快照,还能用仓库自带的本地测试页当场验证效果。

🧩 它能做什么

浏览器的「另存为」只存当前文档,CSS 和图片散落在别的目录里。wget -mpk能把整站目录抓下来,可页面一断网,图片就裂开、样式就丢失。monolith 换了个思路:它把文档里引用的每个资源都下载下来,编码成 data URL 直接写回 HTML,最终只产出一个 HTML5 文件。这个文件拷到任何机器、任何浏览器都能渲染,不依赖网络,也不用维护一堆散件。

monolith 由 Rust 写成,单二进制分发,跨 Linux、macOS、Windows 通用。它没有内置 JS 引擎,纯静态资源最见长;动态渲染页需要额外处理,后面会讲。

📦 动手前:安装与环境

项目最低推荐
操作系统GNU/Linux / macOS / Windows同左,全平台
CPU 架构x86_64 或 ARMx86_64
内存1 GB4 GB
磁盘200 MB1 GB

monolith 从源码编译,产物是单个二进制,不依赖额外运行时库。下面三步从拉取到安装。

# 拉取 monolith 源码(含离线测试数据) git clone https://gitcode.com/GitHub_Trending/mo/monolith cd monolith
# 编译 CLI 与 GUI,产物在 target/debug make build
# 安装到 ~/.cargo/bin,之后可直接调用 monolith make install

30 秒验证,期望输出monolith 2.11.0

monolith -V

🗂️ 数据与参数准备

先跑通,再换自己的目标。推荐用仓库自带本地页,不占网络、结果稳定,方便确认内嵌是否生效。

  1. 用自带本地页:tests/_data_/basic/local-file.html,断网可验证。
  2. 换成线上页面:把 URL 作为目标参数即可。
  3. 要保存登录态页面时,先导出 cookies 文件备用。
参数改成什么为什么
-o输出文件路径指定快照落盘位置,支持%title%占位
-b页面真实地址本地文件里相对资源靠它定位
-I加或不加隔离文档,防止保存后再发网络请求

⚙️ 核心执行流程

按「准备 → 启动 → 观察 → 收尾」走一遍,全程不到一分钟。

准备一个可保存的目标

目标可以是 URL,也可以是本地 HTML 文件。本地文件适合离线验证,不受网络波动影响。先确定目标,记下它的真实地址;本地文件就记它所在的目录。

执行 monolith 保存命令

# 保存为单文件 HTML,-I 隔离文档,-o 指定输出 monolith -I -o basic.html tests/_data_/basic/local-file.html

线上页面同理,把目标换成 URL 即可。常用开关还有-c/-i/-j去 CSS、图、JS,-d白名单域名,-F去字体。

观察抓取日志

monolith 每抓到一个资源,就在 stderr 打印它的 URL。保存成功时,你会看到目标文档连同它引用的 CSS、图片逐行列出。加-q可静音。

收尾:核对单文件网页产物

产物是一个.html文件,所有资源已内嵌,离线打开即可核对。想接纯 JS 渲染的页面,monolith 不带 JS 引擎,可让 headless 浏览器先渲染出 DOM 再管道进来:

chromium --headless --dump-dom https://spa.example.com \ | monolith - -I -b https://spa.example.com -o spa.html

✅ 验证与调优

跑完之后,依次做这三件事。

① 确认产物自包含,外部引用应为 0:

grep -o 'src="http[^"]*"' basic.html | wc -l

期望值是 0,说明没有残留外链。

② 统计内嵌资源,data URL 数量应接近页面资源总数:

grep -o 'data:' basic.html | wc -l

③ 换 MHTML 归档,需要邮件格式时加-m

monolith -m -o archive.mhtml https://example.com

要回归测试改动,用cargo test跑仓库自带用例,它覆盖 CSS 内嵌、data URL、noscript、非常规编码四类场景。

🛠️ 踩坑速查

  • 纯 JS 页面存下来是空壳→ 无 JS 引擎 → headless 浏览器预渲染后管道给 monolith
  • 本地文件图片没内嵌→ base URL 缺省 → 加-b指向页面真实地址
  • 登录页资源 403→ 请求没带 cookie → 用-C cookies.txt传入
  • 自签证书站点报 TLS 错→ 证书校验失败 → 加-k接受无效证书
编译方式说明
make install(vendored OpenSSL)静态链接 OpenSSL,免系统依赖、避版本冲突

📁 项目速览

monolith/ ├── src/ # CLI 与库源码,core.rs 是保存主流程 ├── tests/_data_/ # 离线样例页,跑验证用 ├── snap/ # Snap 打包配置 ├── Cargo.toml # 依赖与 feature 定义 └── Makefile # build / install / test 入口
  • 保存主流程
  • 命令行入口
  • 本地测试页

到这里,能断网打开的 monolith 单文件网页快照已在你的机器上跑通。

  • -d/-B收放资源域名
  • 接上 MHTML 归档格式
  • 把 headless 渲染接进管道

以上内容基于 monolith v2.11.0,命令与路径如有变动以仓库为准。

【免费下载链接】monolith⬛️ CLI tool and library for saving complete web pages as a single HTML file项目地址: https://gitcode.com/GitHub_Trending/mo/monolith

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 17:32:05

西安旅游系统:SpringBoot+Vue全栈实战与生产部署

简介:本资源是一套完整可用的高分本科毕业设计项目——基于JavaSpringBootVueMySQL的西安旅游系统,面向计算机专业本科生及Web开发初学者,解决旅游信息管理与前后端综合实践教学需求,适用于毕设、课程设计及全栈开发入门训练。压缩…

作者头像 李华
网站建设 2026/9/11 17:26:40

智能反射面中交替优化的原理与MATLAB工程实现

简介:本资源是一份面向通信工程与机器学习方向研究者的交替优化算法实现代码,聚焦智能反射面(SRS)被动波束成形与基站主动波束成形的联合优化问题,适用于无线通信系统性能提升、信号处理课程设计及优化算法实践。压缩包…

作者头像 李华
网站建设 2026/9/11 17:23:44

2026年7月上海市崇明区二手房价格深度分析报告

一、报告摘要本报告基于2026年7月上海市崇明区实际成交案例,从成交价格、成交结构、区域分化、购房成本与市场趋势五个维度展开深度分析。数据显示,2026年7月崇明区二手房成交均价约为2.35万元/平方米,环比上涨1.2%,同比上涨3.8%。…

作者头像 李华