charles捕获http请求
1、Proxy --> macOS Proxy 先打开代理,使得mac上所有请求都通过charles进行代理。
15528325417514.jpg
2、Proxy --> Proxy Settings 设置监听端口号为8888。
15528327774262.jpg
3、此时,用电脑访问百度,就已经可以获取访问的包了,如果我们需要监听手机的访问,就还得在手机上进行设置。
15528329922849.jpg
4、先获取电脑的ip地址,Help --> Local Ip Address
15528331981826.jpg
5、然后在手机连接wifi,此时手机和电脑连接的必须是同一个wifi,然后在手机设置代理。
15528333270180.jpg
6、设置完成后,在手机打开一个网址,此时chartles就可以获取到手机访问的包了。
charles捕获https请求
http的请求我们已经可以获取,但是有些网站是https的,如果我们需要解析https的包,就需要安装证书了。
1、Help --> SSL Proxying --> install Charles Root Certificate,首先在mac安装CA证书。
15528347139321.jpg
2、然后要始终信任该证书。
15528348890706.jpg
3、Help --> SSL Proxying --> Install Charles Root Certificate On ...,然后生成手机上的证书。
15528350169528.jpg
4、Help --> SSL Proxying --> Save ...,然后保存该证书,它会生成一个类似charles-ssl-proxying.pem的文件,把该文件的后缀改为.crt,然后发送到你的安卓手机,进行安装即可。
15528351161931.jpg
5、Proxy --> SSL Proxying setting,设置你要监听的https请求的网址
15528353890176.jpg
6、手机再访问该网址,即可以抓到https的包了。
15528356124857.jpg
常见问题:
charles抓包出现乱码 SSL Proxying not enabled for this host:enable in Proxy Setting,SSL locations
1.情景:抓包的域名下 全部是unknown,右侧出现了乱码
解决方法:proxy -> ssl proxy setting里 添加需要抓包的域名
如果想看所有抓包情况,可以这样设置:
对Flutter应用程序抓包
按照使用教程配置后,使用flutter开发的app发起网络请求,发现charles无法抓取请求包。开始一度怀疑是charles或者网络配置不正确,后面通过打开其它原生应用程序,发起网络请求,发现可以正常抓取请求包。
我的flutter应用程序中,网络请求使用的 dio 框架。经查阅dio的文档,发现可以设置http代理。
image.png
然后找到代码中实例化dio的地方,配置http代理。由于是需要连接电脑,并通过charles抓包,所以配置的ip是电脑的ip地址。
cmd命令行输入ipconfig -all,查看电脑当前ip地址
image.png
端口号是charles配置的端口号,在charles Proxy Settting中查看,默认是8888端口,可以修改。
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中查看到新发起的请求报文及响应报文了。
image.png
注意:对flutter应用程序抓包,需要配置http代理。发布应用程序前,记得清除代理配置,否则将导致网络请求失败。
来源:CSDN
作者:梦想不只是梦与想
链接:https://blog.csdn.net/wangsen927/article/details/104209143