
Monolith 单文件保存网页详解把整个网页存进一个 HTML5 条命令上手【免费下载链接】monolith⬛️ CLI tool and library for saving complete web pages as a single HTML file项目地址: https://gitcode.com/GitHub_Trending/mo/monolith用浏览器另存为网页多半存下一个 HTML 加一堆散落的资源文件换台机器打开就图片缺失、排版错乱wget虽然能递归抓取却留下一整个目录树分发和归档都很麻烦。Monolith是一个 Rust 编写的命令行工具把网页连同 CSS、图片、JavaScript 一起嵌入输出一个可离线打开的单文件 HTML——断网双击页面和线上一模一样。_____ _____________ __________ ___________________ ___ | \ / \ | | | | | | | \/ __ \| __ \| | ___ ___ |__| | | | | \ | | | | ___ ___ | | | | |\ /| |__| \__| \___| \___ \___ |__|/ | | | \__/ | |\ | | | | | | | |___| |__________| \___________________|___|___|___|___|_/_|安装 Monolith跨平台任选其一各平台都有官方安装渠道macOS 用 HomebrewArch、Alpine、Void 等 Linux 发行版各有包管理器Windows 可选 Chocolatey 或 Scoop通用方案是 Cargocargo install monolith从源码构建需要先装libssl和 Rust 工具链仓库提供 Makefile执行make install即可发布版本还附带 Windows 与 ARM 架构的预编译二进制。基础用法一条命令保存完整网页核心用法就是给一个 URL 加一个输出文件名monolith https://example.com -o example.html输出文件名还支持%title%和%timestamp%占位符批量保存同一网站时能自动按页面标题加时间戳命名不会互相覆盖monolith https://news.ycombinator.com -o %title%.%timestamp%.htmlMonolith 常用参数速查表高频参数集中在几类取舍上按需组合参数作用-I隔离文档移除外部链接与脚本页面只依赖自己携带的资源-e忽略网络错误部分资源下载失败也继续保存-B/-d配合域名列表做黑名单 / 白名单控制从哪些域名抓资源-i/-c/-j分别去掉图片、CSS、JavaScript换更小的文件-f/-F/-a/-v去掉框架、Web 字体、音频、视频-n展开 NOSCRIPT 元素内容保留不执行 JS 时显示的替代文字-m输出 MHTML 格式不支持内嵌 JS适合邮件附件-C从 Netscape 格式 cookie 文件读取登录态-b指定 base URL处理相对链接配合标准输入时使用-u/-t自定义 User-Agent / 单个资源的网络超时默认 120 秒其中-I和-e最常用前者让归档文件彻底不请求外网后者容忍个别 404 资源保证整页流程不被打断。实战场景批量、动态页与登录页批量归档可以写成几行脚本按 URL 哈希命名避免文件名冲突while read url; do monolith -I -e $url -o saved/$(echo $url | md5sum | cut -d -f1).html done urls.txtMonolith 不带 JS 引擎内容靠接口异步渲染的页面需要无头浏览器先把 DOM 跑完再交给它整理资源chromium --headless --dump-dom https://example.com | monolith - -I -b https://example.com -o example.html-b在这里不能省管道传进来的 HTML 没有原始上下文相对路径的资源全靠它解析出完整 URL。需要登录的页面有两条路。HTTP Basic 认证直接写在 URL 里SPA 式的会话登录则导出浏览器 cookiesNetscape 格式用-C传入monolith https://username:passwordexample.com -o auth.html monolith https://private.example.com -C cookies.txt -o page.html另外两个实用细节-m可输出 MHTML会强制去掉 JS适合发邮件附件遇到字符集识别异常时用-E UTF-8强制指定编码再保存。它是怎么做到一个文件的Monolith 的工作流程可以概括为解析 DOM → 遍历每个资源引用点 → 抓取资源 → 改写为 data URL 回填。图片、音视频经 base64 转成 data URL 写回对应属性JS、JSON 等文本类资源直接内联进文档style和外部样式表里的url()、import会被递归展开字体文件同样内联。重复资源走磁盘缓存避免重复下载。实现是 Rust 的src/core.rs 编排整个流程src/html.rs 负责 DOM 遍历与属性改写src/css.rs 展开样式中的资源引用src/url.rs 处理 URL 解析与 data URL 生成src/session.rs 管网络请求src/cache.rs 管磁盘缓存。tests/目录下的集成测试覆盖了 CSS 嵌入、数据 URL、SRI 校验、GBK/ISO-8859-1 编码等边界场景可以当作行为参考。一句话总结monolith 把一个页面压成一个文件。无论是归档论文网页、保存临时公告还是给同事发离线可开的页面它都比重复开十几个标签页再逐个截图靠谱得多。【免费下载链接】monolith⬛️ CLI tool and library for saving complete web pages as a single HTML file项目地址: https://gitcode.com/GitHub_Trending/mo/monolith创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考