
如何把整个网页保存成单个 HTML 文件Monolith 离线归档工具入门【免费下载链接】monolith⬛️ CLI tool and library for saving complete web pages as a single HTML file项目地址: https://gitcode.com/GitHub_Trending/mo/monolithMonolith 是一个用 Rust 编写的命令行工具能把一个网页连同它的 CSS、图片和 JavaScript 一起保存成单个 HTML 文件。读完这篇你就不必再对着满屏标签页发愁——无论离线阅读还是归档备份一个 .html 文件就能装下整页内容。为什么另存为网页总是不够用浏览器自带的另存为网页往往会漏掉一部分资源样式是外部的图片还是远程地址换个设备或断网打开页面就残了。用wget -mpk抓站则会留下一堆零散目录而不是一个可以直接发出去的文件。Monolith 的思路是把页面引用的所有资源都下载下来转成 data URL 内嵌进 HTML。这样得到的文档不依赖原始服务器离线时也能在浏览器里原样渲染。项目主体逻辑在 src/core.rs网络会话管理在 src/session.rs。Monolith 生成的单文件里有什么页面本身完整的 HTML 结构编码会被识别并尽量保留。内嵌资源CSS、图片、字体、脚本等被转成 base64 data URL 写进文档不再指向网络。元信息默认会写入来源 URL 和保存时间戳方便日后追溯不想留痕可以用-M去掉。它还能把同一域名下重复出现的资源做本地缓存避免重复下载这部分逻辑见 src/cache.rs。输出默认是 HTML加-m可以换成 MHTML 格式该格式不支持脚本。三步保存你的第一个网页安装 monolith各平台都有现成渠道挑一个最顺手的即可跨平台通用的是 Cargocargo install monolith偏好包管理器的也可以用brew install monolith、choco install monolith或snap install monolith。想从源码构建时依赖libssl与cargogit clone https://gitcode.com/GitHub_Trending/mo/monolith cd monolith make install运行保存命令把目标网址交给 monolith用-o指定输出文件monolith https://example.com -o example.html加上-I能把文档与外网隔离让保存下来的页面不再向网络发起请求配合-q安静运行monolith -I -q https://example.com -o example.html离线打开结果文件把生成的 .html 拷到任意设备、拔掉网线双击打开页面应当和在线时一致。默认输出路径支持%title%、%timestamp%等占位符批量保存时特别好用。常用参数速查过滤与编码去掉不需要的资源按需裁剪可以显著减小体积。参数都是排除语义-c去 CSS、-i去图片、-j去脚本、-a去音频、-v去视频、-F去字体、-f去框架。monolith -i -a -v -F https://example.com -o example-light.html也可以用-d白名单只允许特定域名或用-B配合-d把指定域名拉黑monolith -I -d example.com -d www.example.com https://example.com -o example-only.html指定基础 URL 与编码处理本地 HTML 或管道输入时用-b告诉 monolith 相对链接该往哪儿解析-E可强制指定字符集遇到乱码页面时很有用cat page.html | monolith -b https://some.site/ - -o page.htmlmonolith -E UTF-8 https://example.com -o example.html其余细节比如超时-t、User-Agent-u、跳过证书校验-k、从文件读 Cookie-C都可以用monolith -h查看完整列表。进阶玩法动态页面、登录页和批量存档抓取 JS 渲染的页面monolith 本身不带 JavaScript 引擎首次加载后靠脚本才出现的内容它抓不到。这时可以让 Chromium 无头模式先把 DOM 渲染出来再喂给 monolithchromium --headless --dump-dom https://example.com | monolith - -b https://example.com -o example.html保存需要登录的内容支持 HTTP 基本认证直接写在 URL 里monolith https://user:passexample.com -o auth.html需要更复杂的会话时可以用-C cookies.txt从文件加载 Cookie格式由 src/cookies.rs 定义。批量保存多个网址把 URL 一行一个写进urls.txt用循环逐个保存并按哈希命名while read -r url; do monolith $url -I -o archive/$(echo $url | md5sum | cut -d -f1).html done urls.txt常见问题排查保存的文件打不开或缺资源时先确认目标站点是否返回了非标准编码或需要认证个别资源 404 属正常加-e忽略网络错误继续完成整体保存。动态页面少了东西通常是因为没有 JS 引擎回到上一节用无头浏览器预渲染即可。中文显示为乱码时用-E UTF-8强制编码再试。这套参数和组合方式都经过 tests/ 下多组用例覆盖从基础页面到异常编码、内联 SVG、integrity 校验都有对应用例改动行为前可以先跑一遍测试确认预期。【免费下载链接】monolith⬛️ CLI tool and library for saving complete web pages as a single HTML file项目地址: https://gitcode.com/GitHub_Trending/mo/monolith创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考