前言
使用抓包工具对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代理。
然后找到代码中实例化dio的地方,配置http代理。由于是需要连接电脑,并通过charles抓包,所以配置的ip是电脑的ip地址。
cmd命令行输入ipconfig -all,查看电脑当前ip地址
端口号是charles配置的端口号,在charles Proxy Settting中查看,默认是8888端口,可以修改。
获取到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中查看到新发起的请求报文及响应报文了。
结束语
对flutter应用程序抓包,需要配置http代理。发布应用程序前,记得清除代理配置,否则将导致网络请求失败。