使用 Proxyman 抓取 Android 模拟器上 Flutter 应用的 HTTPS 流量

使用 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 的网络请求比较棘手,原因有以下几点:

  1. Flutter 会忽略系统代理设置:Dart 的 HttpClient 默认不使用系统代理,因此仅在模拟器上配置代理是无济于事的。
  2. Android 的证书信任机制:自 Android 7 起,用户安装的证书默认不受信任。你需要修改应用的网络安全配置。
  3. 手动配置很繁琐:通过 adb 安装证书、配置 Wi-Fi 代理、编辑 XML 文件……步骤多,容易出错。

Proxyman 6.4.0 通过 Android 模拟器自动设置简化了这一过程,但你仍需配置 Flutter 代码,使流量经由代理转发。

使用 Proxyman 抓取 Flutter Android 模拟器的 HTTPS 流量
使用 Proxyman 抓取 Flutter Android 模拟器的 HTTPS 流量

前提条件

  • Proxyman macOS 6.4.0 或更高版本
  • 安装了 Android 模拟器的 Android Studio(API 24+)
  • 你的 Flutter 项目

✅ 新方案

  1. 在 Android Studio 中打开 Android 模拟器,并确保选择的是 Google APIs 版本,而不是 Play Store 版本。
  2. 在 Proxyman 中,进入 Certificate Menu → Install Certificate on Android → Emulator。
  3. 确保勾选 “Install Proxyman VPN” 复选框。
  4. 点击 “Override all Emulators” 按钮。
Proxyman 为 Android 模拟器自动设置
Proxyman 为 Android 模拟器自动设置

就这么简单。无需手动执行 adb 命令,也无需在 Android 设置中层层查找。

  1. 此时,一个新的本地 VPN 会被安装到你的 Android 模拟器上。点击 “Start” 按钮启动 VPN。
  2. 你应该能看到 VPN 正在运行,状态显示为 “Connected”。
Proxyman 为 Android 模拟器自动设置
Proxyman 为 Android 模拟器自动设置
  1. 现在,你可以在 Android 模拟器上运行 Flutter 应用了。
  2. 你应该能看到 HTTPS 流量已被 Proxyman 抓取。
Proxyman 为 Android 模拟器自动设置 - 抓取 Flutter 应用的 HTTPS 流量
Proxyman 为 Android 模拟器自动设置 - 抓取 Flutter 应用的 HTTPS 流量

⚠️ 旧方案

如果你使用的是 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 模拟器:

  1. 在 Android Studio 中打开 Android 模拟器
  2. 在 Proxyman 中,进入 Certificate Menu → Install Certificate on Android → Emulator
  3. 点击 “Override all Emulators” 按钮。
Proxyman 为 Android 模拟器自动设置
Proxyman 为 Android 模拟器自动设置

就这么简单。无需手动执行 adb 命令,也无需在 Android 设置中层层查找。

步骤 3:运行 Flutter 应用

  1. 确保 Proxyman 正在运行
  2. 在 Android 模拟器上运行你的 Flutter 应用:
flutter run
  1. 在应用中触发一些网络请求
  2. 查看 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 流量需要完成以下步骤:

  1. 在 Flutter 的 HTTP 客户端代码中配置代理
  2. 仅在调试环境中信任 Proxyman 证书
  3. 使用 Proxyman 的 Android 模拟器自动设置功能
  4. 运行应用并检查流量

配置完成后,你即可使用 Proxyman 的全部调试工具(Breakpoint、Map Local、Scripting)来测试和调试 Flutter 应用的网络层。

完成后,请在 Android 模拟器设置窗口中使用 Revert All Changes,或从模拟器中移除测试用的 VPN 和代理。切勿将 badCertificateCallback 或接受所有证书的规则随正式版本发布。这些捷径对本地调试构建很有用,但会让正式版本存在安全隐患。

下一步


Proxyman 是一款高性能的 macOS/Windows/Linux 应用,帮助开发者抓取并检查 iOS、Android 应用及模拟器、仿真器中的 HTTP/HTTPS 流量。

前往 https://proxyman.com 获取。

Noah Tran
Noah Tran

最后修订于 2026年7月17日。 删除了过时的表述,并补充了仅限调试版本的证书信任、故障排查和清理说明。

在一处检查你的 Flutter 应用流量

准备好 Android 模拟器,并在 Proxyman 中跟踪 Flutter 应用发出的请求。

试用适用于 macOS 的 Proxyman