在原生 iOS 或 Android 项目中,网络抓包很多是环境配置问题。
而在 Flutter App 场景下,问题经常出现在网络栈来源不明确、证书校验路径不同、请求被框架层封装这些细节上。
在真正开始抓包前,先确认当前 Flutter App 使用的是哪里发起网络请求。
确认 Flutter 网络请求的实际实现
Flutter 并不直接发 HTTP 请求,它只是调用平台能力。常见情况包括:
- 使用 Dart 的
http/dio,最终走系统网络栈 - 使用 MethodChannel 调用原生网络库
- 内嵌 SDK,自带 TLS 或证书校验
判断方法可以:
- 打开 App 后,用系统抓包工具观察是否有任何流量出现
- 如果系统层完全无数据,大概率是自定义网络实现
这一步决定了后续工具选择。
代理抓包:验证 Flutter 请求是否走系统网络
当 Flutter App 使用系统网络栈时,代理模式是验证路径最直接的方式。
使用 Charles / Fiddler 做基础验证
操作目标很明确:
确认 Flutter 请求是否能被代理捕获。
- 在电脑上启动代理工具
- 配置 iPhone Wi-Fi 代理指向电脑
- 安装并信任代理证书
- 启动 Flutter App 触发网络请求
如果请求能出现在代理工具中,说明:
- Flutter 请求经过系统网络
- TLS 校验允许被代理
这类场景下,代理工具已经可以满足查看需求。
当代理抓不到 Flutter 请求时,问题在哪里
如果代理工具中没有任何请求记录,常见原因包括:
- Flutter App 内启用了证书校验(Pinning)
- 使用自定义 TLS 实现
- 请求通过非代理通道发送
此时继续调整代理配置意义不大,需要切换抓包方式。
切换到设备抓包,绕过代理限制
在需要观察 Flutter App 实际数据内容时,我会使用 抓包大师(Sniff Master) 的HTTPS暴力抓包模式。
这种方式的核心区别在于:
- 不依赖 Wi-Fi 代理
- 不需要手动配置证书
- 数据在系统层被捕获并解密
使用抓包大师进行 Flutter App HTTPS 抓包
设备准备
- 使用 USB 连接 iPhone
- 保持设备解锁并亮屏
- 第一次连接时,在手机端点击“信任此电脑”
- Windows 环境按提示安装 iOS 驱动,完成后重启抓包大师
如果设备之前未使用过抓包大师,软件会提示安装描述文件,按引导完成即可。
启动抓包模式并筛选 Flutter App
- 在设备列表中选择对应的 iOS 设备
- 进入 HTTPS 暴力抓包功能界面
- 点击「选择 App」,只勾选目标 Flutter App
- 启动抓包后,操作 App 触发网络请求
筛选 App 的作用是避免系统服务、后台进程的数据干扰定位。

判断抓到的数据是否完整
在抓包列表中,重点检查两点:
- 是否能看到请求 URL 和 Header
- 是否能展开查看 Body 和响应内容
如果只能看到地址和头部,说明该 App 未使用开发证书签名。

处理 Flutter App 抓包数据不完整的问题
当 Flutter App 来自 App Store,默认情况是:
- IPA 加密
- 非开发证书签名
解决路径明确:
- 获取 IPA 文件
- 使用 iOS 开发证书重新签名
- 重新安装 App 后再抓包
完成重签后,再次启动抓包,Body 和响应内容即可正常解析。
结合拦截器验证 Flutter 业务逻辑
当使用代理抓包的时候,验证逻辑时,可以启用拦截器。
在抓包大师中:
- 打开拦截器界面
- 为 Flutter App 的接口设置 URL 规则
- 在请求或响应阶段修改字段
例如:
- 修改接口返回状态,观察 Flutter 页面渲染变化
- 替换接口数据,验证空数据处理逻辑
这类验证在 Flutter 场景下,比日志调试更直接。
一套稳定的 Flutter 抓包流程往往是:
- 代理工具确认是否走系统网络
- 设备级抓包获取真实 HTTPS 数据
- 拦截器验证业务分支
参考链接:https://www.sniffmaster.net/tutorial/zh/2/2.html