使用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应用程序抓包
文章图片
image.png
然后找到代码中实例化dio的地方,配置http代理。由于是需要连接电脑,并通过charles抓包,所以配置的ip是电脑的ip地址。
cmd命令行输入ipconfig -all,查看电脑当前ip地址

使用Charles对Flutter应用程序抓包
文章图片
image.png
【使用Charles对Flutter应用程序抓包】端口号是charles配置的端口号,在charles Proxy Settting中查看,默认是8888端口,可以修改。

使用Charles对Flutter应用程序抓包
文章图片
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应用程序抓包
文章图片
image.png 结束语 对flutter应用程序抓包,需要配置http代理。发布应用程序前,记得清除代理配置,否则将导致网络请求失败。

    推荐阅读