HTTPeep Blog
调试技巧:用 HTTPeep CLI 在终端捕获 cURL、Node.js、Python、Rust 请求
如何在不改代码的情况下,把终端流量纳入 HTTPeep 的可观察链路。
本页目录
真问题往往是你从来没看见的请求
很多 API 问题卡住时,难点不一定是代码难读,而是你根本没看到真实请求。
你当然可以加日志或拦截器,但这两种方式都有代价:
- 往往要改代码。
- 看到的可能已经是被中间层改写过的请求。
对于终端驱动的工作流,更直接的办法是:先进入 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 monitorcURL 很适合用来确认代理路径、证书信任和目标域名是否都正常。
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通常最重要的字段是:
methodurlrequest headersrequest bodystatus codetiming
Python:让进程继承环境变量
Python 里的 requests、httpx、aiohttp 也可以通过 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 pythonRust:在进程启动前抓住请求
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会话里看什么
抓到会话后,建议按这个顺序看:
method和urlheadersbodystatus codetiming
如果是 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 这些常见场景来说,这通常能更快找到真正的问题。