Charles简介
Charles是什么
Charles中文名叫青花瓷,是PC常用的网络封包截取工具,其实是一款基于HTTP协议的代理服务器,通过将自己设置成系统(电脑或浏览器)的网络访问代理服务器,然后截取请求和请求结果,达到抓包分析的目的。
该软件是用Java写的,能够在Windows、Mac、Linux上使用
Charles的工作原理
前置步骤
- 需要运行Charles并配置代理
- 在客户端上面需要配置代理
步骤
- 由客户端发送请求;
- Charles接收在发送给服务端;
- 服务端返回请求结果给Charles;
- 由Charles转发给客户端。
Charles的主要功能
- 抓取HTTP和HTTPS的请求和相应
- 支持重发网络请求,方便后端调式
- 支持修改网络请求参数
- 支持网络请求的截取并动态修改(断点调试 )
- 支持模拟慢速网络(流量控制),主要是模仿手机2G/3G/4G的访问流程
Charles安装与配置
安装Charles
Charles官网:http://www.charlesproxy.com
- 根据不同的系统,选择对应链接下载
注:window安装,Charles下载后,打开安装程序,按照提示一路下一步,就可以安装成功了
MAC版安装包打开后将 Charles 拖到 Application 目录下即可
Charles界面:
PC 抓取HTTP协议
启动Charles后,Charles会自动设置成浏览器的代理,不需要进行过多的设置。通过PC浏览器浏览网页时,浏览器会发送网络请求和接收响应,Charles就会直接抓取到这些请求信息和响应信息。
PC 抓取HTTPS协议
https协议的包不能正常显示,会显示unknown,需要安装SSL证书才可以
安装SSL证书步骤:
1.点击顶部菜单栏【Help(帮助)】–>选择【SSL Proxying(SSL代理)】,点击【install Charles Root Certificate(安装Charles Root证书) 】安装Charles根证书即可(PS:安装过程一直下一步就可以)
-
点击【Proxy(代理)】–>【SSL Proxying Settings…(SSL代理设置)】
-
在弹出选项卡中,勾选【Enable SSL Proxying(启用SSL代理)】点击【add(添加)】,在Host输入【*】表示接收任何主机,在Prot输入【443】最后点击【ok】保存。
完成以上操作,就完成Charles抓取HTTPS数据包的所有配置了。
抓取APP端的HTTP/HTTPS协议
Charles可以抓取来自App发出的HTTP/HTTPS请求。
手机抓包需要在电脑端配置下,并且同时需要手机和电脑在同一网络下,也就是手机和电脑连接同一个wifi。
电脑端配置:
1、电脑端启动Charles;
2、点击【Help(帮助)】–>【local IP Address(本地IP地址)】获取下ip地址。(也可以直接通过电脑自带的CMD命令来获取电脑IP【ipconfig】)
方法一:
方法二: 打开”运行”(快捷键:win+R键;或者在任务栏的”搜索”按钮中查找并点击”运行”),输入“cmd”后进入命令行窗口,在命令行窗口中输入”ipconfig”命令查看IP
3、点击【Proxy(代理)】–>【Proxy Settings…(代理设置)】,设置下http代理端口号“9999”,默认是“8888”,只要不和其他程序冲突即可。
手机端设置:
1.打开手机的设置页面;
2.选择【无线和网络】;
3.选择【WLAN】;
4.点击wifi进入详情界面;
5.点击【代理】【手动】;
6.输入电脑【IP地址(192.168.1.12)】以及端口号【8888】,这是我本机的,根据自己情况合理配置;
7.点击【保存】;
电脑端Charles弹出链接请求后,点击【Allow(同意)】
接下里验证下手机请求,打开手机App,或者手机浏览器。当我们看到Charles里能抓到这个连接,就说明配置没问题。
如果看到unknown,那是因为我们没有安装针对手机端的证书,下面继续我们手机端HTTPS证书安装。
安装手机端HTTPS证书
- 点击顶部菜单栏【Help(帮助)】–>选择【SSL Proxying(SSL代理)】,点击安装【Install Charles Root Certificate On a Mobile Device or Remote Browser
意思是:在手机设置好代理后,在手机浏览器中访问 chls.pro/ssl 下载证书,并安装。
在手机上进行下载证书,并安装即可。
模拟慢速网络
在 Charles 的菜单上,选择 “Proxy”–>“Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,点击可选择 Throttle Preset 的类型: