本文为在霍格沃兹测试开发学社中学习到的一些技术,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~
路径:Help > SSL Proxy > Install Charles Root Certificate ,会打开钥匙串访问,如下图所示:

选择 Charles Proxy CA 证书,信任中选择 始终信任 。

证书即可安装成功,并信任。
Tips :如果证书下载安装存在奇奇怪怪的异常,可以点击 Help > SSL Proxy > Reset Charles Root Certificate 重置证书,之后再重新下载 。
路径:Proxy > SSL Proxying Setting >SSL Proxying 勾选 Enable SSL Proxying >OK ,如下图所示:

主导航栏上也有开始/关闭SSL Proxying 的快捷方式,如下图所示:

路径:Help > SSL Proxy > Install Charles Root Certificate on a Mobile Device or Remote Browser ,出现如下弹框:

客户端连接Charles代理,并访问 chls.pro/ssl 下载证书 。证书下载完成之后,有些手机会主动安装证书,有些则不会。如果不会,则进行以下的操作:
找到手机的设置> 密码与安全 > 系统安全 > 凭据存储 > 从存储设备安装证书 > CA 证书 > 仍然安装 > 选择刚才下载的证书文件。
Tips : 如果通过浏览器下载的证书文件不知道存放在哪里,可以把文件分享到微信或者QQ再保存到本地,通常WenXin 或者 QQ 文件夹比较容易找到
到此为止,操作完成,就可以抓取HTTPS请求了。
但是会发现Android 7.0 版本以上的手机,抓取的HTTPS请求显示内容为unknown 。这是为什么呢?这是因为Android7.0 之后默认不信任用户添加到系统的CA证书。Charles证书属于用户证书,如下图所示:
那有没有办法解决呢? 当然有,可以参照这个博客的解决方案:Android 7.0 之后抓包 unknown 和证书无效的解决方案,或者就是换一个低版本的安卓手机,这个方法最简单 😬
如果是自家的APP 应用,那么可以再代码层,做如下的调整修改APK包的属性:
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
trust-anchors>
base-config>
文末说明
推荐博文:接口测试经典面试题:Session、cookie、token有什么区别?