{"id":48581236,"url":"https://github.com/hzexe/saztool","last_synced_at":"2026-04-08T17:00:44.526Z","repository":{"id":350010357,"uuid":"1204894457","full_name":"hzexe/saztool","owner":"hzexe","description":"Fiddler's sza file tool.  Search\\show\\normalize,etc.","archived":false,"fork":false,"pushed_at":"2026-04-08T14:52:28.000Z","size":8878,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T15:11:01.337Z","etag":null,"topics":["fiddler","sza"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hzexe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T12:43:20.000Z","updated_at":"2026-04-08T14:52:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hzexe/saztool","commit_stats":null,"previous_names":["hzexe/saztool"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hzexe/saztool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzexe%2Fsaztool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzexe%2Fsaztool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzexe%2Fsaztool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzexe%2Fsaztool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hzexe","download_url":"https://codeload.github.com/hzexe/saztool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzexe%2Fsaztool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31564915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fiddler","sza"],"created_at":"2026-04-08T17:00:43.626Z","updated_at":"2026-04-08T17:00:44.508Z","avatar_url":"https://github.com/hzexe.png","language":"Go","readme":"# saz-tool\n\n`saztool` 是一个面向 **Fiddler SAZ 抓包** 的 CLI 工具，用于：\n- 归一化抓包内容\n- 按 session 查看请求/响应\n- 在 body / meta / raw request / raw response 中搜索\n- 为 AI 或人工分析生成可追溯的 normalized bundle\n\n目标不是取代 Fiddler，而是把 SAZ 变成**更适合检索、排查、逆向分析和自动化处理**的格式，同时**不破坏原始内容**。\n\n## 当前定位\n\n第一版先做 3 个命令边界：\n\n- `normalize`，已实现基础版\n- `show`，已实现最小可用版\n- `search`，已实现最小可用版\n\n## 设计原则\n\n- 保留原始 SAZ，不替换原始 `raw/*` 文件\n- 保留 **Fiddler session ID**\n- 明确保留 **session 先后顺序**，并写入 `manifest.json`\n- normalized 只做最小必要变换：\n  - dechunk\n  - gzip / deflate / br 解压\n  - charset decode\n- **JSON 不默认 pretty-print**，canonical normalized 文本保持解码后的原始文本\n- 输出必须显式说明这是从 Fiddler SAZ 派生的 normalized bundle\n\n## 输出结构\n\n```text\nexample.saz.norm/\n  README.md\n  manifest.json\n  sessions/\n    000001/\n      meta.json\n      request.raw.txt\n      response.raw.txt\n      response.body.decoded.txt   # 仅当 body 可视为文本时存在\n```\n\n## Fiddler ID 与顺序\n\n- `manifest.json.fiddlerSessionOrder` 记录所有 session id 的顺序数组\n- `manifest.json.sessions[].ordinal` 表示该 session 在 bundle 内的顺序号\n- `sessions/\u003cid\u003e/meta.json` 中同时记录：\n  - `sessionId`\n  - `ordinal`\n  - `sourceRequestPath`\n  - `sourceResponsePath`\n  - `transforms`\n\n默认第一版按 **升序 session id** 作为顺序，这通常和 Fiddler 的自然捕获顺序一致。后续若需要，也可以补充从 `raw/*_m.xml` 读取更精细时间戳顺序。\n\n## 构建\n\n### 本机构建\n\n```bash\ngo build -o ./bin/saztool ./cmd/saztool\n```\n\n### Windows 构建\n\n本地仍可用：\n\n```bash\n./build-windows.sh\n```\n\n但仓库现在已经提供 **GitHub Actions** 作为主构建路径：\n- `.github/workflows/build-windows.yml`\n- `.github/workflows/release.yml`\n\n### Release 自动化\n\n- push `v*` tag 时会触发 release workflow\n- workflow 会构建 release assets 并上传到 GitHub Release\n- 当前 release assets 覆盖：\n  - windows amd64\n  - windows arm64\n  - linux amd64\n  - linux arm64\n\n## 使用\n\n```bash\nsaztool normalize demo.saz\nsaztool normalize demo.saz -out demo.norm\nsaztool show demo.saz.norm 123\nsaztool search demo.saz.norm keyword\nsaztool search demo.saz.norm token --after-id 100 --before-id 200\nsaztool search demo.saz.norm token --in body\nsaztool search demo.saz.norm token --in request,response\nsaztool search demo.saz.norm token --in all\nsaztool search demo.saz.norm token --in request -C 2\nsaztool search demo.saz.norm token --output grep\nsaztool search demo.saz.norm token --output json\n```\n\n更完整的参数与语义见：\n- `docs/CLI.md`\n- `docs/INTEGRATIONS.md`\n- `docs/OPENCLAW_TEMPLATES.md`\n\n## 说明\n\n当前版本已落下：\n- SAZ zip 读取\n- raw session 聚合\n- response 传输层解码\n- manifest / meta / README 生成\n- search scope 控制\n- 上下文行搜索\n- 更精确的命中展示\n- session 状态标记\n- timeline order\n- GitHub Actions 构建与 release 自动化基础设施\n- 仓库内 `testdata/` 用于 CI 可复现测试\n- `--output plain|grep|json` 适配人工、grep 风格和机器消费三类场景\n\n还待补：\n- 更多 binary body 导出策略\n- 将 before/after 过滤同时支持时间顺序语义\n- 直接支持 raw 目录输入\n- 更丰富的 release / packaging 文档\n- 独立 `saztool-mcp` 包装器实现（当前已有模板与建议，但未单独实现）\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhzexe%2Fsaztool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhzexe%2Fsaztool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhzexe%2Fsaztool/lists"}