<- 返回博客

HTTPeep Blog

调试技巧:用 HTTPeep CLI 在终端捕获 cURL、Node.js、Python、Rust 请求

如何在不改代码的情况下,把终端流量纳入 HTTPeep 的可观察链路。

本页目录

真问题往往是你从来没看见的请求

很多 API 问题卡住时,难点不一定是代码难读,而是你根本没看到真实请求。

你当然可以加日志或拦截器,但这两种方式都有代价:

  1. 往往要改代码。
  2. 看到的可能已经是被中间层改写过的请求。

对于终端驱动的工作流,更直接的办法是:先进入 hp shell,再启动你要观察的工具或应用。

hp shell

hp shell 的作用,是把当前终端变成 HTTPeep 的抓包环境。

hp shell
next dev

顺序很重要。先进入 hp shell,再启动 next dev,Node 进程就能继承代理环境,后续请求就会进入 HTTPeep 的可观察链路。

这在你还没有完善日志体系、但又想先看真实出站请求时特别有用。

cURL:最快的确认方式

cURL 是最适合先试的工具。

hp shell
curl -i https://api.example.com/health

然后在另一个终端里查看会话:

hp sessions list --process-name-like curl

如果你更喜欢持续看新请求:

hp monitor

cURL 很适合用来确认代理路径、证书信任和目标域名是否都正常。

Node.js:重点看 next dev

Node.js 场景里,hp shell 最有价值。

很多人会在拦截器里加请求日志,但这意味着:

  • 要改代码,
  • 看到的是处理过的请求,
  • 还可能漏掉真正发出去的内容。

如果你只是想看 next dev,直接这样做就够了:

hp shell
next dev

然后触发页面渲染、API Route 或 Server Action,再看会话:

hp sessions list --process-name-like node

通常最重要的字段是:

  • method
  • url
  • request headers
  • request body
  • status code
  • timing

Python:让进程继承环境变量

Python 里的 requestshttpxaiohttp 也可以通过 hp shell 进入 HTTPeep。

hp shell
python app.py

如果你更习惯显式设置代理,也可以这样:

export HTTP_PROXY=http://127.0.0.1:8800
export HTTPS_PROXY=http://127.0.0.1:8800
python app.py

然后查看会话:

hp sessions list --process-name-like python

Rust:在进程启动前抓住请求

Rust 的 CLI 工具和后台服务也是同样的思路。关键是要在启动前把进程放进抓包环境。

hp shell
cargo run

如果程序直接读取代理环境变量,也可以在启动前显式传入:

HTTP_PROXY=http://127.0.0.1:8800 HTTPS_PROXY=http://127.0.0.1:8800 cargo run

然后查看会话:

hp sessions list --process-name-like cargo

会话里看什么

抓到会话后,建议按这个顺序看:

  1. methodurl
  2. headers
  3. body
  4. status code
  5. timing

如果是 401,先确认 Authorization 是否真的带上了。

如果是 500,先确认 payload 是否真的发对了。

如果是超时,先确认请求是否真的到了目标环境。

常见坑

只看到 CONNECT

这通常说明 HTTPS 还没解密出来。先确认本地 CA 已经被信任,再重试请求。

看起来代理没生效

先检查进程是不是从执行 hp shell 的那个终端里启动的。

子进程丢了环境变量

有些启动器会重新拉起子进程,导致代理环境变量丢失。这个时候要确认真正发请求的是谁,而不是只看最上层启动器。

被 Bypass 或其他代理影响

如果流量被绕过,或者被别的代理重新接管,HTTPeep 就看不到。先确认流量路径,再看请求内容。

一个简单的调试循环

最省事的顺序通常是:

hp shell
next dev
hp sessions watch

或者:

hp shell
cargo run
hp sessions list --process-name-like cargo

先让真实流量进入抓包链路,再看会话,最后才回到代码。

结论

hp shell 不是简单多包一层壳。

它是在不改代码的前提下,把终端发出的请求纳入 HTTPeep 的可观察链路。对 cURL、Node.js、Python、Rust 这些常见场景来说,这通常能更快找到真正的问题。