抓取Https的额外配置
在不做任何证书配置的情况下,抓取Https看到的response是一堆乱码的字符。左侧Structure里看到的请求host也是一把锁的样子,点击展开后,下面的请求也都是一把锁,显示的<unknown>。
image默认我们是看不到https的请求数据的。我们需要安装证书。一般需要如下两个步骤:
第一步: 配置电脑证书 (不配置好像也没问题)
在Charles的顶部菜单栏,选择 Help > SSL Proxying > Install Charles Root Certificate,就会把证书安装到电脑的钥匙串里。
image打开钥匙串,钥匙串选择登录,种类选择证书,就可以看到安装的Charles证书了。
image如果证书上有个红色的叉,是因为此证书不被信任,双击证书,展开信任那一栏,选择始终信任就可以了。信任完后,钥匙串看到的证书,红叉就会变成加号。
image2、SSL Proxing > Install Charles Root Certificate on a Mobile Device or Remote Browser
第二步: 配置手机描述文件
-
下载描述文件。浏览器打开http://chls.pro/ssl,最好用手机自带的Safari打开,微信直接打开不会显示下载弹框。
image -
安装描述文件。设置 > 通用 > 描述文件,点击右上角安装。
image -
证书信任设置。设置 > 通用 > 关于本机 > 证书信任设置(滑倒底部才能看见),打开信任开关,在弹出的警告框点击继续就可以了。
image
注意: 如果不打开这个开关,在SSL Proxying Settings设置了Include的所有服务器地址都是无法请求到数据的。
虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。
第二步: 配置要抓取的https请求。
1、Proxy > SSL Proxying Setting,点击add,把需要抓取的https请求的host添加进去就可以了(port可填可不填)。下图为抓取百度主页是填入的host。
抓取一个不认识的网站或者app时,如何确认host?
Structure那一排列表,截取https://后面的那一截就是了。
本文转载自正直的瓜子脸之Charles使用总结。
网友评论