Charles常用功能介绍
1.导航栏介绍
Charles 顶部为菜单导航栏,菜单导航栏下面为工具导航栏。视图如下图所示:
工具导航栏中提供了几种常用工具:
清除捕获到的所有请求
红点状态说明正在捕获请求,灰色状态说明目前没有捕获请求。
灰色状态说明是没有开启网速节流,绿色状态说明开启了网速节流。
灰色状态说明是没有开启断点,红色状态说明开启了断点。
编辑修改请求,点击之后可以修改请求的内容。
重复发送请求,点击之后选中的请求会被再次发送。
验证选中的请求的响应。
常用功能,包含了 Tools 菜单中的常用功能。
常用设置,包含了 Proxy 菜单中的常用设置。
2.查看链接本机Charles代理的ip
打开要调试的APP,请求就会先发送到Charles,然后验证是否允许访问。
在Proxy -> Access Control Settings里看到可以访问此代理服务器列表
注意⚠️
如果不小心点击了拒绝,可以手动添加手机IP/Mac地址到允许访问列表,或者重启Charles,手机再次访问,会再次提示选择。
3.过滤网络请求
通常情况下,网络请求是非常大量的,从几十个请求里找到我们需要的观察的某个请求比较费时,那么我们就需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。有三种方法:
-
在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:*.snssdk.com,那么只需要在Filter栏中填入snssdk即可。(一般用于临时过滤)
-
在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:
-
在Charles的菜单栏选择"Proxy"->“Recording Settings”,然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:(固定过滤地址)
4.模拟慢速网络
在 Charles 的菜单上,选择 “Proxy”->”Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:
打开Throttle Setting界面如下:
关于网速的选择
概念介绍:Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(最大传输单元)
2G:150Kbps,折合下载速度15-20K/s;
3G:1-6Mbps,折合下载速度120K/s-600K/s
4G:10-100Mbps,折合下载速度1.5M/s-10M/s
1MB=1024KB
如果不习惯自定义设置带宽等,可直接在Throttle Preset下拉列表中选择,按照顺序,网速逐渐提升
如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
5.修改网络请求
有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Compose”,即可创建一个可编辑的网络请求。如下所示:
我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,点击add可添加请求参数,点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便,如下图所示:
6.给服务器做压力测试
我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。
我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:
接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。
iterations:打压次数
concurrency:并发线程数
7.修改服务器返回内容
有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有 Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。
根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:
1.Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
1.Rewrite 功能适合对网络请求进行一些正则替换。
1.Breakpoints 功能适合做一些临时性的修改。
Map功能
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。
在 Charles 的菜单中,选择 “Tools”->”Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面。
对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。如下图:
对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。
下图是一个示例,我将一个指定的网络请求通过 Map Local 功能映射到了本地的一个经过修改的文件中。
Rewrite功能
Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。
举例如下:
完成设置之后,我们就可以从 Charles 中看到,北京的油站定位到了廊坊的油站信息,如下图所示:
Breakpoints功能
上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。
Breakpoints 功能当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。举例如下图:修改个人页的response
修改之后的结果如下:
需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。
8.黑名单白名单【black list&white list】
Black List Settings:
黑名单工具可阻止对设置Host的请求,当Charles收到与黑名单相匹配的请求时,Charles阻止了该请求。
White List Settings:
白名单是除了你设置的HOST以外,阻止所有请求。
当Charles收到与白名单不匹配的请求时,Charles会阻止该请求。 可以选择Charles是否会简单地关闭浏览器的连接,或者向浏览器返回错误页面。
注意⚠️
如果一个请求与“黑名单”和“白名单”同时匹配成功,则会被阻止