史上最强Charles教程

以下测试教程以 mac 系统的 4.5.6 版本为例

一、下载及安装

安装包下载地址:https://www.charlesproxy.com/download/

注册:

Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4

二、基础部分

1. 代理配置 - 监听端口

菜单:Proxy - Proxy Settings
在这里插入图片描述

2. 查看局域网IP地址

菜单:Help - Local IP Address

在这里插入图片描述

3. 手机WIFI加入Charles代理设置

以小米手机为例,在设置-WLAN-已连接的WIFI-右箭头进入设置-代理改为手动

主机名:填写局域网IP地址

端口:填写Charles监听端口

在这里插入图片描述
在这里插入图片描述

手机wifi接入后,Charles客户端会弹窗,此时Allow即可

二、抓包 - WEB浏览器

在浏览器地址栏输入地址,如:https://www.baidu.com

打开charles,就能看到该地址的请求详情

在这里插入图片描述

三、抓包 - 手机端(Android7+)

注:Android 7.0+默认不信任用户添加到系统的CA证书,也就是说基于SDK24及以上的APP来说,及时在手机安装了Charles也无法抓取https请求,会出现抓取的请求均为unknown,如下图

To provide a more consistent and more secure experience across the Android ecosystem, beginning with Android Nougat, compatible devices trust only the standardized system CAs maintained in AOSP.(文档链接

在这里插入图片描述

1. 准备工作

需要一款root过的手机,root方法自行百度,

# 以 root 权限执行
adb root
# 解决目录 read only 关键命令行
adb disable-verity
# 重启
adb reboot
# 以 root 权限运行
adb root
# 重新挂载
adb remount
2. 准备Charles证书文件
1、获取Charles证书路径:
Help -> SSL Proxying -> Save Charles Root Certificate...

2、计算 Certificate_Hash 命令
openssl x509 -subject_hash_old -in /Users/xxx/Charles/charles-ssl-proxying-certificate.pem
此时会得到 Certificate_Hash 值,第4步会用到
注:如果openssl没有安装,安装下就行

3、备份证书文件
cp /Users/xxx/Charles/charles-ssl-proxying-certificate.pem /Users/xxx/Charles/charles-ssl-proxying-certificate.pem.bak

4、重命名证书文件
mv /Users/xxx/Charles/charles-ssl-proxying-certificate.pem <Certificate_Hash.0>
注意:添加后缀.0为了避免文件名相同冲突。

5、将证书添加到安卓系统证书目录`/system/etc/security/cacerts`
adb push <Certificate_Hash.0> /system/etc/security/cacerts

在这里插入图片描述

3. 启用证书

miui12.5 -> 设置 -> 密码与安全 -> 系统安全 -> 加密与凭据 -> 信任的凭据

证书默认开启,如不需要可关闭。

在这里插入图片描述

4. 再次尝试抓包

在这里插入图片描述

四、请求过滤 - Filter

默认情况下,charles会抓取监听所有的请求(如浏览器、手机、电脑后台服务),那如何快速找到目标的请求信息呢,以下有4种方法:

1. 通过filter功能过滤

在这里插入图片描述

选中Structure的tab,在底部输入关键字即可过滤。

2. 通过find功能过滤

在这里插入图片描述

macos用户可通过Commond + F快捷键调出会话搜索框(或者通过菜单:Edit -> Find...)

Text to find: 要过滤的关键字。可以是普通的字符串、正则表达式等等
Scope: 搜索的范围。一般默认选`session`
Search In: 从什么范围内搜索,可通过勾选缩小命中范围
3. 通过Recording Settings功能过滤

在这里插入图片描述

入口:Proxy -> Recording Settings 或 以下快捷入口
在这里插入图片描述

Include: 告诉Charles,监控请求时我们重点关注的host

Exclude: 告诉Charles,监控请求时我们需排除的的host

注意:理论上,这边Add的为请求url的域名

4. 通过Focus或Ignore聚焦或忽略指定域名

很多时候,我们仅想关注指定的域名,对其他域名发起的请求不关心,这时候可以使用Focus功能,仅需右键将制定域名添加Focus即可,如下图:
在这里插入图片描述

此时,被聚焦的域名将被置顶显示,如下图:
在这里插入图片描述

同时,在Sequence视图下,可以通过勾选Focused,聚焦实时的网络请求
在这里插入图片描述

同时,我们可以通过Focused Hosts菜单查看已聚焦的域名(入口:View -> Focused Hosts...)
在这里插入图片描述

相反,如果被Ignore的域名,在下次请求时将不会被监控。

五、模拟弱网(限流) - Throttle

在做APP异常场景测试时,经常会涉及到弱网测试,那如何对APP进行限流呢?

入口:Proxy -> Throttle Settings

在这里插入图片描述

Throttle preset: 预置的限流方案可供直接选择
Bandwidth: 带宽(带宽),设定上下行的流量大小
Utilisation: 利用百分比,即为总带宽的百分比,是带宽的缩放因子,对于大多数互联网连接利用率始终为100%
Round-trip latency: 往返延迟(延时),即测量客户端与远程服务器之间的第一次往返通信的毫秒延迟。一般用于客户端向服务器和服务器向客户端的每次请求时延测试。
MTU: 最大传输单元,即TCP数据包的最大尺寸。指定MTU不改变的可用带宽,但允许Charles在MTU分配带宽大小的块,导致在每个传输包分割的现实水平
Reliability: 可靠性百分比(丢包),衡量连接完全失败的可能性,一般用于模拟不可靠的网络条件。可靠性是指定为成功发射10kib消息的可能性,值为50%意味着所有10kib传输一半会成功
Stability: 稳定性百分比(抖动),一般用于模拟不稳定的网络环境,如移动网络。
Unstable quality range: 不稳定质量范围,主要针对Stability设置的范围

大多数情况下,模拟弱网环境仅需更改Bandwidth设置,配置其上下行速度即可,具体根据业务需求为准

设置完毕后,可通过点击小乌龟快捷开启或关闭,同时在charles工具下方可看到是否已开启限流。

在这里插入图片描述
在这里插入图片描述

六、断点 - Breakpoints

使用场景:一般用于调试某个接口,更改请求的参数,查看更改后的响应

  1. 添加接口至Breakpoints
    在这里插入图片描述

  2. **查看已添加的Breakpoints**

入口: Proxy -> Breakpoint Settings...

在这里插入图片描述

  1. 编辑断点
  • Scheme参数在添加时会置空,此时需根据接口的实际情况选择GETorPOST

  • Request/Response为需要断点的范围。

在这里插入图片描述

  1. 此时可以重新触发该接口,即可进入断点模式(默认情况下,如果做了编辑断点操作,断点开关即为打开状态),如下图:

在这里插入图片描述

  1. 编辑请求信息 - Edit Request

在这里插入图片描述

如上图,您所看见的均可以进行更改。但我们常更改的有以下几点:

  • 请求的参数,如对key进行增删、更改value的值等等
  • Headers中,删除cookieUA等等
  • Cookies中,对cookie进行增删
  1. 点击Execute执行,此时Charles会以更改后的信息向服务端发送请求,服务端也会对此请求作出响应(Response)。因为配置断点时勾选了Response,即这边可对返回的报文进行二次处理

在这里插入图片描述

如上图,大多数情况下,我们仅会在JSON Texttab下对返回报文进行更改
在这里插入图片描述

此时,观察被测APP或WEB页面是否根据编辑的RequestResponse展示。

另外补充一点,我们可通过以下两种方式查看当前断点是否已经启用。

在这里插入图片描述

若该icon为红色高亮,即代表已启用

在这里插入图片描述

若底部显示Breakpoints,则代表已启用

七、重定向 - Map

重定向分为以下两种:

  • Map Remote: 将指定的网络请求重定向到另一个网络请求地址上
  • Map Local: 将指定的网络请求重定向到本地配置文件上

使用场景:一般用于Mock测试

待补充。。。

八、重写 - Rewrite

待补充。。。

其他用法

1. 高亮请求 - highlight rules

在这里插入图片描述

入口:View -> Highlight Rules...(Command + Shift + H)

作用: 对重点需关注的请求以不同的高亮颜色展示(支持通过添加Conditions(如请求头、响应状态码等)过滤)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
你好!以下是一个关于Charles配置的简要教程: 1. 下载和安装Charles:首先,你需要从Charles官方网站(https://www.charlesproxy.com/)下载并安装Charles。根据你的操作系统,选择适当的版本进行下载。 2. 启动Charles:安装完成后,双击打开Charles应用程序。在Windows上,它通常会自动启动;在Mac上,你可以在“应用程序”文件夹中找到它并点击打开。 3. 配置代理设置:一旦Charles启动,你需要配置你的设备将网络流量发送到Charles代理。在设备上进行以下设置: - 对于iOS设备:打开设备的设置,选择Wi-Fi,然后点击你当前连接的Wi-Fi网络的信息按钮。在下拉菜单中找到“HTTP代理”选项并选择“手动”。输入你计算机的IP地址和Charles端口(默认为8888)。 - 对于Android设备:打开设备的设置,选择网络和互联网,然后点击Wi-Fi。长按你当前连接的Wi-Fi网络,并选择“修改网络”。在弹出窗口中,滚动到底部并找到“代理”选项。选择“手动”并输入你计算机的IP地址和Charles端口(默认为8888)。 4. 配置SSL代理:如果你需要查看HTTPS流量,你还需要配置Charles以解密SSL连接。在Charles菜单中,选择“Proxy” > “SSL Proxying Settings”。点击“Add”按钮,并输入你想要解密的域名或IP地址。确保启用“Enable SSL Proxying”选项。 5. 开始使用Charles:现在,你已经完成了Charles的配置。你可以在Charles界面中看到来自设备的网络流量,包括请求和响应。你可以使用过滤器、断点和其他功能来分析和修改请求。 这是一个简单的Charles配置教程,希望对你有所帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值