前置条件:charles抓取手机数据包的前提,手机和电脑需要在一个局域网内。
1、charles官网下载地址
Download a Free Trial of Charles • Charles Web Debugging Proxy
下载以后按提示安装即可。
2、charles的配置
在charles中【proxy->proxy Settings】设置进行代理的端口
3、手机安装charles证书
先在PC-charles【Help->SSL Proxying】点击install charles root certificate on a mobile device or remote browser,查看手机端如何与charles相连
弹框提示内容里写了怎么在手机上使用charles代理,接下来我们就按照步骤来操作
4、手机配置代理
在手机端进入wifi设置,长按当前连接的网络,选择修改网络-显示高级选项-设置代理为手动
打开高级选项,选择手动
服务器主机名填入charles上弹出的地址,我这个是172.16.47.7,服务器端口8888.
手机连上charles以后,charles会弹出一个提示,询问是否允许设备连接,一定要同意。
如果不小心点了deny,可以重启charles重新设置手机与之连接。
手机上未安装charles证书,手机网络会显示已连接不可用。
5、手机下载并安装charles证书
使用手机浏览器访问http://chls.pro/ssl,按提示下载证书
进入浏览器的下载管理可以看到这个证书
如图即我们刚刚下载完成的证书
直接点击,却提示“无法打开文件”,怎么办?
我们选中下载好的文件,点击更多-任务详情,去文件管理中找到ta
长按选中文件,点击更多-重命名
将.pem的后缀改为.crt后确定,根据提示再次确定
这时再次单击我们重命名的文件,按提示给证书取个名字,安装成功。
如果此时手机还显示无法连接网络,可以重连一下wifi。
6、charles配置抓包https协议
前面做了那么多配置,发现有些包,如https协议的还是抓不到,别急,还得再来个配置
在charles的【Proxy->SSL Proxying Settings】下进行如下配置
到此为止,手机就能使用charles代理啦
7、可能遇到的问题问题
1、有些手机是能用.pem格式的文件直接安装的,如果不能就像文中描述的,重命名为.crt,如果不行也可以换成.cer试试
2、还有部分手机如红米,用自带的浏览器下载的证书不能用,可以尝试下载个【夸克】浏览器,下载后直接安装成功
3、部分应用为了安全起见是不允许非system来进行抓包的,如果是自家app,建议跟开发同学问下,将普通用户模式(user)也加到配置文件中,然后就可以抓包啦……
4、三星设备,用浏览器下载完证书后,不能直接安装,以三星padSM跳00为例,打开【设置】-【生物识别和安全性】-【其他安全设置】-【从设备存储空间安装】-【CA证书】,选择【仍要安装】,找到刚刚下载好的.pem证书,点击【完成】,提示【已安装证书】,说明证书安装成功
5、Android 7版本及以上的系统,不再信任用户级的证书,只信任系统级的证书。如果您需要录制App的HTTPS请求,需要App开启网络安全配置,让App信任用户级的证书。详情见fiddler 抓取https数据出现403问题_fiddler 403-CSDN博客
6、已安装了charles证书,但是https的包还是抓不到,可以去查看证书是否已经过期
以ios为例:设置-通用-VPN与设备管理页面,查看配置描述文件,若有红色,可点击查看详情是否已过期
解决办法:打开charles,Help->SSL Proxying点击Reset Charles Root Certificate…,然后重新在客户端安装证书即可