对于互联网的开发人员和测试人员来说,抓包工具对于我们的工作都是非常有帮助的,而Charles是一款非常优秀的抓包工具。
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器。
Charles 通过将自己设置成系统的网络代理服务器,使得所有的网络请求都通过它来完成,从而实现了网络封包的截取和分析。技术人员可以通过Charles查看的信息包括request, response和HTTP headers等。
本机安装的 Charles 版本是 Windows 平台下的 Charles 4.2.7。
启动Charles后,Charles会自动设置成浏览器的代理,不需要进行过多的设置。通过PC浏览器浏览网页时,浏览器会发送网络请求和接收响应,Charles就会直接抓取到这些请求信息和响应信息。
开启抓包和关闭抓包:
开启抓包和关闭抓包的开关,是上图红框中的圆形按钮。黑色圆点表示【关闭】抓包状态,红色圆点表示【开启】抓包状态。
上图是抓到的请求信息和响应信息,上半部分是请求,下半部分是响应。
虽然现在Charles能够直接抓包了,但是https协议的包是不能正常显示的,会显示unknown,需要安装SSL证书才可以。
安装SSL证书的步骤:
1.点击顶部菜单栏【Help(帮助)】–>选择【SSL Proxying(SSL代理)】,点击【install Charles Root Certificate(安装Charles Root证书) 】安装Charles根证书即可;
证书安装一直下一步就可以。
2. 点击【Proxy(代理)】–>【SSL Proxying Settings…(SSL代理设置)】
3. 在弹出选项卡中,勾选【Enable SSL Proxying(启用SSL代理)】点击【add(添加)】,在Host输入【*】表示接收任何主机,在Prot输入【443】最后点击【ok】保存。
具体参考下图步骤1到步骤6:
Charles不仅仅可以抓取来在PC电脑端的HTTP/HTTPS请求,也能够抓取来自App发出的HTTP/HTTPS请求。
手机抓包需要在电脑端配置下,并且同时需要手机和电脑在同一网络下,也就是链接同一个wifi。
1. 在电脑上启动安装好的Charles抓包工具;
2.点击【Help(帮助)】–>【local IP Address(本地IP地址)】获取下ip地址。
也可以直接通过电脑自带的CMD命令来获取电脑IP【ipconfig】。
3. 点击【Proxy(代理)】–>【Proxy Settings...(代理设置)】,设置下http代理端口号“9999”,也可以使用默认值,一般是“8888”。
1.打开手机的设置页面;
2.选择【无线和网络】;
3.选择【WLAN】;
4.IOS点击连接的WIFI后面的感叹号,安卓应该是长按连接的WIFI;
5.IOS点击【配置代理】–>【手动】;安卓点击【修改网络】,再点击【显示高级选项】,点击【代理】【手动】;
6.输入本机【IP地址(10.230.112.67)】以及端口号【8888】,这是我本机的,根据自己情况合理配置;
7.IOS点击【存储】;安卓点击【保存】;
电脑端Charles弹出链接请求后,点击【Allow(同意)】
以下为IOS手机端的详细设置:
接下里验证下手机请求,打开手机App,或者手机浏览器。当我们看到Charles里能抓到这个连接,就说明配置没问题。
如果看到unknown,那是因为我们没有安装针对手机端的证书,下面继续我们手机端HTTPS证书安装。
上图是https包显示unknown:
通过上面的设置,虽然来自我们手机端的Http协议请求可以抓取到,但是HTTPS协议的包是不能抓取的,需要安装配置证书才可以。
Charles配置步骤:
1. 点击顶部菜单栏【Help(帮助)】–>选择【SSL Proxying(SSL代理)】,点击【install Charles Root Certificate(安装Charles Root证书)】安装Charles根证书即可;(上面第2部分已操作的可忽略)
2. 点击安装【Install Charles Root Certificate On a Mobile Device or Remote Browser(在移动设备上或远程浏览器安装证书)】即可;
点击上图的 Install Charles Root Certificate on a Mobile Device or Remote Browser(在移动设备或远程浏览器上安装Charles Root证书) , 会给我们安装提示。
上面的提示框意思是:在手机设置好代理后,在手机浏览器中访问 chls.pro/ssl 下载证书。
这里需要注意的是,有的手机可能会提示:无法安装该证书,因为无法读取证书文件。
解决方法:不要使用系统的浏览器下载,使用第三方浏览器下载,。例如 UC 或者 QQ 浏览器。
下载完成后,证书文件名可能是:charles-proxy-ssl-proxying-certificate.pem
证书下载完成后,在手机上安装该证书,流程如下:
打开手机 设置 -> 更多设置 -> 系统安全 -> 从SD卡安装 , 然后输入你自定义的证书名称即可:
点击 “确定” 按钮,有些手机可能需要输入密码凭证,输入你的手机密码即可。
电脑和手机上证书都安装完毕后,在Charles上开启 SSL Proxy (Proxy -> SSL Proxying Settings )(代理 --- SSL代理设置)
电脑和手机的安装配置完成。
鸣谢:特别感谢所有在CSDN等网站热爱技术、乐于分享的工程师们。
说明:本文只是个人学习之用。