flutter 如何抓包

3,139 阅读1分钟

我的电脑是安装的charles 抓包工具,其他的抓包工具,方法是一样的。

Flutter 应用的网络请求是不走手机的系统代理的,也就是说你在系统设置中设置了代理地址和端口号后 Flutter 也不会走你的代理,而抓接口是必须要设置代理的。

解决方案: 必须在代码中设置代理,同时不需要再手机上网络上设置 网络代码。同时手机的wifi 要和电脑的网络是同一个局域网的

Dart 自带的 HttpClient 或 三方库 Dio 进行网络请求

1.HttpClient

HttpClient client = HttpClient();
client.findProxy = (uri) {
  // 设置是否开启代理
  return AppConstant.isDebug ?  "PROXY ip地址加端口号" : 'DIRECT';
};

2.Dio

 Dio dio = Dio();
  // 设置代理用来调试应用
  (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
    client.findProxy = (Uri) {
      // 设置是否开启代理
      return AppConstant.isDebug ? 'PROXY ip地址加端口号' : 'DIRECT';
    };
  };

设置完之后 需要重启项目,同时上线的时候需要屏蔽代理,否则会出现严重问题,接口请求拿不到数据