Charles使用手册
Charles使用背景
- 开发网页我们可以直接debug模式查看请求接口请求request和返回数据responses,但是在开发移动端的时候没有网页,我们就可以使用Charles来抓取请求接口;
- 在测试过程中容易遇到服务端和客户端都说自己是写的代码是没有问题的,这个时候就可以通过抓取工具查看客户端请求数据以及服务端返回的数据进行分析问题;
Charles安装下载
百度有很多教程,移步去搜搜✌️
如果出现下载之后打开每30分弹窗提示关闭一次,这是因为下载的Charles没有破解,破解办法有两种:
1、可以百度找密钥,填写密钥激活进行破解;
2、下载破解包,然后找到Charles的安装目录,打开lib文件夹,替换charles.jar文件
Charles主要功能
- 支SSL代理,可以截取分析SSL的请求
- 支持流量控制。可以模拟慢速网络以及等待时间较长的请求
- 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
- 支持AMF调试。可以将Flash Remoting或Flex Remoting信息格式化,方便查看
- 支持重发网络请求,方便后端调试
- 支持修改网络请求参数
- 支持网络请求的截获并动态修改
Charles实用功能及配置
将Charles设置为系统代理
- 配置
选中Proxy-》macOS Proxy - 操作
勾选代理之后,可以将系统本地发出的请求都能被截取下来;
截取移动设备上的网络请求
查看本地IP地址
mac:Help -》 Local IP Address -》 ent0
windowns:打开cmd窗口输入ipconfig命令进行查看;
配置手机代理
- 作用
这个手机客户端的所有http请求都会被Charles代理,方便查看客户端http请求 - 配置
1)打开手机wifi连接,连接,修改网络代理模式为手动,输入服务器和端口号代理存储,服务器ip为上面查看的本地IP地址,端口号查看Proxy -》Proxy Setting -》 HTTP Proxy 中的Port;
2)打开手机浏览器,输入chls.pro/ssl下载Charles证书;
3)打开要调试的app,请求发送到Charles,验证是否允许弹窗,点击Allow;
a. 点击Allow之后,在Proxy -》Access Control Setting里查看可以访问此代理服务器的列表;
b. 如过不小心点击了拒绝,解决办法:手动添加手机IP/MAC地址到允许访问列表;重启Charles,手机再次访问时会弹窗验证是否允许
4)如果不想每换一个手机都进行验证,可以配置允许所有手机访问,加入0.0.0.0/0(IPV4)或::/0(IPV6)
5)请求接口可以查看接口请求数据和返回数据
6)修改数据:右键接口,点击Compose,可以修改请求参数和URL
过滤网络请求
使用Charles代理之后会抓取到你的所有请求,太多看起来不太容易,这时我们可以把我们需要关注的请求过滤出来,过滤网络请求有三种方法:
1)在封包视图的Filter栏输入需要过滤出来的关键字;
2)在想要过滤的网络请求上右键,选择「Focus」之后,在「Filter」一栏勾选Focussed一项;
3)在Charles菜单栏中「Proxy -> Recording Setting」 选择「Include」,选择添加一个项目,填入需要监控的协议,主机地址以及端口号,这样就可以直接截取目标网站的封包。
以上是过滤网络请求的三种方式,其中1,2是临时过滤,3是固定过滤
两种封包视图
- Structure:是将网络请求按照访问的域名进行分类;
- Sequence:是将网络请求按照访问时间进行排序;
模拟慢速网络
- 使用场景
在做移动端开发时,我们常常需要模拟慢速网络或者高延迟网络,以测试在移动网络下应用表现是否正常。 - 配置
Proxy -> Throttle Setting -> Enable Throttling,在Throttle preset栏设置对应的网速,即可模拟慢速网络;
模拟指定网络的慢速网络,可以再勾选上图中的“Only for selected hosts”,添加指定的host;
给服务器做压力测试
Charles的repeat功能可以简单的测试服务起的并发处理能力;
- 步骤
选择想要打压的网络请求,右键,点击repeat - advanced菜单栏进行选择打压的并发线程数和打压次数进行打压,concurrency是并发打压,iterations是迭代次数。
修改服务器返回数据
- 使用背景
有时候我们想让服务器返回指定的内容,方便调试某些异常case。例如:页面为空,数据异常等情况;
Charles的map,rewrite,breakpoints功能均可实现;
修改网络请求内容
- 使用背景
为了调试服务器接口,需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能 - 步骤
选择要修改的网络请求,点击主页面“笔”状的按钮;
可修改内容包括: URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求;
Charles 支持多次修改和发送该请求,这对于服务器端调试接口非常方便;
mock数据
我们可以通过map local将本地的接口文件进行mock,在测试中请求该接口时,将请求mock的接口数据;