iOS客户端(1)—charles无法抓包的问题

627 阅读3分钟

多年前charles抓包iOS的时候,记得只需要安装证书即可。最近重新android抓包遇到了高版本手机用户证书无法被信任,需要root,但又懒得去root了,所以用自用的iOS设备抓包试试,昨天试了一下午,发现始终无法抓包成功,所有https的请求都没成功。

解决过程记录一下:

1、iOS设备安装证书过程中无法访问chrls/pro

正常情况下我们需要用手机和电脑在一个局域网下面,点击如下所示项: image.png

然后会弹出弹框,让你在手机上配置代理地址和端口(默认是8888),然后浏览器访问chls.pro/ssl 去下载证书。

image.png

我这里遇到了无法访问chls.pro/ssl 的问题,想到是否端口冲突,改了一个端口8898依然无法访问。

搜一下一般还会让你直接去访问电脑的http://ip:端口/ssl 或者访问另一个chls地址(猜测是高版本charles软件中更新了一个地址)。

我都试了,iOS设备还是无法访问。

最后,其实可以在电脑上保存证书为.cer文件:

image.png

.cer的文件可以兼容iOS和安卓。

image.png

直接隔空投送给iOS设备,iOS设备即可安装该描述文件,安装完后,需要信任证书为已验证状态。

image.png

2、iOS设备安装了证书还是无法成功抓包

按照上述安装完后,再去charles,发现还是无法抓包成功,所有的https请求依然无法抓包。

原来高版本的iOS设备(比如我的17)安装了描述文件后,还需要在通用-关于本机-证书信任设置中,勾选上信任charles证书。

7d8f0c9e337704a79885e4221f06958a.jpg

3、Allow List配置移除

Allow List如果勾选,则只有这里面配置的域名才能访问。

image.png

昨天无意间发现勾选上了,所以这里移除掉:

image.png

4、charles不配置抓包域名无法抓包

然后再去抓包,发现还是无法成功,我又检查了一遍macos proxy勾选上了。

image.png

Proxy Settings里面也没问题: image.png

image.png

于是我又来到了ssl proxying settings里面,按理说我已经配置了 : 包含了所有的域名都抓取,不用再单独配置了,但我还是将要抓包的接口域名再次配置进去了,重新抓包成功了。

image.png

留下一个疑点

昨天我的Android13 小米抓包是成功过的,但是到了抓游戏内容的时候,失败了,然后再试,之前已经抓包成功的api也都无法再抓包成功了。

这里有两个问题:

1、我的Android13是没有root的,charles证书也是安装在用户证书里面的,按理说无法被信任即无法抓包,但是我昨天的确抓包成功了。

2、为什么某一个了内容抓包失败后,再次抓包,所有的api都无法访问成功了。