httpmon · Go CLI

运行命令时,顺手看 HTTP 请求

用 httpmon 包住 curl、aws、Python 或任何支持代理的命令,实时看请求和响应——不改系统代理,命令收到的响应也原样不动。

Go · MIT · local proxy · HTTP / HTTPS / wss · NDJSON / HAR

httpmon · 本地代理 正在捕获
$ httpmon curl https://api.github.com/users/octocat
请求 #1 GET https://api.github.com/users/octocat

Host: api.github.com · Accept: */*

响应 HTTP/1.1 200 OK

Content-Type: application/json · 245ms

{"login":"octocat","id":583231,...}
HTTPS 只在本地解密查看原始响应流继续交给命令
只作用于一个子进程不改系统代理HTTP / HTTPS / wssNDJSON / HAR

看一眼

命令照常运行,请求同时可见

httpmon 只为当前子进程启动本地代理,并向它传入代理和 CA。命令退出后,临时设置会自动清理。

一条命令,一层本地观察

只配置当前这条命令

httpmon 启动本地 MITM 代理,把代理地址和临时 CA 传给一个子进程。子进程仍会收到原始响应流,终端则显示请求、响应和耗时。

  1. 01

    本地启动

    在 curl、aws、Python、Node 或其他支持代理的命令前加上 `httpmon`,系统代理不会变化。

  2. 02

    只配置子进程

    代理地址和临时 CA 只存在于这条命令的环境变量中,不会写进全局网络设置。

  3. 03

    转发并显示

    原命令照常收到响应;终端同时显示请求头、响应头、状态码、耗时和解压后的预览。

  4. 04

    按需留存

    需要复查或分享时,再导出 NDJSON、HAR 或录制文件。

终端里看什么

终端里看什么

01

请求和响应

在文本模式或 TUI 里查看方法、URL、请求头、响应头、状态码、耗时和解压后的内容预览。

02

原始响应流

被包装的命令仍会收到原始响应。解压只用于 httpmon 的终端预览。

03

关心的请求

命令请求很多时,用 `--filter` 按 URL 或域名筛选,只看需要排查的部分。

记录与导出

记录与导出

结构化记录

输出 NDJSON 交给其他命令处理,或导出 HAR 1.2 到支持检查 HTTP 请求的工具。

录制和回放

录制请求与响应对,再把已获授权的会话回放到原端点或对比环境。

FAQ

会改系统代理吗?

不会。代理和 CA 只传给被包装的子进程;命令退出后,临时内容会一并清理。

为什么 HTTPS 也能查看?

httpmon 会临时创建本地 CA 和按域名签发的证书,仅在本地解密查看;完整响应流会按原样继续转发。

除了 HTTP 还支持什么?

支持 HTTPS,也会记录 `wss://` 的升级握手。收到 101 响应后,WebSocket 帧会在两端之间直接转发。

记录文件里可能有敏感信息吗?

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

用 httpmon 检查下一条命令

打开仓库