您现在的位置是:首页 >其他 >flutter不能抓包网站首页其他

flutter不能抓包

zhudaihai 2024-06-17 10:29:39
简介flutter不能抓包

需要获取手机IP地址设置才能抓包,获取IP地址,需要跟原生通讯获取,

1:获取IP地址

安卓代码:

/**
 * 原生和flutter通讯交互
 */
class MainActivity : FlutterActivity() {
    var methodChannel: MethodChannel? = null
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        methodChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "channelName")
        methodChannel!!.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
            //判断方法名是否支持
            if (call.method == "getProxy") {
                result.success(getProxy())
            } else {
                //方法名暂不支持
                result.notImplemented()
            }
        }
    }

    /**
     * 获取代理
     */
    private fun getProxy(): String {
        val proxyAddress = System.getProperty("http.proxyHost", "")
        val portStr = System.getProperty("http.proxyPort", "")
        return "$proxyAddress:$portStr"
    }
}

flutter代码:

getProxyUrl() async {
  const platform = MethodChannel("channelName");
  String result = await platform.invokeMethod("getProxy");
  debugPrint('----------result $result');
  return result;
}

2:设置IP

void _switchProxy(bool enable, String? proxy) {
  /// 设置代理仅在启动的时候生效,所以仅设置开启即可,无需设置关闭,默认就是不开启代理
  if (!enable) {
    return;
  }
  if (proxy == null || proxy.isEmpty || proxy == ":") {
    return;
  }
  //https证书校验
  (_dio?.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
      (client) {
    //非 debug 环境才配置代理
    debugPrint("DioManager setProxy enable:$enable proxy:$proxy");
    client.findProxy = (uri) {
      return "PROXY $proxy";
    };
    client.badCertificateCallback =
        (X509Certificate cert, String host, int port) {
      //全部通过
      return true;
    };
    _isProxyEnable = true;
    return null;
  };
}

//调用

String proxyUrl= await dioNetwork.getProxyUrl();
_switchProxy(kReleaseMode,proxyUrl );

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。