介绍Charlse抓包配置、弱网测试、Breakpoints与Rewrite功能
目标
用charles分析前后端的问题
用charles模拟弱网测试环境
用charles的断点构建异常的测试场景
简介
Charles中文名叫青花瓷,它是一款基于HTTP协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。
Charles 工作原理

1、需要运行Charles并配置代理
2、在客户端上面需要配置代理
步骤
1、由客户端发送请求
2、Charles接收再发送给服务端
3、服务端返回请求结果给Charles
4、由Charles转发给客户端
Charles 能做什么
支持HTTP及HTTPS代理
支持流量控制
支持接口并发请求
支持重发网络请求
支持断点调试等
Charles 组件

主导航栏


请求栏


Charles 抓包

Windows HTTP/HTTPS请求
第一步,在菜单栏勾选Proxy -> Windows Proxy,系统HTTP/HTTPS代理将会被自动设置为本地代理,默认端口8888,可在Proxy Settings中修改端口。




iOS HTTP/HTTPS请求
在Windows上先打开Charles,确保iOS设备和Windows处于同一局域网内。
设置iOS HTTP代理,打开iOS设备对应WIFI设置,添加代理IP地址(Windows的局域网地址)和端口号(8888)。
Windows局域网地址可以在Charles中从菜单栏Help -> Local IP Address获取。

在iOS设备上访问数据链接,Charles 弹出 Access Control 确认对话框,选择Allow,可以开始抓取HTTP包。




Charles弱网测试

在菜单栏勾选Proxy -> Throttle Setting,勾选“Enable Throttling”,在“Throttle preset”中选择对应的网络类型,也可以手动调整保存自定义预设值。

Only for selected hosts :表示仅选择的域名做弱网限制,如上图所示,只限制localhost:9999域名的请求,其他的请求不做限制;若不勾选,那么对所有的请求都进行限制;
Throttle preset :可以选择要模拟的网速,是Charles预设的网络设置 ,下拉选项由上到下,网速越来越好。
Bandwidth :带宽,即上行、下行数据传输速度
Utilisation :利用率是总带宽的百分比,
Round-trip latency :请求往返延迟,单位是ms。往返延迟测量客户端和远程服务器之间第一次往返通信的毫秒延迟。它用于客户端向服务器 和 服务器向客户端的每一次请求 。
MTU:最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包情况。
Releability :指连接的可靠性,常说的丢包。可靠性是衡量连接完全失败的可能性。这是非常有用的模拟不可靠的网络条件。可靠性是指定为成功发射10kib消息的可能性。如何值为50%,意味着所有10kib传输一半会成功。较大的邮件或更小的消息或多或少都有可能失败,所以20kib传输将只有25%(1/2 * 1/2)的成功率和5kib传输成功率约70% (0.5开平方)。
Stability :连接稳定性常说的网络抖动。稳定性是衡量一个连接的可能性是不稳定的,因此降低了质量。这是非常有用的模拟网络,如移动网络,定期连接质量差。如果连接不稳定,则连接的质量会在不稳定的质量范围内随机下降。此质量值,然后应用作为另一个缩放因子的可用带宽。
Unstable quality range(不稳定质量范围):此处设置主要针对于Stability中设置中的范围
设置好各项数值,点击 Add Preset ,填写 Preset 的名称,点击OK ,即可保存自定义网络预设成功,之后就可以在Throttle preset 的下拉选项中找到自定义的网络设置。
修改请求与响应参数
Breakpoints
构造异常的测试场景,如修改请求参数,可通过 Breakpoints 来实现。
右键请求选择Breakpoints,再次发起请求,此时会自动跳转到Charles并显示该请求信息,点击 “Edit Request”,修改请求信息,点击“Execute”即可

Breakpoints不仅可以修改请求参数,还可以修改响应参数:

Rewrite
Breakpoints使用一次性修改请求与响应,如果打算一直保存被修改状态,可以通过Rewrite实现。
此外,Rewrite还可以:
快速生成 4XX/5XX 错误场景
保存创建的响应,以便以后可以重复使用
第一步,Tools -> Rewrite -> 勾选“Enable Rewrite”复选框



-- End --
点击下方的公众号入口,关注「技术对话」微信公众号,可查看历史文章,投稿请在公众号后台回复:投稿




