monolith命令行参数全解析:从入门到进阶
你还在为网页保存不完整而烦恼?是否遇到过保存的HTML文件缺失图片、CSS样式错乱的问题?本文将系统解析monolith的全部命令行参数,从基础用法到高级技巧,助你轻松掌握单文件网页保存的精髓。读完本文,你将能够:
- 掌握monolith核心参数的使用场景
- 灵活配置资源过滤规则
- 处理特殊编码与网络问题
- 定制输出格式与文件命名
关于monolith
monolith是一款命令行工具(CLI tool),能够将完整的网页保存为单个HTML文件。其核心功能通过src/main.rs实现,采用Rust语言开发,确保高效稳定的性能。项目结构清晰,主要包含缓存管理src/cache.rs、Cookie处理src/cookies.rs和核心转换逻辑src/core.rs等模块。
基础参数:快速上手
必选参数:目标URL
最基本的使用方式只需提供目标URL:
monolith https://example.com
参数定义在src/main.rs#L124,支持三种输入源:
- 网络URL(如
https://example.com) - 本地文件路径(如
./page.html) - 标准输入(使用
-从管道读取)
输出控制:-o/--output
指定输出文件路径,使用-表示标准输出:
monolith https://example.com -o example.html
monolith https://example.com --output - > example.html
参数实现逻辑见src/main.rs#L103-L105,若未指定输出路径,工具会自动根据网页标题生成文件名。
资源过滤参数:定制网页内容
媒体资源控制
monolith提供细粒度的资源过滤选项,可按需移除各类媒体元素:
| 参数 | 作用 | 适用场景 |
|---|---|---|
-i/--no-images | 移除图片 | 节省存储空间 |
-a/--no-audio | 移除音频 | 纯文本内容保存 |
-v/--no-video | 移除视频 | 低带宽环境 |
-F/--no-fonts | 移除字体 | 简化页面样式 |
示例:保存纯文本版本的网页
monolith https://example.com -i -a -v -F -o text-only.html
相关参数定义见src/main.rs#L75-L85和src/main.rs#L119-L121。
脚本与样式控制
针对网页脚本和样式的控制参数:
-j/--no-js:移除JavaScript脚本monolith https://example.com -j -o no-script.html-c/--no-css:移除CSS样式表monolith https://example.com -c -o no-style.html
参数实现见src/main.rs#L47-L49和src/main.rs#L83-L85,注意使用-m/--mhtml参数时会自动启用-j(src/main.rs#L196)。
高级参数:域名控制与网络配置
域名黑白名单
通过-d/--domain结合-B/--blacklist-domains实现域名过滤:
# 只允许example.com及其子域名的资源
monolith https://example.com -d example.com -o whitelist.html
# 阻止ads.example.com的资源加载
monolith https://example.com -d ads.example.com -B -o blacklist.html
实现逻辑见src/main.rs#L55-L57和src/main.rs#L179,支持同时指定多个域名。
网络安全与超时设置
处理网络连接问题的参数组合:
-k/--insecure:允许无效SSL证书-t/--timeout:设置网络超时(秒)-e/--ignore-errors:忽略网络错误继续执行
示例:处理不稳定网络环境
monolith https://unstable-site.com -k -t 30 -e -o unstable.html
相关参数定义见src/main.rs#L87-L90和src/main.rs#L111-L113,默认超时时间为120秒(src/main.rs#L201)。
特殊功能:MHTML格式与元数据控制
MHTML格式输出
使用-m/--mhtml参数生成MHTML格式文件:
monolith https://example.com -m -o archive.mht
注意MHTML格式不支持JavaScript,启用此参数会自动设置-j(src/main.rs#L196)。
元数据控制
-M/--no-metadata:移除生成文件中的元数据monolith https://example.com -M -o no-meta.html
元数据包含原始URL、保存时间等信息,相关实现见src/core.rs中的元数据生成逻辑。
实战案例:复杂场景应用
带Cookie的网页保存
使用-C/--cookie-file参数加载Cookie文件:
monolith https://auth-site.com -C cookies.txt -o authenticated.html
Cookie文件解析逻辑在src/cookies.rs中实现,支持标准的Netscape格式Cookie文件。
本地文件处理与字符编码
指定基础URL和字符编码处理本地HTML文件:
monolith ./local-page.html -b http://localhost/ -E UTF-8 -o fixed-encoding.html
-b/--base-url参数用于解决相对路径问题,-E/--encoding强制指定字符编码,实现见src/main.rs#L39-L41和src/main.rs#L63-L65。
参数速查表
为便于快速查阅,整理常用参数对照表:
| 类别 | 参数 | 功能描述 |
|---|---|---|
| 输出控制 | -o/--output | 指定输出文件 |
| 资源过滤 | -i/-a/-v/-F | 移除图片/音频/视频/字体 |
| 内容控制 | -j/-c | 移除JS/CSS |
| 域名控制 | -d/-B | 域名白/黑名单 |
| 网络配置 | -k/-t/-e | 不安全连接/超时/忽略错误 |
| 特殊格式 | -m | 生成MHTML格式 |
完整参数列表可通过monolith --help查看,或参考src/main.rs#L34-L125的参数定义代码。
总结与进阶
通过本文介绍的参数组合,你可以灵活应对各种网页保存需求。monolith的强大之处在于其模块化设计,核心转换逻辑在src/core.rs中实现,通过src/session.rs管理网络会话,结合src/cache.rs实现资源缓存。
进阶学习建议:
- 研究测试用例tests/cli/了解参数组合效果
- 通过src/core.rs学习HTML处理原理
- 尝试修改src/main.rs添加自定义参数
掌握这些参数后,你将能够高效地保存完整网页,轻松应对各种复杂的网页结构和网络环境。收藏本文,下次使用monolith时即可快速查阅参数用法。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



