Charles使用详解
前言
Charles是一款非常优秀的代理工具,能帮助我们完成抓包、弱网测试等工作。其本身操作并没有很复杂之处,这里对Charles的诸多操作做一下整理和记录,作为操作手册以备忘。整理的内容只是Charles的一部分功能,后续会随时进行补充。
1 安装
charles官方下载地址:(很奇怪,附上地址后,一直审核不通过。所以这里不贴了,百度一下就能找到)
注册charles:
前往官网下载最新版charles,下载成功后打开charles,菜单栏 Help->Register Charles 弹出注册的窗口,填入Registered Name和生成的license key,点击 Register 注册成功后,charles会自动关闭,手动再次打开即可。
2 开启手机代理
打开charles之后,默认就已经对系统进行了代理,如果没有,则需要在菜单栏的Proxy上勾选上 Windows Proxy。
勾选系统代理后,系统本地发出去的请求都能被截取下来。如果只抓取手机的包的话,则可以取消此项勾选。
2.1 开启代理步骤
接下来,按以下步骤开启手机代理:
- 手机和电脑连接同一个wifi
- 手机打开设置–无线和网络–WLAN,长按已经连接的wifi,选择修改网络,勾选【显示高级选项】,将【代理】选择为【手动】:
服务器主机名:以windows系统为例,在电脑端右键单击开始按钮,选择运行,输入cmd,进入控制台页面,输入 ipconfig,即可获得电脑的IP
服务器端口:在Charles中,点击 Proxy–Proxy Settings,进入下面的页面中,可以修改Port,默认是8888
- 在手机wifi代理页面填好信息后,点击保存,Charles弹出询问窗口,点击 Allow 即可:
点击 Proxy -> Access Control Settings 可以看到IP允许列表,在这里可以对允许连接的设备IP 进行增删管理。
如果想要不弹出上面的询问窗口,可以添加0.0.0.0/0允许所有设备连接到Charles。
2.2 抓包页面
经过以上步骤,手机已经完成开启代理,下面进行一个抓包演示。
页面左侧即是抓取到的请求信息,有structure和Sequence两种展示方式。二者区别在于:前者以树状结构归拢一个域名下的多个请求,后者以时间顺序展示每个请求。
2.3 https请求
默认情况下,Charles是无法抓取到https请求的,如下:
要解决这个问题,我们要安装证书并进行一下设置,下面以Windows和安卓为例整理操作步骤。
首先,Windows端安装证书:
- Help–SSL Proxying–Install Charles Root Certificate:
- 选择安装证书:
- 选择将证书安装在受信任的根证书颁发机构目录:
第二步,Charles设置:
- Proxy–SSL Proxying Settings,进入下面的界面
- 填入相应的host,如果想对所有host开放,填入*即可,端口号填入443,点击OK
打开浏览器访问网址,可以看到Windows端的https请求已经被成功抓取:
第三步,安卓端安装证书:
- Help–SSL Proxying:
- 将手机配置好代理(注意弹层中给的IP不一定正确,还是要以控制台查到的为准),使用手机非自带浏览器访问 http://chls.pro/ssl,下载证书。
- 下载的证书后缀名为.pem,重命名为后缀名 .crt,然后安装即可。
3 弱网测试
Proxy–Throttle Settings 进入限速设置页面:
勾选 【Enable Throttling】即可开启弱网模式,如果勾选【Only for selected hosts】则可对特定地址进行限速。
下面有很多指标,下面简单解释一下:
- Bandwidth(带宽):带宽定义数据可以传送超过时间上限,这是千比特每秒指定。可以指定上载和下载链接的不同带宽限制。
- Utilisation(利用率):利用率是总带宽的百分比,可以在任何一个时间使用。它只是作为可用带宽的缩放因子。对于大多数现代互联网连接利用率始终是100%。
- Round-trip Latency(请求往返延迟):往返延迟测量客户端和远程服务器之间的第一次往返通信的毫秒延迟。它用于客户端向服务器和服务器向客户端的每次请求。
- MTU(最大传输单元):在任何传输的TCP数据包的最大尺寸。指定MTU不改变的可用带宽,但允许Charles在MTU分配带宽大小的块,导致在每个传输包分割的现实水平。
- Reliability(可靠性):可靠性是衡量连接完全失败的可能性。这是非常有用的模拟不可靠的网络条件。可靠性是指定为成功发射10kib消息的可能性,所以,值为50%意味着所有10kib传输一半会成功。较大的邮件或更小的消息或多或少都有可能失败,所以20kib传输将只有25%的成功率和5kib传输成功率约70%。
- Stability(稳定性)【抖动】:稳定性是衡量一个连接的可能性是不稳定的,因此降低了质量。这是非常有用的模拟网络,如移动网络,定期连接质量差。如果连接不稳定,则连接的质量会在不稳定的质量范围内随机下降。此质量值,然后应用作为另一个缩放因子的可用带宽。
- unstable quality range(不稳定质量范围):此处设置主要针对于Stability中设置中的范围
点击OK后,绿色图标亮起,表明开启了弱网: