①.Charles下载
Charles当前基本上都是收费软件,请大家支持正版软件!
建议不管是windows还是Mac的小伙伴用Charles吧!
②.将 Charles 设置成系统代理
Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。第一次启动Charles会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。
③.过滤网络请求
通常情况下在抓包的时候,你可能只想关注一部分指定的域名所发送的网络请求,但是其他的请求总是那么多,那么下面就介绍两种方法来实现!
方法一:通过设置Recording Settings
Charles菜单选择“Proxy”->”Recording Settings” 选择Include 标签然后选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。
1、Protocol:不选择则不区分http和https
2、Host:可以设置泛域名,如 *.baidu.com
3、Port:可以不设置
4、Path:根据需求在需要只监控部分接口时使用
5、Query:根据需求在需要只监控部分接口时使用
方法二:右键菜单Focus
这个方法比较简单快捷,在一些临时情况下可以很快进行过滤,比较方便,方法则是:在想过滤的网络请求上右击,选择 “Focus”
有很多小伙伴在Focus之后就忘记了哪些Focus过,以至于Charles显示出来的过滤的请求比较杂!在菜单 “View->FocusedHosts...”中进行管理Focus过的域名
④.手机端/App抓包
在我之前的文章里有详细的设置方法和注意事项![点击穿越]
⑤.模拟网络
不管是在做app开发还是app测试的时候,模拟慢速网络或者高延迟的网络看应用的表现是否正常都是必要的,可以通过以下设置进行操作:“Proxy”->”Throttle Setting”勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。
如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
⑥.编辑网络请求
有时候在调试或者测试的时候需要反复不断的尝试不同的参数来调用接口,Charles 可以方便地提供网络请求的修改和重发功能,只需要编辑一下,进行修改之后执行即可,如下Gif演示
⑦.修改服务器返回内容
常常有时候需要模拟一些数据异常的情况,通过Charles对返回值进行修改,那么在进行测试的时候必然会事半功倍,不会受到后端程序和数据的禁锢!Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。
1、Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
2、Rewrite 功能适合对网络请求进行一些正则替换。
3、Breakpoints 功能适合做一些临时性的修改。
1、Map
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件
我可以通过Map Remote将测试环境的域名重定向到线上域名:
对于Map Local,通俗来讲可以将一个接口的返回值通过Charles指向一个本地文件,本地文件中可以变成任何你想让接口返回的数据。比如本地当前保存过一个response文件(返回值文件,可以通过右键"save response"进行保存)
Map Local 在使用的时候,有一个潜在的问题,如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。解决办法是下面提到的 Rewrite 功能
2、Rewrite
Rewrite功能十分强大,在用的时候简直是事半功倍,打个比方:App已经做好了,但是接口这时候增加了一个参数,但是App本身是没问题的,App的人已经下班了,需要你验证一下这个接口发上去会不会影响到App,这时候就可以用rewrite了,通过重写接口请求,后把数据给App来查看app情况再合适不过了。好用到不能在好用。
举个栗子:
当前接口返回了一个分类叫“潮品”,这时候我想改成别的,比如“优雅的猪”。
1、首先进入rewrite菜单“Tools->Rewrite”
2、首先要打开rewrite功能,勾选"enable rewrite"你会看到左边的菜单下面有个“ad
d”,点击添加一条rewrite规则
3、设置location,做事得有个目标不是?所以要告诉Charles你要修改谁
4、设置修改规则,Charles提供了多种类型的修改规则
Add Header:请求中增加请求头
Modify Header:修改请求头
Remove Header:删除请求头
Host:修改指向
Path:修改路径
URL:修改请求地址
Add Query Param:增加请求参数(GET接口)
Modify Query Param:修改请求参数(GET接口)
Remove Query Param:删除请求参数(GET接口)
Response Status:修改返回值的HTTP状态值,如:404
Body:修改返回值的详细内容(POST接口)
设置好之后,可以replay一下请求,也可以用调用接口的app再试一下
Rewrite中所提供的这些类型不做一一演示,好好体会!有问题可以找我~
3、Breakpoints
Breakpoints 功能类似我们在设置的断点一样,以下一张Gif能说明,如果看不懂,那就多看几遍、
需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。
码字好累。。。