指定程序抓包
本篇教你用「指定程序抓包」抓下某一个程序的流量:给它一条启动命令,工具替你把程序拉起来,只抓它一个、启动即看明文。不用配代理、也不用装证书,抓完不用善后——是上手最快、最干净的一种抓法。
一、什么时候用这种抓法
适合你满足下面任一条:
- 想看某一个能用命令启动的程序在发什么(浏览器、脚本、命令行工具)。
- 不想改系统全局代理、也不想装证书,更不想波及机器上其它软件。
- 只是临时调个脚本、验证一个接口,想填条命令立刻开抓。
如果程序已经在运行、做了证书绑定、走自研加密或不认代理,指定程序抓包可能抓不到或解不开,改用 应用层抓包。
二、前置条件
- 已安装并启动 TraceEagle(第一次启动同意系统权限即可)。
- 知道要抓的程序的启动命令(例如
python3 app.py、一条curl命令,或浏览器的可执行文件路径)。 - 无需装证书、无需改系统代理。
三、开始抓:三步抓下第一条
- 新建会话,选择 「本机指定程序抓包」。
- 在 「启动命令」 里填要运行的命令。不想手打可以点内置的一键示例,会自动填好、还能再改:
- 浏览器示例:拉起一个独立、干净的浏览器窗口(不影响你日常在用的浏览器),并已帮你把 HTTP/3(QUIC)回退成普通连接,好抓、能解。
- Python 示例:一条命令发个请求,最稳地看到明文。
- 命令行示例:命令行发起的 HTTPS 请求即抓。
- 点 开始。工具会替你启动这个程序,并只抓它的流量;程序内部再拉起的子进程也会一并被抓到,不漏。
让程序跑起来、产生网络请求(浏览器里打开一个网站、脚本发一次请求),流量就会实时出现在请求列表里。
四、验证:确认抓到并解密了
在请求列表点开任意一条,看详情:
- 能看到请求:请求行、请求头、body 都在。
- TLS 显示「已解密」:响应是可读的明文(如 JSON),不是乱码密文。
常见程序——浏览器、Electron 类桌面应用、Node、Python、桌面 Java,以及使用通用加密库的命令行工具——启动即明文,不用任何额外操作。
五、抓不到 / 解不开?逐条排查
| 现象 | 多半是 | 怎么办 |
|---|---|---|
| 抓到了,但只有密文 | 程序用了特殊加密库(最典型是 macOS 系统自带的 curl,以及部分纯 Go 编写的程序) | 命令行想看明文,用「Python 示例」最稳;或改用 OpenSSL 版的 curl;再不行换 应用层抓包 |
| 一条流量都没有 | 这个程序完全不认代理设置 | 换 应用层抓包(从程序内部取明文)或 网卡抓包(网卡层什么都抓得到) |
| 抓到了但走的是 HTTP/3、看不全 | 目标用了 HTTP/3(QUIC) | 开启会话级的 「阻止 HTTP/3」,让它回退成普通连接,同样好抓、能解 |
| 目标程序已经在运行 | 这种抓法要由工具启动程序才生效 | 先关掉它、用启动命令重新拉起;或改用 应用层抓包 直接附到运行中的进程 |
六、本机四种抓法怎么选
| 你的情况 | 用哪种 |
|---|---|
| 能用命令启动的常规程序(浏览器 / 脚本 / CLI) | 指定程序抓包(本篇,最省事) |
| 想看整机全部流量、非 HTTP 流量、某程序的全部网络行为 | 网卡抓包 |
| 程序已在运行 / 证书绑定 / 不认代理 / 自研加密 / 系统加密库 | 应用层抓包 |
| macOS 上的系统自带 App / 顽固应用 | 系统级抓包 |
下一步
- 抓到之后怎么读、怎么切换视图、怎么解码:见 数据查看与解码。
- 遇到私有 / 自研协议、想自己教它怎么读:见 自定义协议解码。
- 想改请求再发、或半路拦下来手动改:见 请求构造与重放、规则改写与断点拦截。