背景
网上有很多关于使用 Charles 对 http 和 https 进行抓包的教程。其中唐巧大佬写的这篇Charles 从入门到精通是本人看过的较为详细的关于 http 抓包的教程,同时也介绍了很多关于 Charles 的使用,而不仅仅是简单地说明如何进行配置。
而关于 https 抓包的教程,目前本人看到的大多数教程都只适用于 iOS 9 及以下版本,在 iOS 10 及 iOS 11 系统上拦截到的请求只能看到乱码。因此,写下这篇文章做个记录。
对 https 进行抓包
Charles 对 https 进行抓包的配置其实很简单,只需要在原来配置 http 抓包的基础上再增加两个步骤即可。
- 设置 SSL 代理
- 安装证书
设置 SSL 代理
通过选择菜单栏的 “Proxy” -> “SSL Proxying Settings”,如下图:
打开 SSL 代理设置弹窗,如下图:
勾选 “Enable SSL Proxying” -> “Add” 添加拦截的规则,如下图:
- “Host” 填入拦截的主机域名,* 表示拦截所有请求
- “Port” 填入拦截的端口,抓取 https 一般为 443
安装证书
SSL 代理设置完成之后需要进行证书的安装。mac 上必须要安装证书,视情况在模拟器或手机上安装证书。
mac 安装证书
如图所示,通过选择菜单栏的 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate” 在 mac 上安装证书。
注意:此处安装证书之后还需要在钥匙串中将该证书的信任状态由系统默认设置为始终信任,如下图:
模拟器安装证书
模拟器安装证书非常简单,通过选择菜单栏的 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate in iOS Simulators” 即可。如下图:
手机安装证书
在手机上安装证书通过选择菜单栏的 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,如下图:
此时,Charles 会弹出提示框。提示我们需要设置代理,然后访问 chls.pro/ssl 下载证书并进行安装。
设置代理
手机在连接 Wi-Fi 的情况下,通过点击 Wi-Fi 名最后的详情按钮进入详情界面,将 HTTP 代理设置为手动,并根据 Charles 的弹窗将 ip 和 端口填入。
注意:
代理配置完成之后,Charles 会弹出一个窗口提示是否信任手机 ip 的请求,此时应选择 “Allow”,如下图:
下载安装证书
代理设置完成之后,通过 Safari 访问 chls.pro/ssl 即可下载证书,证书下载完成时会弹出安装证书的窗口,点击安装即可。如下图:
注意:
以上模拟器和手机安装证书的步骤适用于 iOS 9 及以下的系统,也是网上很多教程包含的内容。
在 iOS 10 和 iOS 11 系统上我们还需要进行证书信任设置,这个选项比较隐蔽,通过以下步骤进入:
设置 -> 通用 -> 关于本机 -> 证书信任设置
找到 Charles 的证书,打开信任开关即可。如下图:
总结
总而言之,在配置的过程中特别注意 iOS 10 和 iOS 11 系统上还需要在关于本机中进行证书信任设置。
到此为止我们就可以进行 https 抓包了。