ProxyPin Flutter 抓包空列表 没有流量
排查清单(按可能性排序)
1. Flutter App 根本没发网络请求
最简单的可能性:App 还没触发网络请求。
→ 操作 App,触发明确需要网络的功能(登录、刷列表、加载详情页),同时盯着 ProxyPin 请求列表
2. 域名过滤白名单漏了目标域名
域名过滤如果开启了白名单模式,只拦截列表里的域名。如果 Flutter App 的请求域名不在里面 → 全部被过滤掉。
检查:
- 进入「我的」→「代理过滤」
- 临时关闭过滤 → 再打开 App 触发网络
- 如果能看到请求了 → 就是白名单漏了,加上去
3. HTTPS 代理没开启
ProxyPin 默认只抓 HTTP。HTTPS 代理是独立开关。
→ 「我的」→「HTTPS 代理」→ 确认开关已打开
4. 根证书没信任(iOS 特别容易漏)
iOS 用户证书信任是两步操作,漏第二步等于没装证书。
→ 参考 iOS SSL 错误排查 完整检查流程
5. ProxyPin 版本太旧
v1.1.9 之前的版本 Flutter 支持可能不完整。
→ 升级到最新版(≥ v1.2)
6. 代理端口被占用
ProxyPin 默认 9090 端口。如果被其他程序(另一个抓包工具、VPN 工具)占了:
→ 进入设置 → 修改代理端口为空闲端口(如 9091)→ 重启 ProxyPin
7. 网络层走了别的通道
极少数 Flutter App 不走 Dart HttpClient,而是直接用原生平台的 HTTP 库或 Socket:
排查方法:
- 在 ProxyPin 中关闭域名过滤 → 开着 HTTPS 代理
- 打开 App 触发网络 → 如果还是完全零请求 → App 可能没走系统代理
- 或者 App 用了 QUIC/UDP(HTTP/3),ProxyPin 目前只处理 TCP
8. App 走 QUIC / HTTP/3
越来越多的现代 App 使用 QUIC 协议(HTTP/3)。QUIC 基于 UDP,ProxyPin 的 TCP 代理拦截不到。
解决办法(临时):在 ProxyPin 的请求屏蔽或系统层面屏蔽 QUIC/UDP:
- Android:在 ProxyPin 的请求屏蔽里加入相关域名
- iOS:暂无原生方法,需要用 VPN 工具拦截 UDP
快速验证法
为了区分问题出在 ProxyPin 还是 App,做一个最小验证:
- 用 Safari 打开 HTTPS 网站(iOS)或 用 Chrome 打开 HTTPS(Android)
- 看 ProxyPin 请求列表有没有浏览器的 HTTPS 流量
- 能抓到浏览器流量 → 证书和代理都没问题,是 Flutter App 自身的问题(证书固定、走 QUIC、或没用网络)
- 浏览器流量也抓不到 → 回到证书和代理配置排查
确认成功的标准
ProxyPin 请求列表中:
- 能看到
https://...开头的请求 - 点击请求 → 响应体能看到明文内容(JSON / HTML / 图片预览)
- Flutter App 正常运行(不会因为代理连接而崩溃)
三个条件同时满足才算真正抓包成功。