Charles和Fiddler一样不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求。
Charles也能截获iOS设备发出的请求,比如 iPhone、iPad 和 MacBook 等苹果设备。
今天宏哥讲解和分享Charles如何截获苹果移动端发出的 HTTP/HTTPS 请求。
Charles如果想要实现手机抓包,需要先满足下面 3 个条件:
(1)电脑上安装有Charles抓包工具。
(2)安装有Charles的电脑必须跟手机处在同一个网络里,并且手机网络代理必须设置为Charles,当我们的手机发送数据时必须经过Charles这一层服务。
(3)在Charles中设置好捕获 HTTPS。
1.宏哥的环境是Windows 10版本 64位系统。如下图所示:
2.苹果手机的版本是:14.2.1 。 如下图所示:
1.电脑本地安装charles证书
2.查看电脑charles的IP和端口号
3.手机连接charles,抓取简单的http
4.charles设置ssl proxy setting
5.手机安装charles证书
1)先理清一些概念的东西:
a)简单来说,https是http的安全版本,超文本传输协议http是以明文发送数据,而https是具有安全性的ssl加密传输协议,可以这么认为https=http+ssl。
b)采用https的服务器必须从CA申请一个用于证明服务器用途类型的证书,证书是唯一性,只用于对应的服务器。客户端要认可这个服务器是否是安全的,可以进行访问或者交易等操作,则需要进行对服务端的验证。
下图是客户端对服务器的验证过程:
c)ssl证书,遵循了ssl协议,在客户端和服务器之间建立了一条ssl安全通道,一般ssl证书都是在验证服务器身份后颁发给客户端。
d)由于ssl技术已建立在所有主要的浏览器和web服务器程序中,因此,仅需安装服务器证书就可以激活ssl协议,所以客户端通过信任该证书,就相当于信任了该主机(服务器)。
下图是客户端和服务端加密通讯的流程:
2)通过以上一个简单的理顺之后,这也就为什么当我们在使用Charles进行抓包的时候需要安装证书,可以通过ssl数字证书中的私用密钥来解译加密的信息,展示在Charles中,但是Charles有一个特殊的地方,就是实际上客户端安装的是Charles的CA证书,然后Charles安装服务器的CA证书,实际上流程还是一样的。
http是默认配置好的,要是默认安装完没配置好,我们就自己配置一下,默认的端口号是“8888”我们后面设置手机代理的的时候也要注意这个端口要保持一致。
Charles的配置:这是要打开代理功能,具体操作步骤如下:
1.启动Charles,点击“Proxy-->Proxy Settings”,然后在Proxy Settings中填好端口(8888),并且勾选上“Enable transparent HTTP proxying”,最后点击“OK”。如下图所示:
2.查看运行Charles的电脑的IP地址,可以在命令行中运行ipconfig或者直接查看网络配置,如下图所示:
3.可以对照一下当前所安装的Charles中的ip地址是否一致,你可以直接在Charles上可以直接查看Charles的IP和端口,点击“Help-->SSL Proxying”,然后点击“Install Charles Root Certificate on a Mobile Device or Remote Browser”,如下图所示:
无论电脑端还是手机端进行抓取Https的包,都需要先安装对应证书才能使用。具体操作步骤如下:
1.打开charles,点击help-->SSL Proxying-->Install Charles root Certificate 安装证书,如下图所示:
2.点击完“Install Charles root Certificate”后,然后点击“安装证书”,如下图所示:
3.点击“安装证书”后,选择存储位置“本地计算机”,点击“下一步”,如下图所示:
4.证书存储位置选择‘将所有的证书都放入下列存储’,然后点击证书存储后的“浏览”,证书存储选择“受信任的根证书颁发机构”,点击“确定”,如下图所示:
5.点击“下一步”,如下图所示:
6.点击“完成”,提示导入成功。如下图所示:
7.点击proxy》 SSL Proxyng Settings。如下图所示:
8.打开界面如下 弄到跟我一样就可以 如果没有*;443自己按add手动添host :*,port:443 。如下图所示:
这样就可以抓取PC端的http和https类型的包了,接下来我们就来进行安卓手机端代理的配置。
1.手机和电脑连接到同一Wifi下。
2.手机中设置代理,选择【无线局域网】设置---> 点击【配置代理】–>【手动】,输入服务器和端口,点击存储。(输入本机【IP地址(192.168.*.***)】以及上面查看到的端口号【8888】)详细步骤如下:
(1)【设置-无线局域网】,如下图所示:
(2)选择要链接的网络,点击右侧“!”号,如下图所示:
(3)进入该网络的配置页面,滑动到最底部,点击配置代理,如下图所示:
(4)选择手动,输入电脑端的ip和端口后点击存储,如下图所示:
3.手机首次连接charles后发起任意http请求会弹出是否信任窗口,点击Allow,如下图所示:
1手机连接charles代理后,打开safari浏览器,地址栏输入chls.pro/ssl打开网页弹出尝试下载配置文件,点击允许。如下图所示:
2手机设置--->通用--->描述文件与设备管理中查看下载的配置文件,点击charles Proxy CA(xxx)选择安装,如下图所示:
敲黑板!!!
**注意1:Safari浏览器输入这个网址chls.pro/ssl,安装不了证书的情况,需要注意:
3手机设置--->通用--->关于本机--->证书信任设置中开启刚刚下载的证书,如下图所示:
至此代理设置完毕,可以在charles抓取Https的请求。
Charles和Fiddler一样,一个手机可以安装多个证书,但是每安装的一个证书里面都设置有IP地址,所以:安装的证书和电脑IP是一一对应的,当前的这个证书只能针对某一台电脑使用,更换电脑后,该证书将不能使用,只能重新安装与更换的电脑的IP相同的证书才能使用。