admin管理员组文章数量:1569870
以下测试教程以
mac
系统的4.5.6
版本为例
一、下载及安装
安装包下载地址:https://www.charlesproxy/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
打开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
,监控请求时我们重点关注的hostExclude: 告诉
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
使用场景:一般用于调试某个接口,更改请求的参数,查看更改后的响应
-
添加接口至
Breakpoints
-
**查看已添加的
Breakpoints**
入口: Proxy -> Breakpoint Settings...
- 编辑断点
-
Scheme
参数在添加时会置空,此时需根据接口的实际情况选择GET
orPOST
-
Request
/Response
为需要断点的范围。
- 此时可以重新触发该接口,即可进入断点模式(默认情况下,如果做了编辑断点操作,断点开关即为打开状态),如下图:
- 编辑请求信息 -
Edit Request
如上图,您所看见的均可以进行更改。但我们常更改的有以下几点:
- 请求的参数,如对key进行增删、更改value的值等等
Headers
中,删除cookie
、UA
等等Cookies
中,对cookie
进行增删
- 点击
Execute
执行,此时Charles
会以更改后的信息向服务端发送请求,服务端也会对此请求作出响应(Response
)。因为配置断点时勾选了Response
,即这边可对返回的报文进行二次处理
如上图,大多数情况下,我们仅会在JSON Text
tab下对返回报文进行更改
此时,观察被测APP或WEB页面是否根据编辑的Request
或Response
展示。
另外补充一点,我们可通过以下两种方式查看当前断点是否已经启用。
若该icon
为红色高亮,即代表已启用
若底部显示Breakpoints
,则代表已启用
七、重定向 - Map
重定向分为以下两种:
- Map Remote: 将指定的网络请求重定向到另一个网络请求地址上
- Map Local: 将指定的网络请求重定向到本地配置文件上
使用场景:一般用于Mock测试
待补充。。。
八、重写 - Rewrite
待补充。。。
其他用法
1. 高亮请求 - highlight rules
入口:View -> Highlight Rules...(Command + Shift + H)
作用: 对重点需关注的请求以不同的高亮颜色展示(支持通过添加Conditions(如请求头、响应状态码等)
过滤)
版权声明:本文标题:史上最强Charles教程 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727653725a1123704.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论