2019-08-09 Flutter框架的APP网络抓包

2019-08-09  本文已影响0人  阿康666666

近期工作中发现Flutter框架下的APP使用fiddler/Charles无法直接抓包进行测试了。
具体原因可参考文章:https://juejin.im/post/5c85f504e51d4510a06d3f0a

附:文中Flutter相关源码:
https://github.com/dart-lang/sdk/blob/master/sdk/lib/_http/http_impl.dart
结论
1.Flutter中是允许使用代理模式的。
2.Flutter中默认的代理环境为空。

对应的解决方法如下:

  1. 方法一:代码中启用代理
    代码中启用Proxy,允许第三方工具通过代理形式抓包分析。
    我们使用了Flutter推荐的dio网络请求框架,因此根据dio的GitHub文档说明

Using proxy

DefaultHttpClientAdapter provide a callback to set proxy to dart:io:HttpClient, for example:

(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
    // config the http client
    client.findProxy = (uri) {
        //proxy all request to localhost:8888
        return "PROXY localhost:8888";
    };
    // you can also create a new HttpClient to dio
    // return new HttpClient();
};

*建议仅测试版本的APP中开启此功能,降低安全风险

  1. 方法二:使用Drony工具
    此方法需在DronyAPP中设置代理的相关信息。
    2019-08-09 Flutter框架的APP网络抓包
  2. 方法三:Wireshark
    只要选对网卡,没有什么数据是Wireshark抓不到的。只要写清楚过滤规则,不管是否走代理模式,均可抓到Flutter框架内的网络请求。
上一篇 下一篇

猜你喜欢

热点阅读