httpmon · Go CLI

看清命令的 HTTP 流量

包住支持代理的命令。实时看请求和响应。原始响应不变。

GoMIT v1.4.1 (2026年9月29日) local proxyHTTP / 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 只在本地解密查看原始响应流继续交给命令

流量就在命令旁边

请求和响应

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

原始响应流

命令收到的响应原样不动。

HTTP/2 与 gRPC

透传 trailers,解出 gRPC 状态。

只配置被包住的进程

本地 MITM 代理把地址和临时 CA 交给一个子进程。

  1. 1

    本地启动

    在支持代理的命令前加 httpmon。只监听 127.0.0.1,系统代理不变。

  2. 2

    只配子进程

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

  3. 3

    按需留存

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

v1.4.12026年9月29日发布说明 ›

开始使用

需要 Go 1.24+。Releases 页面也有预编译二进制。

  1. 安装

    go install github.com/hxddh/https-traffic-inspector@latest
  2. 包住一条命令,看它的流量

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

常见问题

能包住哪些命令?

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 和录制文件按敏感日志保存。

日志已经在 Pi 里了怎么办?

日志和 trace 已经在 Pi 的聊天里时,用 StorageOps 排查。

httpmon