flutter不能抓包

本文介绍了如何在Android和Flutter应用中通过MethodChannel进行通信,以获取手机的IP地址和设置代理。在Android端,通过System.getProperty获取HTTP代理信息,而在Flutter端,通过调用平台方法来获取并打印IP地址。同时展示了如何在Dio网络请求库中设置代理,以便进行网络抓包。
摘要由CSDN通过智能技术生成

需要获取手机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 );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值