charls的抓包&map&mock方法
说点废话
为什么已经有很多博主已经写了很多charles教程,你还要写?
我这里回答以下,我写是因为我在写的时候可以巩固我对这方面的理解,并且我知道工作中用的最多的以及常用功能,可以给新入软件测试行业的同学减少搜索时间成本
不喜勿喷,如有冒犯,我先道歉。
1.下载Charles
下载地址:https://www.charlesproxy.com/download/latest-release/
1.1. 错误排除
如果Mac下Charles打开时提示错误(我的环境是macOS Catalina 10.15.5;Charles 4.2.5):
Charles cannot configure your proxy settings while it is on a read-only volume...
是由于权限问题导致的,解决方法是手动修改其权限,终端内切换至Charles安装目录(一般是在
/Applications/Charles.app),执行以下命令:sudo chown -R root ./Contents/Resources
sudo chmod -R u+s ./Contents/Resources
2.注册
破解工具地址:https://www.zzzmode.com/mytools/charles/
不注册
只可使用简单的抓包功能,map local、map remote等高阶使用功能不可使用
每次启动有等待时间,并且每次只能使用30分钟
3.配置工作-mac
1.Charles上的配置
Proxy->Proxy Settings

填入代理端口8888,并且勾上 “Enable transparent HTTP proxying”
8888就是手机上的需要输入的代理端口
2.手机上的配置(手机上打开代理)
通过 设置 → 无线局域网 ,查看当前链接的 WIFI 点击最右边的感叹号,进入当前 WIFI 的细节配置页面。
在最下面的 HTTP 代理中,选择「手动」,然后填写 Charles 代理机器的 IP(在charles的 “Help”->”Local IP Addresses”) 和 端口8888。 是
要保持mac上开启代理,且手机Wi-Fi和MacWi-Fi要同时连上公司Wi-Fi
3.安装证书(Charles默认可以抓取并解析http,若想抓取https需要进行以下的配置)
1.在 Mac上安装证书 选择install Charles root certificate

将证书放在登录下,并且始终信任


设置需要抓取的URL地址
进入proxy->SSL Proxy Settings 勾选enable ssl proxy,一般添加*:443即可
公司开发的不一定是全部,也有http的80,亦或者其他端口,*:*,抓全部省事


手机抓包(鸿蒙直接放弃,部分安卓设备抓包较为困难)
手机端安装证书(一台手机需要安装对应的证书,所以每换一台移动设备都需要安装新的证书)
证书下载地址:Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Brower


structure方式浏览与fiddler相似

常用快捷键
- 清空抓包数据(cmd+delete), 最常用。
- map local(cmd+shift+L)
charles配置工作-Windows
破解账号https://www.zzzmode.com/mytools/charles/
三大设置
1:安装并信任证书
help—>SSL Proxying—>Install Charles Root Certificate
存储到受信任的证书颁发机构目录下
2:代理端口
Proxy—>SSL Proxying Settings
常用的80跟443配置即可
公司开发的不一定是全部,也有http的80,亦或者其他端口,*:*,抓全部省事

3:抓取web端设置
Proxy -> Windows Proxy 勾选中即可
除了抓包,我们也会常用到其他功能
chales的mock测试
Rewrite Setting,也就是我们常说的mock测试,就是mock返回结果看前端页面表现
填写需要mock的请求链接,输入链接点击其他区域,会自动将参数区分至指定位置

响应结果填写

测完记得chales取消mock,避免误提BUG

chales的MAP测试
以我所在公司的游戏环境为例子
test,测试环境(项目组QA及其他测试同学都在使用)
master,可以理解为线上,业内叫“预发布”,这个包在正式上线前会自动转成线上包,也是为了避免上线前漏发布代码准备的环境
生产环境,正式的线上环境
若是某个测试环境问题需要发布线上,非SDK的BUG,当前又没有master包,无法在预发布回归的尴尬场景
此时可以使用chales的另一个功能“map remote Stettings”
测试同学需要向RD或者提测邮件获得预期的host、port、path,并输入到Map to中

与mock测试一致,用完记得关掉

注意:https -> http对于https请求,Charles在map remote时,一般需要将其转换为http请求
对于某些后台的服务来说,接入层在接收到HTTPS请求后和后台服务之间的通信使用的是http,所以在开发机上开启服务后 由于没有接入层,开发机上的服务是处理不了HTTPS请求的。
将所有请求直接remote到开发机(开发调试)
Proxy->External Proxy Settings

限流-弱网测试
(比较靠谱的方案是使用netlimiter这类工具进行网卡层限速,charles等代理工具模拟限速通常是使用delay发送请求等方案。)
限速在实际测试场景中非常常用, 使用charles对请求进行限速也比较简单。在工具栏上有个乌龟图标可以直接进行限速:(别忘了关, 不然卡出翔)
1.未开启状态

2.开启后, 会使用预设的速率进行限速(http)。如果需要进行仅特定接口的固定速率的限制, 可以Proxy->Throttle Settings
重要字段的含义(可以忽略,不怎么修改这部分)
bandwidth:带宽,即在传输管道中可以传递数据的能力
utilisation: 网络传输利用率,作为可用带宽的缩放因子
round-trip latency:请求往返延迟 ,它用于描述客户端向服务器和服务器向客户端的每次请求
mtu: 最大传输单位,任何传输的TCP数据包的最大尺寸
reliability:可靠率,丢包,衡量连接完全失败的可能性。这是非常有用的模拟不可靠的网络条件
stability:稳定率,抖动,衡量一个连接的稳定性,描述网络延迟变化的程度。可以模拟移动网络,定期连接质量差。抖动对于实时性的传输是一个重要参数,例如视频
unstable quality range: 此处设置主要针对于Stability中设置中的范围
感谢浏览阅读,希望能给你的工作带来帮助。都看到这了,编写不易,点个赞再走呗

浙公网安备 33010602011771号