使用Charles对Flutter应用程序抓包

前言

使用抓包工具对http/https请求进行抓包分析,是移动开发人员常用技能。学习和使用抓包工具,对前后端网络请求交互及分析网络请求问题等有极大的帮助。

Charles下载及使用

Charles破解版下载地址:点击下载
提取码:w1c2
注意阅读破解文档
Charles使用教程:请参考 http://www.cnblogs.com/mawenqiangios/p/8270238.html
抓取https请求需要安装证书,http请求则无需。

对Flutter应用程序抓包

按照使用教程配置后,使用flutter开发的app发起网络请求,发现charles无法抓取请求包。开始一度怀疑是charles或者网络配置不正确,后面通过打开其它原生应用程序,发起网络请求,发现可以正常抓取请求包。
我的flutter应用程序中,网络请求使用的 dio 框架。经查阅dio的文档,发现可以设置http代理。

使用Charles对Flutter应用程序抓包_第1张图片
image.png

然后找到代码中实例化dio的地方,配置http代理。由于是需要连接电脑,并通过charles抓包,所以配置的ip是电脑的ip地址。
cmd命令行输入ipconfig -all,查看电脑当前ip地址


使用Charles对Flutter应用程序抓包_第2张图片
image.png

端口号是charles配置的端口号,在charles Proxy Settting中查看,默认是8888端口,可以修改。


使用Charles对Flutter应用程序抓包_第3张图片
image.png

获取到ip和端口号之后,修改代码如下:
    _dio.onHttpClientCreate = (HttpClient client) {
      client.findProxy = (uri) {
        //proxy all request to localhost:8888
        return "PROXY 172.16.2.176:8888";
      };
      // 你也可以自己创建一个新的HttpClient实例返回。
      // return new HttpClient(SecurityContext);
    };

保存后,重新运行flutter程序并发起请求,这个时候就可以在charles中查看到新发起的请求报文及响应报文了。


使用Charles对Flutter应用程序抓包_第4张图片
image.png

结束语

对flutter应用程序抓包,需要配置http代理。发布应用程序前,记得清除代理配置,否则将导致网络请求失败。

你可能感兴趣的:(使用Charles对Flutter应用程序抓包)