2 stable releases
Uses new Rust 2024
| 1.0.1 | Oct 11, 2025 |
|---|
#246 in Compression
15KB
252 lines
HAR 响应体解包工具
一个用 Rust 编写的命令行工具,用于解包 HAR(HTTP Archive)文件中的响应体。
功能特性
- ✅ 解析 HAR 文件并提取所有响应体
- ✅ 按域名组织目录结构
- ✅ 保持原始 URL 路径结构
- ✅ 自动忽略 URL 查询参数
- ✅ 支持 Base64 解码
- ✅ 支持多种内容编码解压缩:
- Gzip 解压缩
- Deflate 解压缩
- Brotli 解压缩
- Identity 编码(直接返回)
- ✅ 支持 Chunked 传输编码
- ✅ 实时显示处理进度(序号、文件路径、大小)
安装
方式一:作为 Cargo 子命令安装(推荐)
cargo install cargo-zhar
安装后可以通过以下方式使用:
# 解压到当前目录
cargo zhar <har文件路径>
# 指定输出目录
cargo zhar <har文件路径> -o <输出目录>
# 或
cargo zhar <har文件路径> --output-dir <输出目录>
# 查看帮助
cargo zhar --help
方式二:从源码构建
git clone <repository-url>
cd rust-ftk-har
cargo build --release
使用方法
基本用法
# 解压到当前目录
cargo zhar <har文件路径>
# 或使用编译后的可执行文件
./target/release/cargo-zhar <har文件路径>
指定输出目录
cargo zhar <har文件路径> -o <输出目录>
# 或
cargo zhar <har文件路径> --output-dir <输出目录>
查看帮助
cargo zhar --help
示例
# 将 example.har 解压到当前目录
cargo zhar example.har
# 将 example.har 解压到 output 目录
cargo zhar example.har -o output
输出格式
程序会在标准输出(stdout)中依次显示:
序号 文件路径 文件大小
1 example.com/index.html 1234 bytes
2 example.com/api/data.json 567 bytes
3 cdn.example.com/style.css 890 bytes
目录结构
解压后的文件按以下结构组织:
输出目录/
├── example.com/
│ ├── index.html
│ └── api/
│ └── data.json
└── cdn.example.com/
└── style.css
- 第一层目录为域名
- 保持原始 URL 的路径结构
- 忽略查询参数(如
?id=123) - 特殊字符会被替换为下划线
依赖项
serde- JSON 序列化/反序列化serde_json- JSON 解析clap- 命令行参数解析flate2- Gzip 和 Deflate 解压缩brotli- Brotli 解压缩base64- Base64 解码url- URL 解析
注意事项
- 只处理响应体,忽略请求体
- 自动处理 Base64 编码的内容
- 自动解压多种内容编码(Gzip、Deflate、Brotli),如果解压失败会保留原始内容
- 自动处理 Chunked 传输编码
- 文件名中的特殊字符会被替换为下划线
- 如果响应体为空或无内容,将跳过该条目
许可证
MIT
Dependencies
~12MB
~362K SLoC