You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法使用JMeter捕获Flutter应用HTTPS流量的问题求助

Flutter应用JMeter流量录制问题解决

核心结论

是的,非Debug构建的Flutter应用默认会屏蔽系统代理,想要用JMeter拦截其网络流量,必须使用开启代理支持的构建版本,或者对Release构建做针对性配置。

原因与具体解决方法

1. Flutter的默认网络行为

Flutter框架在Release模式下,默认会忽略设备的全局代理设置。不管是自带的HttpClient还是常用的Dio等网络库,都不会主动读取系统代理配置,这就是你能录制其他应用流量,但无法捕获Flutter应用请求的核心原因。

2. Debug构建的快速验证

如果可以生成Debug版本APK,直接安装测试即可:

  • Debug构建默认允许代理,只要你已正确安装JMeter的根证书,就能正常录制流量。

3. 配置Release构建支持代理

如果必须使用Release构建,需要修改项目配置:

  • 在Flutter项目的android/app/src/main/AndroidManifest.xml中,添加网络安全配置声明:
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config">
    
  • 在android/app/src/main/res/xml目录下创建network_security_config.xml文件,内容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
                <certificates src="user" /> <!-- 允许信任用户安装的JMeter根证书 -->
            </trust-anchors>
        </base-config>
    </network-security-config>
    
  • 若使用Dio等第三方网络库,需显式开启代理支持(可通过编译开关控制仅测试环境生效):
    import 'package:dio/dio.dart';
    
    void setupDio() {
      Dio dio = Dio();
      // 仅在测试构建时启用代理
      if (const bool.fromEnvironment('USE_PROXY')) {
        dio.options.proxy = 'http://你的电脑IP:8889';
      }
    }
    
    编译时添加参数:flutter build apk --dart-define=USE_PROXY=true

4. 额外检查项

  • 确认JMeter根证书已被标记为“用于VPN和应用”:部分设备安装证书后,需在系统设置中手动指定证书用途。
  • 检查Flutter应用是否有自定义证书校验逻辑:如果代码中固定了信任证书列表,需调整逻辑允许信任用户安装的证书。

内容的提问来源于stack exchange,提问作者WarunaDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:17:07