httpmon · Go CLI

看清命令的 HTTP 流量

让一条支持代理的命令经过 httpmon,实时查看它的请求和响应。命令收到的响应保持原样。

go install github.com/hxddh/https-traffic-inspector@latest

GoMIT v1.4.1 (2026年9月29日) 本地代理HTTP / HTTPS / HTTP/2 / gRPC / WebSocketNDJSON / HAR

httpmon v1.4.1 · 实际输出 已捕获
$ httpmon curl -sS https://proxy.golang.org/github.com/hxddh/https-traffic-inspector/@v/list
REQUEST #1 GET https://proxy.golang.org:443/github.com/hxddh/https-traffic-inspector/@v/list

Host: proxy.golang.org · Accept: */* · User-Agent: curl/8.5.0

RESPONSE #1 HTTP/2.0 200 OK (3.21s)

Content-Type: text/plain; charset=UTF-8 · Content-Length: 91

v1.3.0 v1.0.2 v1.0.0 v1.1.1 v1.4.1 …
HTTPS 只在本地解密查看原始响应流继续交给命令

不用浏览器和 GUI,也不用配置

请求和响应

方法、URL、头、状态码、耗时;解压只为显示。

也看 WebSocket

wss:// 和 ws:// 的帧双向转发。

HTTP/2 与 gRPC

透传 trailers,解出 gRPC 状态。

本地启动

只监听 127.0.0.1,系统代理不变。

只配子进程

代理地址和临时 CA 只在这条命令的环境变量里。

按需留存

导出 NDJSON、HAR 1.2 或录制文件,用来回放或分享。

开始使用

需要 Go 1.24+。GitHub Releases 上也有预编译二进制。

  1. 包住一条命令,看它的流量

    httpmon curl https://api.github.com/users/octocat

数据的去向

  • httpmon 自己不发请求:它只转发被包裹命令的流量;--replay 只在你运行时重发录制的请求。
  • CA 只在一次运行中存在:私钥从不写入磁盘,临时 CA 证书包在退出时删除。
  • 抓到的流量只显示在终端,除非你加 --record 或 --har;这些文件可能含凭据,请当作敏感日志保管。

常见问题

能包住哪些命令?

curl、aws、Python、Node 或其他支持代理的命令。只有这个子进程拿到代理地址和临时 CA,系统代理和全局网络设置保持不变。Go 程序访问本机回环地址时不走代理;Node 内置的 fetch 需要 Node 22.21 或 24;JVM 工具不会自动配置。

支持 HTTPS、HTTP/2 和 WebSocket 吗?

支持。HTTPS 在本地解密查看。HTTP/2 与命令和上游分别协商;gRPC 调用会从 trailers 解出状态,消息体只做摘要,不解码。wss:// 和 ws:// 会记录升级握手,之后帧在两端之间直接转发。

录制会含敏感信息吗?

会。请求头、Cookie、查询参数和响应体可能含有凭据或业务数据。请只在获授权环境采集与回放,并把 NDJSON、HAR 和录制文件按敏感日志保存。

它能诊断存储故障吗?

不能。httpmon 只展示流量,判断交给你。想在开源终端编码 Agent Pi 里诊断 S3 兼容存储的故障,请用 StorageOps,它会经 httpmon 采集 trace。 打开 StorageOps

httpmon

S3 工具组

迁移和排查对象存储时,依次用到。

  1. s3-turbo-list 列清单
  2. Storage Agent 找问题
  3. StorageOps 在 Pi 里排查
  4. httpmon 看实际请求
全部工具