Charles踩坑记录
Charles的妙用在于能够伪装成中间人干预https通信。它使用了中间人代理的方法(man-in-the-middle,也常作为一个黑客攻击手段),代替你的app接受server的证书,然后使用这个证书通过SSL和server通信;同时,Charles会动态的生成一个对应的证书(用Charles的CA证书签名),然后使用这个证书和你的app通信,这样就完成了一个中间人代理,从而可以把app和server的https包给抓到和解码出来。
一、真机安装根证书
总体步骤是:safari安装根证书 ---> 添加需要检测的域名列表 ---> 抓包分析
1、首先要安装Charles的根证书,用iOS设备的safari打开http://www.charlesproxy.com/getssl,会弹出一个提示框让你安装证书,确认安装即可。然后到设置->关于本机->证书信任设置中信任Charles根证书
2、打开菜单Proxy -> SSL Proxying Settings...,在弹出的设置框中,勾选Enable SSL Proxying,同时添加需要代理的域名,端口号统一为443(这里直接设置成了*来代理全部https域名)
3、可以通过breakpoint修改请求或者返回数据
二、模拟器安装根证书
模拟器安装根证书比较简单:
image坑:安装后需要重启模拟器才能正常抓HTTPS包
三、MAC安装根证书
直接在Charles的Help菜单中安装;安装完成后去系统的钥匙串访问中右键证书信任它。
四、可能踩到的坑
1、没有安装Charles的证书,却开启了Enable SSL Proxying,那么会造成所有的https访问都会失败,同时Charles会在每个https请求的overview那里友好的提示你需要信任Charles的根证书:“You may need to configure your browser or application to trust the Charles Root Certificate”,意思是根证书安装失败。这时重走第1步就行。
image2、通过断点的方式修改请求时,客户端的请求超时计时器一直在走,因此可能导致超时,这点要注意下。