运行命令
在 curl、aws、Python、Node 或其他支持代理的命令前加上 `httpmon`。
Host: api.github.com · Accept: */*
Content-Type: application/json · 245ms
{"login":"octocat","id":583231,...} 看一眼
httpmon 只为当前子进程启动本地代理,并注入所需的代理和 CA 设置。命令退出后,临时内容会自动清理。
工作方式
httpmon 只是在原命令外包一层本地代理。子进程照常接收响应,终端同时显示请求和响应。
在 curl、aws、Python、Node 或其他支持代理的命令前加上 `httpmon`。
它只为这个子进程注入本地代理地址和临时 CA。
实时查看请求和响应头、解压后的响应体预览、状态码和耗时。
需要复现或分享时,导出 NDJSON、HAR 或录制文件。
定位
想确认 curl、AWS CLI、Python、Node 或其他命令究竟发出了什么请求、收到了什么响应时。
它不是系统级代理,也不替代浏览器 DevTools,更不是生产抓包服务。它只服务于当前这一条本地命令。
原始流量照常转发给子进程。gzip 和 deflate 只会为终端预览解压,不会改写传给命令的响应。
自动化
为 curl、AWS CLI、Python requests、Node 和常见的代理感知工具注入代理与 CA 配置,不改动系统设置。
临时 CA 和按域名签发的证书,让请求/响应头以及 gzip、deflate 解压后的响应体预览直接显示在终端。
实时会话可切到全屏 TUI,也可按 URL 片段过滤,只看关心的请求。
可输出 NDJSON、导出 HAR 1.2,或录制完整请求/响应,用于回放和环境对比。
`--format json` 输出已关联的请求和响应,可交给 jq、日志管道或其他工具继续处理。
`--har` 写出捕获结果,可导入 Chrome DevTools、Postman、Charles 等支持 HAR 的工具。
`--record` 保存请求与响应;`--replay` 重新发起请求,再比较新的结果。
记录 `wss://` 升级握手,之后在客户端和上游之间直接转发帧,不做缓冲。
细节
命令失败时,关键线索往往藏在实际发出的请求和收到的响应里。为了看它们而切到浏览器,或改全局代理,都会打断排查。
httpmon 的范围很小:只包一层命令,显示请求和响应;需要时保存现场;结束后不在系统里留下代理配置。
流程
在原命令前加上 `httpmon`,例如 `httpmon curl https://api.github.com` 或 `httpmon aws s3 ls`。
用 `--filter /api` 缩小输出范围;想交互查看请求和响应时,使用 `--ui`。
终端输出不够时,可用 `--format json`、`--record traffic.ndjson` 或 `--har session.har` 保存记录。
把录制文件回放到原服务或另一套环境,比较状态码和响应体。
示例
`httpmon curl https://api.github.com/users/octocat` 会显示请求、响应、请求头和解压后的响应体预览。
`httpmon --filter s3 aws s3 sync ./dist s3://example-store/` 让终端只显示 S3 相关请求。
录制一段可安全复现的请求,再用 `--replay-target` 回放到 staging。
兼容性
httpmon 会直接配置常见客户端;对其他支持代理的命令行工具,则提供标准代理环境变量。
FAQ
不会。代理和 CA 设置只会传给被包装的子进程。命令退出时,临时内容会一起清理。
gzip 和 deflate 会为终端预览解压。传给原命令的仍是未改写的压缩字节流。
不适合。httpmon 用于本地开发和排查。只应检查自己拥有或明确获授权查看的流量。