cargo-zhar

Crates.iocargo-zhar
lib.rscargo-zhar
version1.0.1
created_at2025-10-11 05:26:09.694694+00
updated_at2025-10-11 05:30:42.571648+00
descriptionA Rust-based command-line tool for extracting response bodies from HAR (HTTP Archive) files.
homepage
repository
max_upload_size
id1877876
size32,481
Charles Chu (everplus)

documentation

README

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 解析

注意事项

  1. 只处理响应体,忽略请求体
  2. 自动处理 Base64 编码的内容
  3. 自动解压多种内容编码(Gzip、Deflate、Brotli),如果解压失败会保留原始内容
  4. 自动处理 Chunked 传输编码
  5. 文件名中的特殊字符会被替换为下划线
  6. 如果响应体为空或无内容,将跳过该条目

许可证

MIT

Commit count: 0

cargo fmt