--- title: Charles工具使用 date: 2020-06-27 22:36:20 tags: [Charles] categories: [工具, Charles] author: Anges黎梦 --- ## 常用功能介绍和使用 **Charles的功能很强大,这里只介绍几个常用的并且非常实用的功能:**    1. Charles抓取pc内容功能    2. 截取移动设备上的网络请求包    3.手动重复请求    4.手动修改请求内容    5. 过滤网络请求    6. 代理转发    7.控制网速 8.黑名单功能 **Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”**    1. Structure 视图将网络请求按访问的域名分类    2. Sequence 视图将网络请求按访问的时间排序  ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/1.png) ## Charles抓取pc内容功能 Charles 是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。 如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱 mac下可通过Proxy —> macOS Proxy关闭  ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/2.png) 如果不需要使用也可从 Proxy—> Proxy setting 里将启动项关闭, 这样每次打开Charles时就会默认关闭/打开抓取pc内容的功能 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/3.png) ## 截取移动设备上的网络请求包 我们在调试移动APP时,需要抓取APP发送的数据包, 首先进行设置:Proxy —> Proxy Settings 默认端口是8888,根据实际情况可修改 查看本机IP地址:Help —> Local IP Addresses 当手机连接代理的时候,Charles会弹出请求,问询是否同意抓包,如果不小心拒绝了,实际就无法抓包了, 但是可以从Proxy—>access control setting中添加当前手机的IP地址,就可以正常抓包了。 如果不想每换一个手机都要进行验证,可以配置允许所有手机访问,加入0.0.0.0/0(IPv4)或::/0(IPv6) ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/4.png) 如果打开抓包工具,发现抓出的内容没有显示response和request的选项,点击设置 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/5.png) ## 手动重复请求 Charles提供发送重复请求的功能,可以用这个功能做一些简单的压测, 选中链接后 右键可见:repeat,repeat advanced 或可在tools中找到。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/6.png) Repeat:重复发包一次;选中链接点击repeat之后,即可将该请求重复一次,如需重发一个域名下的全部的请求,进入structure,选择域名之后点击repeat,即可全部请求。 repeat advanced:重发多次相同的请求,重发次数可设置。点击后弹出弹窗可进行重复的设置;同样可从structure里重发某个域名下的全部请求。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/7.png) **手动修改请求内容** 1.compose 右键选择compose,即可修改参数和URL。修改完成点击execute即可执行。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/8.png) 2.breakpoint 右键选中需要的接口,点击breakpoint;点击之后进入proxy —>break settings,即可看到该接口, 双击该接口可修改接口相关的内容,修改后保存即可: ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/9.png) 修改完成后,只要重新请求这个接口,就会打开一个新的窗口, 提供修改编辑该接口的功能(这里我只勾选了response,所以只能编辑response),编辑完成点击execute即可执行, 需要注意的是,一般客户端都会有个超时时间,所以需要很快的修改,不然有的时候可能修改就会不生效; 这个方法适合需要修改一些简单的内容。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/10.png) 3.map local maplocal功能是平时常用的修改请求的方式,通过使某些接口走本地的方式,可以随机改变response或request里的内容,具体操作如下; 选择需要修改的URL,右键保存response: ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/11.png) 在本地找到该请求,并修改想要修改的内容,修改完成后保存;在Charles里再次选中该链接; 右键并选择maplocal: ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/12.png) 点击后会弹出新窗口,在local path中选择刚才保存并修改后的文件的路径(需要注意的是,这里最好删除Query里的内容,有些接口每次请求的时候可能有些参数是有些变化的,有可能会导致匹配不到); 选择完成保存后,再请求该接口,即可走到本地修改的路径下,达到修改请求内容的目的。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/13.png) 4.Rewrite rewrite也可达到修改请求的效果,并提供批量替换的功能,如有需要可自行尝试;选择tools—>rewrite ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/14.png) 在下面替换时,rewrite提供了可批量替换,替换某一个,和精准匹配的选项,可根据自己需要自行选择,这里不在仔细说明。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/15.png) ## 过滤网络请求 1.Filter 在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字。(一般用于临时过滤) ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/16.png) 2.Recording Settings 在Charles的菜单栏选择Proxy->Recording Settings, 然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。 这样就可以只截取目标网站(固定过滤地址) ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/17.png) 3.Focus 右键需要的链接,点击focus(或者直接在view -> focused hosts中添加/修改) ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/18.png) ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/19.png) 加入focus后,点击focused,即可直接追踪这些链接。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/20.png) ## 代理转发 map remote 选择tools ->map remote,选择enable map remote,这个时候可以点击右下角add进行添加, 像这里我添加了bbs.hupu.com转发到test.bbs.hupu.com。 如果勾选enable后,请求该域名,可直接访问test环境,不需要切换hosts即可实现。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/21.png) ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/22.png) ## 控制网速 Throttle Setting 点击proxy ->Throttle Setting,选择enable throtting, 下面提供了各种模式供选择,如果只想对某个hosts下的内容进行网速控制,也可勾选only for selected hosts进行添加。 概念介绍:Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(最大传输单元) 3G:300k-2Mbps左右 2.5G(GPRS)一般在100kbps 2G(GSM)一般在5-9kbps ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/23.png) 添加完成后,可看到顶部的小乌龟变了颜色,这个时候已经在进行网速控制了,可通过点击小乌龟取消网速控制;设置好之后,下次也可通过点击小乌龟快速开启网速控制。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/24.png) ## 黑名单功能 勾选黑名单,黑名单即使选择接口返回错误的形式(404 或者403) 弹出界面后选择enable,这里blocking action中可以选择drop connection”或者 “return 403 respose”选择第一个会直接返回404错误,第二个则返回403。 ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/25.png) ![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/26.png)