一、charles是什么
info:使用青花瓷也有一段时间了,之前都是用于抓自己项目app的http请求包,但是最近由于使用的时候遇到了https不能被展示的问题,结果遇到了一些坑,打算写一下,方便自己和别人。青花瓷可用于抓取安装青花瓷本地电脑的浏览器(http请求),可以在App(Android、ios)的手机上设置代理,用于抓取app发出的http或https(http+ssl)请求的包(这个需要对https有一定的理解,后面会写一篇https的文章。。。)。省略过下载(本想在****放一个包的,但是不让放的)和安装的过程。
二、charles抓App的http请求包
一般来说现在手机都会使用wifi,则只是要求手机的wifi网段(被自动分配的IP地址)和安装青花瓷的电脑的IP在同一网段内即可。这点很重要。我最近就有两个,搞了半天才发现,不在同一网段,不能请求数据(原因是公司开发的时候由于maven私服会在另一个网段的服务器上,而手机使用的是另一个wifi,所以没有注意这一点)。
1、charles端配置
打开charles软件,在proxy 》 proxy Setting中,可以看到http的默认监听端口是8888,并且可以看到在第三个页签中是windows窗口,用于监听当前windows系统的请求抓包,如下图:
需要知道当前电脑的IP地址,方便同一域名的手机设置代理(ipconfig 或ipconfig -all):
2、手机端配置
需要在手机的wifi连接下配置代理,顺序如下图:
则若当前的请求为http(明文传输)请求,则在青花瓷端可以抓包,并且解析数据了,如图:
三、charles抓App的http请求包
首先一点要在保证上面都ok的情况下,特别是刚才说的同一网段,并且能抓http请求包的情况下再来配置https的,首先要知道https就是在http请的基础上加上ssl(secure sockets Layer)层,然后再加上公认的CA(Certificate Authority)证书授权中心。我在安装的过程中遇到一个坑,当我在我的ios (系统为11)的手机上用浏览器打开http://www.charlesproxy.com/getssl/的时候,发现没有下载证书,就是因为没有上面的安装条件。
1、在charles端设置ssl代理
第一、首先需要安装证书,如下:
其中chls.pro/ssl就是需要在手机浏览器中下载证书的地址,也可以只有刚才说的http://www.charlesproxy.com/getssl/。
第二、这样手机端的证书就设置完成了。设置服务器端的证书,步骤如下图:
第三、然后就需要配置charles端的ssl代理,还在是proxy菜单下,找到ssl proxy进行设置IP和端口等,如下图:
2、在ios端安装证书
在手机浏览器中输入上面的地址,即马上会下载证书包(若没有反应请检查上面的步骤),安装完成后需要同意证书的使用,并设置ssl的代理,如下图:
在完成以上安装后需要在,ios手机的设置中找到以下路径:设置》通用》关于本机》证书信任设置(在最下面),将Charles Proxy CA... 设置为信任状态,再看看能不能抓到https的包并且进行解析,如果一切正常,则如下: