两个开源小工具:FlowTrans + android-capture-skill,把安卓抓包做成一条命令
本文最后更新于:2026年7月29日 下午
承接上一篇《Android 抓包实战全流程:FlowTrans + mitmweb + pproxy + Frida,从解密到重放》——那篇讲”为什么”和”怎么跑通”,这篇把里面的工具沉淀成了两个可以直接用的开源仓库,并把整条链路收敛成一两条命令。
在受限网络里抓一个”只对海外开放、做了证书固定、还忽略系统代理”的安卓 App,光”装 CA + 开代理”是不够的。我把踩过的坑固化成了两个东西:
- FlowTrans —— 设备端的转发器(mihomo TUN)。
- android-capture-skill —— PC 端的一键编排(Claude Code skill),把 FlowTrans + mitmweb + Frida 串起来。
两者可以分开用,也可以合起来”一条命令抓包”。
为什么需要 FlowTrans:App 根本不认系统代理
大多数现代 App(OkHttp / Cronet)不读系统 HTTP 代理,所以 settings put global http_proxy 对它们无效。正确做法是用 VpnService/TUN 在三层透明劫持,把流量强制导向 PC 上的 mitmproxy。FlowTrans 就是干这个的:
1 | |
它基于 mihomo 内核(预编译内置,不用装 Go/NDK),支持全局或按应用路由,走 adb reverse 隧道就能绕开公司网络的 AP 隔离/防火墙。
FlowTrans 用法(GUI)
- PC 上跑 mitmproxy:
mitmweb --listen-host 0.0.0.0 -p 8080 - FlowTrans 里新建 profile,上游填
127.0.0.1:8080(HTTP),Wi-Fi 连不上 PC 时配合adb reverse tcp:8080 tcp:8080 - 选全局或按应用,点开始转发(同意 VPN 授权)
- mitmweb 里看流量
FlowTrans 用法(纯 adb,可脚本化)
不想点屏幕?GUI 那套有等价的命令行版(改路由 prefs 需要 root):
1 | |
写抓包名单、SELinux 上下文保留等完整细节,见仓库 README 的 Command-line control (adb)。
让 App 信任 mitmproxy 的证书(root)
Android 7+ 默认不信任用户 CA,Android 14 系统证书库还搬进了不可写的 Conscrypt APEX。抓别家 App 得把 mitmproxy 的 CA 装进系统库——root 设备用 MoveCertificate 模块最省事,重启生效。
android-capture-skill:把整条链路收敛成一条命令
有了 FlowTrans 解决”传输”,还剩下:起 mitmweb、建隧道、设抓包目标、处理证书固定(Frida 脱壳)、换海外出口……手动一层层敲很累。android-capture-skill 把这些封装进一个 Python 入口 capture.py(它其实是个 Claude Code skill,但纯命令行也能直接跑),全程 adb、不碰屏幕。
一键抓包
1 | |
mitmweb UI 在 http://127.0.0.1:8081,登录密码 flowtrans。想抓所有 App 用 --all;换目标再跑一次 flowtrans --pkg <新包> --mitmweb 即可;停止 flowtrans --stop。
亮点
- preflight 先兜底:证书不一致(mitmweb 的 CA ≠ 设备信任的 CA)会直接报出来,省得你开着转发抓半天全是 TLS 失败还找不到原因。
- 海外出口:抓只对某地区开放的 App(如美区应用),加
--us-proxy scheme://host:port#user:pass(或环境变量CAPTURE_US_PROXY),自动经 pproxy 链一个海外代理出网。凭据只走参数/环境变量,不写进脚本。 - 证书固定兜底:第三方 SDK 正常、只有主域名握手失败 = pinning,用内置的 Frida 脚本脱壳(
objection快速验证 /unpin.compiled.js常驻 /--native应对 BoringSSL)。 - 抓完能重放:仓库里还写了”脱离 App 用 curl 重放接口”的方法论——核心一句话:JWT 的
iss≠ 它的获取入口,靠 mitmweb 的 HTTP API 脚本化定位 token 下发点。
在 mitmweb 里筛请求
顶部搜索框用 mitmproxy 过滤语法:~d 域名、~u URL、~m POST、~c 200、~bs 响应体正则、~t json,用 & | ! 组合。离线筛存档:
1 | |
两者怎么配合
简单说:FlowTrans 负责”把流量弄过来”,skill 负责”把剩下的都办了”。
| 关注点 | 谁来做 |
|---|---|
| App 忽略代理 → 透明劫持 | FlowTrans TUN |
| 起 mitmweb / 隧道 / 设目标 / 起停 VPN | skill 的 capture.py flowtrans |
| 证书固定 | skill 调 Frida 脱壳 |
| 海外出口 | skill 的 --us-proxy(pproxy 链) |
| 环境自检 | skill 的 preflight |
仓库
两个仓库都带了完整 README 和排障文档。欢迎 star / issue。
⚠️ 仅用于授权范围内的安全测试、调试自己的 App、学习研究。请遵守你所检测 App 适用的服务条款与法律。