Go CLI

看清命令发出的请求

在原命令前加上 httpmon,实时查看 HTTP/HTTPS 请求和响应。无需浏览器,也不用配置系统代理。

Go · MIT · local-only proxy · HTTP / HTTPS · 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 只是在原命令外包一层本地代理。子进程照常接收响应,终端同时显示请求和响应。

01

运行命令

在 curl、aws、Python、Node 或其他支持代理的命令前加上 `httpmon`。

02

临时接管

它只为这个子进程注入本地代理地址和临时 CA。

03

查看请求

实时查看请求和响应头、解压后的响应体预览、状态码和耗时。

04

保存现场

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

定位

什么时候用

想确认 curl、AWS CLI、Python、Node 或其他命令究竟发出了什么请求、收到了什么响应时。

它不是什么

它不是系统级代理,也不替代浏览器 DevTools,更不是生产抓包服务。它只服务于当前这一条本地命令。

什么不会变

原始流量照常转发给子进程。gzip 和 deflate 只会为终端预览解压,不会改写传给命令的响应。

自动化

自动注入代理

为 curl、AWS CLI、Python requests、Node 和常见的代理感知工具注入代理与 CA 配置,不改动系统设置。

终端里看 HTTPS

临时 CA 和按域名签发的证书,让请求/响应头以及 gzip、deflate 解压后的响应体预览直接显示在终端。

终端界面与过滤

实时会话可切到全屏 TUI,也可按 URL 片段过滤,只看关心的请求。

保存排查现场

可输出 NDJSON、导出 HAR 1.2,或录制完整请求/响应,用于回放和环境对比。

NDJSON 输出

`--format json` 输出已关联的请求和响应,可交给 jq、日志管道或其他工具继续处理。

导出 HAR

`--har` 写出捕获结果,可导入 Chrome DevTools、Postman、Charles 等支持 HAR 的工具。

录制和回放

`--record` 保存请求与响应;`--replay` 重新发起请求,再比较新的结果。

WebSocket 握手

记录 `wss://` 升级握手,之后在客户端和上游之间直接转发帧,不做缓冲。

细节

排查网络,不该离开终端

命令失败时,关键线索往往藏在实际发出的请求和收到的响应里。为了看它们而切到浏览器,或改全局代理,都会打断排查。

httpmon 的范围很小:只包一层命令,显示请求和响应;需要时保存现场;结束后不在系统里留下代理配置。

流程

01

运行原命令

在原命令前加上 `httpmon`,例如 `httpmon curl https://api.github.com` 或 `httpmon aws s3 ls`。

02

聚焦请求

用 `--filter /api` 缩小输出范围;想交互查看请求和响应时,使用 `--ui`。

03

保存现场

终端输出不够时,可用 `--format json`、`--record traffic.ndjson` 或 `--har session.har` 保存记录。

04

回放请求

把录制文件回放到原服务或另一套环境,比较状态码和响应体。

示例

查看 API 调用

`httpmon curl https://api.github.com/users/octocat` 会显示请求、响应、请求头和解压后的响应体预览。

筛出 S3 请求

`httpmon --filter s3 aws s3 sync ./dist s3://example-store/` 让终端只显示 S3 相关请求。

对比不同环境

录制一段可安全复现的请求,再用 `--replay-target` 回放到 staging。

兼容性

能通过代理访问 HTTP 的命令

curlAWS CLIPython requestsNode.jsHTTP_PROXY 工具wss:// 客户端

httpmon 会直接配置常见客户端;对其他支持代理的命令行工具,则提供标准代理环境变量。

FAQ

会改系统代理设置吗?

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

压缩响应怎么显示?

gzip 和 deflate 会为终端预览解压。传给原命令的仍是未改写的压缩字节流。

适合在生产环境抓包吗?

不适合。httpmon 用于本地开发和排查。只应检查自己拥有或明确获授权查看的流量。

从下一条请求开始

打开仓库