背景:之前我的苹果手机是可以正常抓包的,不知道是因为公司网络策略还是charles更新了的原因就是无法抓到包了。由于长久不能抓包影响了我的测试工作,还是决定认真研究一下。另外,charles重置证书或者升级等操作确实可能导致之前的证书失效的,而且每台手机想要换一台电脑抓包都需要安装和这台电脑对应的证书。

操作步骤:

1.重置了charles的证书(可能不是必要的,但是为了方便我还是做了)

ios抓包socket iOS抓包无效_ios抓包socket


2.安装电脑证书(这一块之前没注意看错误提示纠结了很久)

ios抓包socket iOS抓包无效_重置_02


这里默认安装可能会失败,查看失败原因后选择正确的证书存储路径就可以了

ios抓包socket iOS抓包无效_抓包_03


ios抓包socket iOS抓包无效_重置_04


看到导入成功的提示后,点击确定就安装成功了。验证安装成功的方法就是再次安装时显示如下页面

ios抓包socket iOS抓包无效_重置_05


3.手机端设置代理,需要保证PC和手机连接的是同一个wifi(这里只是以ios为例,因为安卓端我们的包不支持抓包)

3.1关闭电脑防火墙(这一步很重要)

3.2查看charles的地址和端口号,点击后会有弹窗,不要关闭弹窗

ios抓包socket iOS抓包无效_重置_06


ios抓包socket iOS抓包无效_重置_07


以上图片的端口设置如下:

ios抓包socket iOS抓包无效_重置_08


3.3手机端按照上一步第二张图片中的地址和端口设置好代理

ios抓包socket iOS抓包无效_抓包_09


3.4然后手机端使用Safari(不能用其他浏览器),访问chls.pro/ssl(这个也是上面的弹窗中提示的地址),此时电脑端会弹出一个确认弹窗,点击allow。说明一下,此时允许之后手机就会连上代理服务器,然后下载了证书之后才能上网。刷新网页下载后按照提示安装

ios抓包socket iOS抓包无效_重置_10


3.5苹果ios13以上的版本需要到设置-通用-描述文件与设备管理中安装一下这个证书(刚刚3.4可能会一起把这一步完成了)

3.6到此时已经基本完成了手机端抓包设置,我此时访问网络有以下提示:

ios抓包socket iOS抓包无效_抓包_11


百度后发现是因为手机安装新证书后是默认不信任的,所以需要设置信任:设置-通用-关于本机-证书信用设置,选择手机刚刚安装的证书,打开信任开关

ios抓包socket iOS抓包无效_抓包_12


4.如果要抓https的包,charles需要再进行一项设置:

ios抓包socket iOS抓包无效_重置_13


说明:如果中间有不生效的情况,建议重启charles或者手机重新连接代理。

问题:
1.安卓抓包时charles一直显示unknown,可以看到报错:Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown),手机APP无法正常访问数据
原因:Andriod7以后, 之后默认不信任用户添加到系统的CA证书,也就是说证书无法正常使用了
解决方法:
1)找一部android7以下的手机,这是最简单有效的方法了
2)让开发改代码,具体操作请看文章
3)root手机,具体操作网上也有很多