flutter不能抓包
需要获取手机IP地址设置才能抓包,获取IP地址,需要跟原生通讯获取,
1:获取IP地址
安卓代码:
/*** 原生和flutter通讯交互*/ class MainActivity : FlutterActivity() {var methodChannel: MethodChannel? = nulloverride 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 );