使用 Proxyman 抓取 Android 模拟器上 Flutter 应用的 HTTPS 流量
更新:2026 年 1 月 12 日
Proxyman 6.4.0 引入了 Android 模拟器自动设置功能。现在,只需点击几下,即可抓取 Android 模拟器上 Flutter 应用的 HTTPS 流量。
原文
如果你曾尝试在 Android 模拟器上抓取 Flutter 应用的 HTTPS 流量,一定深有体会。与 iOS 不同,Android 让这件事出奇地困难,而 Flutter 又在此基础上增加了一层复杂性。
本教程将演示如何使用 Proxyman 6.4.0 正确完成这一操作。
问题所在
在 Android 模拟器上调试 Flutter 的网络请求比较棘手,原因有以下几点:
- Flutter 会忽略系统代理设置:Dart 的 HttpClient 默认不使用系统代理,因此仅在模拟器上配置代理是无济于事的。
- Android 的证书信任机制:自 Android 7 起,用户安装的证书默认不受信任。你需要修改应用的网络安全配置。
- 手动配置很繁琐:通过 adb 安装证书、配置 Wi-Fi 代理、编辑 XML 文件……步骤多,容易出错。
Proxyman 6.4.0 通过 Android 模拟器自动设置简化了这一过程,但你仍需配置 Flutter 代码,使流量经由代理转发。

前提条件
- Proxyman macOS 6.4.0 或更高版本
- 安装了 Android 模拟器的 Android Studio(API 24+)
- 你的 Flutter 项目
✅ 新方案
- 在 Android Studio 中打开 Android 模拟器,并确保选择的是 Google APIs 版本,而不是 Play Store 版本。
- 在 Proxyman 中,进入 Certificate Menu → Install Certificate on Android → Emulator。
- 确保勾选 “Install Proxyman VPN” 复选框。
- 点击 “Override all Emulators” 按钮。

就这么简单。无需手动执行 adb 命令,也无需在 Android 设置中层层查找。
- 此时,一个新的本地 VPN 会被安装到你的 Android 模拟器上。点击 “Start” 按钮启动 VPN。
- 你应该能看到 VPN 正在运行,状态显示为 “Connected”。

- 现在,你可以在 Android 模拟器上运行 Flutter 应用了。
- 你应该能看到 HTTPS 流量已被 Proxyman 抓取。

⚠️ 旧方案
如果你使用的是 Proxyman 6.3.0 或更早版本,则需要按照旧方案操作。
步骤 1:在 Flutter 代码中配置代理
Flutter 不会读取系统代理设置,因此你需要在代码中手动配置 HTTP 客户端。
具体做法取决于你使用的 HTTP 库:
使用 http 包
import 'dart:io';
import 'package:http/io_client.dart';
// Use your Mac's IP address (shown in Proxyman's Android setup guide)
// For emulator, you can use 10.0.2.2 which points to your host machine
String proxy = '10.0.2.2:9090';
HttpClient httpClient = HttpClient();
httpClient.findProxy = (uri) {
return "PROXY $proxy;";
};
// Allow Proxyman's certificate
httpClient.badCertificateCallback =
((X509Certificate cert, String host, int port) => true);
IOClient myClient = IOClient(httpClient);
// Now use myClient for your requests
var response = await myClient.get(Uri.parse('https://api.example.com/data'));
使用 Dio
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:dio/io.dart';
String proxy = '10.0.2.2:9090';
Dio dio = Dio();
dio.httpClientAdapter = IOHttpClientAdapter(
createHttpClient: () {
final client = HttpClient();
client.findProxy = (url) => 'PROXY $proxy';
client.badCertificateCallback = (cert, host, port) => true;
return client;
},
);
// Now use dio for your requests
var response = await dio.get('https://api.example.com/data');
提示:10.0.2.2 是 Android 模拟器中的一个特殊别名,指向宿主机(你的 Mac)的 localhost。这是连接运行在 Mac 上的 Proxyman 最简单的方法。
只在开发阶段启用 badCertificateCallback。发布到生产环境前务必将其删除。
步骤 2:使用 Proxyman 设置 Android 模拟器
接下来是简单的部分。Proxyman 6.4.0 可以自动配置你的 Android 模拟器:
- 在 Android Studio 中打开 Android 模拟器
- 在 Proxyman 中,进入 Certificate Menu → Install Certificate on Android → Emulator
- 点击 “Override all Emulators” 按钮。

就这么简单。无需手动执行 adb 命令,也无需在 Android 设置中层层查找。
步骤 3:运行 Flutter 应用
- 确保 Proxyman 正在运行
- 在 Android 模拟器上运行你的 Flutter 应用:
flutter run
- 在应用中触发一些网络请求
- 查看 Proxyman,你应该能看到来自 Flutter 应用的 HTTPS 流量
别忘了为需要检查的域名启用 SSL Proxying。在 Proxyman 中右键点击某个域名,然后选择 “Enable SSL Proxying”。
故障排查
能看到流量,但显示 SSL 错误
- 如果你使用的是旧方案,请确认调试用的 HTTP 客户端接受 Proxyman 证书
- 确认证书已安装:在 Android Settings 中依次进入 Security → Encryption & Credentials → Trusted Credentials → User 标签页
- 重启模拟器后再试一次
Proxyman 中没有出现任何流量
- 仔细检查 Flutter 代码中的代理配置
- 确保使用的是
10.0.2.2:9090(而不是 localhost) - 确认 Proxyman 正在运行,并在 9090 端口上监听
应用崩溃或网络请求失败
- 检查
badCertificateCallback是否设置正确 - 确认模拟器可以访问互联网(可尝试在模拟器中打开 Chrome)
总结
在 Android 模拟器上抓取 Flutter 的 HTTPS 流量需要完成以下步骤:
- 在 Flutter 的 HTTP 客户端代码中配置代理
- 仅在调试环境中信任 Proxyman 证书
- 使用 Proxyman 的 Android 模拟器自动设置功能
- 运行应用并检查流量
配置完成后,你即可使用 Proxyman 的全部调试工具(Breakpoint、Map Local、Scripting)来测试和调试 Flutter 应用的网络层。
完成后,请在 Android 模拟器设置窗口中使用 Revert All Changes,或从模拟器中移除测试用的 VPN 和代理。切勿将 badCertificateCallback 或接受所有证书的规则随正式版本发布。这些捷径对本地调试构建很有用,但会让正式版本存在安全隐患。
下一步
- 从 Flutter iOS 应用抓取 HTTPS 流量 — 适用于 iOS 模拟器和真机的类似教程
- Android 模拟器设置指南 — 面向原生 Android 应用的详细步骤说明
- 抓取 React Native 应用的 HTTPS 流量 — 如果你也在使用 React Native
- Proxyman Flutter 文档 — 完整的技术参考
Proxyman 是一款高性能的 macOS/Windows/Linux 应用,帮助开发者抓取并检查 iOS、Android 应用及模拟器、仿真器中的 HTTP/HTTPS 流量。
前往 https://proxyman.com 获取。
