ApiCatcher 现已支持 Android

ApiCatcher 现已支持 Android

ApiCatcher for Android 现已上架 Google Play。至此,ApiCatcher 已覆盖 iOS、Android、macOS、Windows 四个平台。

ApiCatcher for Android | HTTP Capture

实现原理

iOS 版基于 Network Extension 在系统底层拦截流量,App 里一键启动即可抓包,不依赖系统代理设置。Android 版沿用了相同的思路,底层实现换成了 Android 提供的 VpnService 机制。

启动抓包后,ApiCatcher 会创建一个 VpnService,通过 TUN 虚拟网卡捕获设备所有 IP 数据包。底层用 tun2proxy(Rust 原生库)解析 TCP 包,将 HTTP/HTTPS 连接透明转发至本地 127.0.0.1:8888。本地基于 Netty 的 MITM 代理服务器对 HTTP 流量直接转发并记录,对 HTTPS 流量通过 CONNECT 隧道 + 动态证书签发完成解密。整个过程应用层无感知,不需要改 WiFi 或蜂窝网络的代理配置。

核心能力

Android 版与 iOS 版核心能力对齐,不只是能抓包。

抓 HTTPS 和 WebSocket(WS/WSS)流量是基础能力,WebSocket 数据帧以聊天消息列表的方式展示,方便查看每条消息的收发内容。通过 Host 黑白名单可以过滤抓取不关心的请求,避免抓取到第三方APP的流量。

接口调试方面,重写规则支持 Mock 响应、改写请求/响应、正则替换请求/响应、重定向请求、丢弃请求/响应、延迟响应等重写行为,也支持通过脚本处理复杂的逻辑。支持快速重放请求,或编辑组合重放规则将多个请求按依赖编排执行顺序,支持依赖参数注入。

ApiCatcher 会在抓包过程中根据 HTTP 请求自动生成 API 文档,多次抓取同一接口会自动合并响应字段。文档可以导出到 Postman 或 Apifox,请求历史也会作为用例一并导出。除此之外,还支持导出 HAR 请求记录、提取图片/视频/音频等媒体文件。

ApiCatcher 还支持 DNS 映射、API 扫描、Protobuf 解码、定时重放等能力。

界面设计与 iOS 版保持一致,用户体验更友好。支持JSON、XML等代码高亮显示,提供多种代码高亮主题可供选择, 代码编辑器使用相同的高亮主题。 支持JSON搜索、路径折叠、JSON对比。 除此之外,提供十六进制视图查看二进制内容,支持渲染图片(包括SVG)、播放视频/音频。

上手说明

Android 抓 HTTPS 同样需要先安装并信任 CA 证书,但与iOS不同的是,Android 7 以上用户只能将 CA 证书安装到用户证书区,不能安装到系统证书区。因此在 Android 上使用 ApiCatcher 抓 App 的 HTTPS 流量,需要在 App 项目代码里配置信任用户证书。

CA 证书安装、HTTPS 抓包的限制说明、以及开发者如何抓自己 App 的配置方法,见 ApiCatcher for Android

ApiCatcher for Android 支持 Android 11(API 30)及以上系统。