一个更省心的 HTTP/HTTPS API 抓包工具
█████╗ ██████╗ ██╗██████╗ ███████╗███████╗██╗ ██╗
██╔══██╗██╔══██╗██║██╔══██╗██╔════╝██╔════╝██║ ██╔╝
███████║██████╔╝██║██████╔╝█████╗ █████╗ █████╔╝
██╔══██║██╔═══╝ ██║██╔═══╝ ██╔══╝ ██╔══╝ ██╔═██╗
██║ ██║██║ ██║██║ ███████╗███████╗██║ ██╗
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝
$ apipeek --host 0.0.0.0 --port 8888
> filter static noise · keep JSON / form / GraphQL
> output: ./out/requests.jsonl · ./out/requests.har
自动过滤图片、字体、埋点和静态资源,只保留接口请求,并输出为 JSONL / HAR。
快速开始 · Windows 便携版 · 开发者用法 · 抓包流程 · 输出格式 · 常见问题
apipeek 是对 mitmproxy 的一层轻量封装,目标只有一个:
让“把小程序 / App / 网页里真正的接口请求抓下来”这件事变简单。
它会自动:
- 启动
mitmweb或mitmdump - 过滤图片、视频、字体、CSS、预检请求、常见埋点噪声
- 保留 JSON、表单、XML、GraphQL、REST 风格请求
- 实时写入结构化
JSONL,也可导出HAR - 支持按目标保存配置,下次一键启动
它不是自动化脚本平台,也不负责破解证书绑定;它专注做一个便捷、可读、可扩展的抓包工具。
| 人群 | 推荐方式 | 是否需要写代码 |
|---|---|---|
| 普通用户 / 测试同学 | 下载 Windows 便携版,双击 bat | 不需要 |
| 开发者 | pip install -e . 后使用 apipeek 命令,或直接引用插件 |
需要一点命令行基础 |
适合全新电脑、不想安装 Python 的用户。
- 到 Releases 下载
apipeek-portable-x.x.x.zip - 解压到任意目录
- 双击:
安装证书.bat:首次安装 mitmproxy 根证书启动抓包.bat:启动抓包并打开 Web 界面
- 手机或电脑设置代理:
- 本机:双击
开启系统代理.bat - 手机:Wi-Fi 代理填写当前电脑 IP 和端口
8888
- 本机:双击
- 手机浏览器访问
http://mitm.it安装手机端证书 - 打开目标小程序 / App,结果会实时保存到
out/requests.jsonl
抓完后:
- 关闭
启动抓包.bat窗口 - 双击
关闭系统代理.bat - 不再使用时可双击
卸载证书.bat
便携版目录说明见 packaging/portable/README.md。
要求 Python 3.10+。
git clone <your-repo-url>
cd apipeek
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install -e .
apipeek启动后默认监听 127.0.0.1:8888,并打开 http://127.0.0.1:8081。
如果要抓手机流量,改成监听所有网卡:
apipeek -H 0.0.0.0- 启动
apipeek - 把浏览器、手机或其他设备代理指向它
- 信任 mitmproxy 证书
- 操作目标小程序 / App / 网页
- 在 mitmweb 页面查看实时流量
- 在
out/目录拿结构化结果
注意:HTTPS 抓包必须在被测设备上信任 mitmproxy 根证书。部分 App 使用证书绑定(SSL Pinning),即使安装证书也无法看到明文,这不是本工具能绕过的问题。
默认生成 out/capture.jsonl,每行一个完整 JSON:
{
"ts": 1787401895,
"method": "POST",
"scheme": "https",
"host": "api.example.com",
"path": "/v1/task/complete",
"url": "https://api.example.com/v1/task/complete",
"status": 200,
"req_headers": {
"cookie": "...",
"content-type": "application/json"
},
"req_body": "{\"taskId\":\"abc\"}",
"res_headers": {
"content-type": "application/json"
},
"res_body": "{\"code\":0,\"message\":\"ok\"}"
}这种格式适合:
grep/rg搜索关键词jq提取字段- Python
pandas.read_json(..., lines=True) - 导入后续分析工具
- 从请求头中复制 Cookie / Token
配置文件是 TOML,用来保存某个目标的抓包规则。
apipeek -p wechat-mini
apipeek -p mobile-app也可以在配置基础上临时覆盖:
apipeek -p wechat-mini --include-host api.example.com -o ./run1内置示例:
examples/profiles/wechat-mini.tomlexamples/profiles/mobile-app.toml
配置文件查找顺序:
./profiles/NAME.toml./profiles/NAME.json~/.config/apipeek/profiles/NAME.toml
查看当前可用配置:
apipeek --list-profiles-H, --host 代理监听地址,默认 127.0.0.1;抓手机用 0.0.0.0
-P, --port 代理监听端口,默认 8888
--no-web 使用 mitmdump,不打开浏览器界面
--web-port mitmweb 界面端口,默认 8081
-o, --out 输出目录,默认 ./out
-f, --format jsonl | har | both
--name 输出文件名前缀,默认 capture
--include-host 只保留包含该关键词的 Host,可重复
--exclude-host 排除包含该关键词的 Host,可重复
--include-path 始终保留的路径关键词,可重复
--exclude-path 始终排除的路径关键词,可重复
--max-body 单条请求 / 响应体最大保留长度,默认 200000
--pretty 控制台打印简短响应预览
-q, --quiet 关闭实时日志
默认过滤逻辑:
- 丢弃
OPTIONS、HEAD、CONNECT - 命中
exclude_hosts的 Host 直接丢弃 - 如果设置了
include_hosts,只保留匹配的 Host - 丢弃图片、视频、音频、字体、CSS、二进制下载
- 路径像接口的请求优先保留,例如
/api/、/v1/、/graphql、.do - 响应类型像 JSON、表单、XML、纯文本的请求保留
POST、PUT、PATCH、DELETE等写操作请求优先保留- 其他静态或无意义请求默认丢弃
可以在 TOML 配置里调整关键词列表。
| 格式 | 说明 |
|---|---|
jsonl |
默认格式,追加写入,一行一个 JSON,适合实时查看和脚本处理 |
har |
退出时生成 HAR 1.2,可直接拖进 Chrome DevTools 或 HAR 查看器 |
both |
同时输出 JSONL 和 HAR |
apipeek -f both可以,但容器里使用的是 Python / 镜像版本,不是 Windows 便携版的 .exe。
最常见的方式是把它作为正向代理部署:
- 部署一个
mitmdumpService - 业务容器设置
HTTP_PROXY/HTTPS_PROXY - 通过 PVC 保存抓包结果,或让插件转发到对象存储 / Kafka
它不是节点级全局抓包器。如果要透明拦截整个 Pod / Node 的流量,还需要 sidecar、iptables、CNI、eBPF 或服务网格配合。
- 只在你有权限测试的网络、设备和应用上使用
- 不要在公共服务器上无密码暴露 mitmproxy 端口
- 抓包结果可能包含 Cookie、Token、手机号、地址等敏感信息
- 分享 JSONL / HAR 前先脱敏
- 不提供、也不讨论绕过证书绑定或突破账号安全机制的方法
Fiddler 和 mitmproxy 都很好。apipeek 的区别是预设了“我只想看接口”的过滤规则和结构化输出,减少手动点选、导出、清洗的步骤。
可能原因:
- 手机没有真正信任用户证书
- App 使用了证书绑定
- Android 7+ 的 App 默认不信任用户 CA
- iOS 安装证书后还需要在“关于本机 → 证书信任设置”里开启完全信任
不需要。便携版已经包含官方 mitmproxy Windows 可执行文件,解压后直接运行 bat。
默认在:
out/requests.jsonl
Windows 便携版也可以在 启动抓包.bat 顶部修改 APIPEEK_OUT、APIPEEK_FORMAT、APIPEEK_INCLUDE 等变量。
pip install -e ".[dev]"
pytest.\packaging\build-portable.ps1 -Version 11.0.0脚本会自动下载对应版本的 mitmproxy Windows 压缩包,抽取可执行文件,并生成:
dist/apipeek-portable-<version>.zip
仓库已配置 GitHub Actions(.github/workflows/release.yml)。推送 v* 标签即会
自动在 Windows runner 上构建便携版 zip 并发布到 GitHub Releases:
git tag v0.1.0
git push origin v0.1.0也可以在仓库 Actions 页面手动触发(workflow_dispatch),输入版本号即可。
MIT