多年前charles抓包iOS的时候,记得只需要安装证书即可。最近重新android抓包遇到了高版本手机用户证书无法被信任,需要root,但又懒得去root了,所以用自用的iOS设备抓包试试,昨天试了一下午,发现始终无法抓包成功,所有https的请求都没成功。
解决过程记录一下:
1、iOS设备安装证书过程中无法访问chrls/pro
正常情况下我们需要用手机和电脑在一个局域网下面,点击如下所示项:
然后会弹出弹框,让你在手机上配置代理地址和端口(默认是8888),然后浏览器访问chls.pro/ssl 去下载证书。
我这里遇到了无法访问chls.pro/ssl 的问题,想到是否端口冲突,改了一个端口8898依然无法访问。
搜一下一般还会让你直接去访问电脑的http://ip:端口/ssl 或者访问另一个chls地址(猜测是高版本charles软件中更新了一个地址)。
我都试了,iOS设备还是无法访问。
最后,其实可以在电脑上保存证书为.cer文件:
.cer的文件可以兼容iOS和安卓。
直接隔空投送给iOS设备,iOS设备即可安装该描述文件,安装完后,需要信任证书为已验证状态。
2、iOS设备安装了证书还是无法成功抓包
按照上述安装完后,再去charles,发现还是无法抓包成功,所有的https请求依然无法抓包。
原来高版本的iOS设备(比如我的17)安装了描述文件后,还需要在通用-关于本机-证书信任设置中,勾选上信任charles证书。
3、Allow List配置移除
Allow List如果勾选,则只有这里面配置的域名才能访问。
昨天无意间发现勾选上了,所以这里移除掉:
4、charles不配置抓包域名无法抓包
然后再去抓包,发现还是无法成功,我又检查了一遍macos proxy勾选上了。
Proxy Settings里面也没问题:
于是我又来到了ssl proxying settings里面,按理说我已经配置了 : 包含了所有的域名都抓取,不用再单独配置了,但我还是将要抓包的接口域名再次配置进去了,重新抓包成功了。
留下一个疑点
昨天我的Android13 小米抓包是成功过的,但是到了抓游戏内容的时候,失败了,然后再试,之前已经抓包成功的api也都无法再抓包成功了。
这里有两个问题:
1、我的Android13是没有root的,charles证书也是安装在用户证书里面的,按理说无法被信任即无法抓包,但是我昨天的确抓包成功了。
2、为什么某一个了内容抓包失败后,再次抓包,所有的api都无法访问成功了。