1.简介
Charles和Fiddler一样不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求。
Charles也能截获 Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。
今天宏哥讲解和分享Charles如何截获安卓移动端发出的 HTTP/HTTPS 请求。
2.环境准备
Charles如果想要实现手机抓包,需要先满足下面 3 个条件:
(1)电脑上安装有Charles抓包工具。
(2)安装有Charles的电脑必须跟手机处在同一个网络里,并且手机网络代理必须设置为Charles,当我们的手机发送数据时必须经过Charles这一层服务。
(3)在Charles中设置好捕获 HTTPS。
1.宏哥的环境是Windows 10版本 64位系统。如下图所示:
如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a
2.夜神模拟器的安卓版本是:5.1.1 。 如下图所示:
3.大致思路步骤
1.电脑本地安装charles证书
2.查看电脑charles的IP和端口号
3.手机连接charles,抓取简单的http
4.charles设置ssl proxy setting
5.手机安装charles证书
4.为什么需要安装Charles的CA证书呢?
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证书,实际上流程还是一样的。
5.安卓手机抓包配置
5.1Charles PC端http配置
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”,如下图所示:
5.2Charles PC端SSL(https)配置
无论电脑端还是手机端进行抓取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类型的包了,接下来我们就来进行安卓手机端代理的配置。
5.3安卓手机设置
本节内容适合所有的 Android设备。下面以夜神模拟器为例进行讲解,其他品牌的模拟器和真实的手机操作方法与此差不多。具体操作步骤如下:
1.在确定了手机和Charles在同一局域网下之后, 那么我们来到Android手机的设置选项下,找到夜神模拟器手机当前连接的WLAN(一些 Android 手机是单击右边的箭头,有的是长按弹出对话框),如下图所示:
2.看到有一个wifi信号,长按这个信号,出现修改网络的弹窗。如下图所示:
3.点击修改网络,选中高级选项,打开高级选项,将代理设为手动,代理服务器主机名填写电脑的IP,端口号填写为主机抓包工具的监听端口。如下图所示:
4.点击保存,就成功完成代理的设置了。如下图所示:
5.电脑出现允许代理的提示,点击Allow即可,如下图所示:
那么到此Android手机的网络代理设置就到此为止,其他不同型号的Android模拟器和真机设置大同小异,以此类推,实在不会的自己可以百度一下。到此处表示已经可以抓http的手机包了。
5.4测试Charles捕获手机发出的 HTTP
1.打开手机上的浏览器,在浏览器中输入链接:http://open.vipexam.org。中科VIPExam考试学习资源数据库网站用的是 HTTP 协议而不是 HTTPS 协议,查看 Fiddler 是否捕获到了 HTTP 数据包。如下图所示:
2.打开手机上的 APP,在 APP 中进行一些操作,查看 Fiddler 是否能捕获到 HTTP 数据包。如下图所示:
如果抓不到 HTTP 的包,很可能是 Windows 防火墙的问题,到控制面板中关闭防火墙后再试试。
5.5测试Fiddler捕获手机发出的HTTPS
1.打开手机上的浏览器,在浏览器中输入HTTPS协议,查看Charles是否捕获到了HTTPS数据包。一直在报证书安全警告错误,无法抓取,因此需要我们安装证书,原因宏哥在抓取PC端Web页面包已经说过了,这里就不做赘述了。如下图所示:
2.打开手机上的APP,在APP中进行一些操作,查看Fiddler是否能捕获到HTTPS数据包。又出现了Unknown,如下图所示:
到此,我们知道了要想抓取手机端Https的数据,还的配置证书,证书不用问了,还是Charles下发的。
5.6Android手机配置证书
通过前边宏哥的测试,我们知道在抓取Android手机数据包的时候 跟web端也是一样,都需要配置证书,否则是无法正常进行抓包的。之前已经在我们的android手机上配置好了Charles的代理服务了,那么现在就可以通过ip+port的方式来访问Charles从而下载对应的证书。具体操作步骤如下:
1.在Android手机上打开(自带)的浏览器,输入:http://chls.pro/ssl 来下载证书。如果不出意外的话就会出现如下界面:
2.给证书命名为:CharlesRoot,点击“确定”,如下图所示:
3.点击“确定”后,需要输入凭据存储的密码。如下图所示:
4.再次点击“确定”,提示需要设置锁屏密码(注:选择安装的文件后,需要输入手机的锁屏密码。Android一定要有锁屏密码才能安装证书),如下图所示:
5.点击“确定”。按要求设置一个手机密码,自己设置一个,记住密码就行,最后不用了去系统-安全-密码中去掉即可,如下图所示:
6.完成锁屏密码后,提示证书已安装,证书安装成功后,如果你的手机系统没有设置密码或者锁屏图案,则系统会提示你设置锁屏图案或者密码。如下图所示:
7.证书安装好后,查看已信任证书:具体位置在【设置--->安全--->信任的凭据--->用户】,如下图所示:
6.开始Android抓包
通过前边的配置,我们现在可以开始抓安卓手机的https的包了。
1.打开手机上的浏览器,在浏览器中输入HTTPS协议的网站,例如:百度。如下图所示:
7.小结
Charles和Fiddler一样,一个手机可以安装多个证书,但是每安装的一个证书里面都设置有IP地址,所以:安装的证书和电脑IP是一一对应的,当前的这个证书只能针对某一台电脑使用,更换电脑后,该证书将不能使用,只能重新安装与更换的电脑的IP相同的证书才能使用。
对了,关于Android7.0的版本在Fiddler那里已经详细地介绍了,只不过是工具换了一下,原理都差不多,这里和后边就不再做介绍了。而且这里介绍的和Fiddler抓包安卓手机的设置也基本一致,种种原因这里又啰嗦水了一遍。凑合看吧。