charles相当于一个插在服务器和客户端之间的“过滤器”;
当客户端向服务器发起请求的时候,先到charles进行过滤,然后charles在把最终的数据发送给服务器;
注意:此时charles发给服务器的数据,不一定是客户端请求的数据;charles在接到客户端的请求时可以自由的修改数据,甚至可以直接Block客户端发的请求;
服务器接收请求后的返回数据,也会先到charles,经过charles过滤后再发给客户端;
同理:客户端接收的数据,不一定就是服务器返回的数据,而是charles给的数据;
正因为上面的原理,所以charles能实现的功能,对前端开发者来说非常有吸引力,相当于请求和响应都可控的,而且charles为了控制更加方面,提供很多简洁的操作
1.下载安装
https://www.charlesproxy.com
2.设置代理
点击“代理-代理设置”,设置一个端口
手机连接wifi后,配置该wifi代理为手动,代理主机输入本机电脑的ip和此端口,就可以正常抓包
3.设置抓取特定ip
方法一:在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了;
方法二:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。
4.模拟接口发送请求
△Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
△Rewrite 功能适合对网络请求进行一些正则替换。
△Breakpoints 功能适合做一些临时性的修改。
先新建一个JSON文件,取名 test.json,输入一个简单的测试数组
[
“hello”,
“world”
]
打开Charles,Tools - Map Local
5.charles重复发送一个网络请求&同时发送N次
重发网络请求的目的:后端调试的过程中,一直在客户端进行点点点比较麻烦,此时直接发送请求比较方便查看调试后的结果(方便后端调试)
1.重复发送一个请求(有两种方法)
(1)选定该请求,右键选择repeat,则会将请求重新发送一遍
(2)选定该请求,直接点击导航栏上面的重复按钮,下图所示
2.让请求同时发送N次
目的是判断多次发送请求时,服务器的响应时间如何。
右键选中该请求,repeat下面还有一个Repeat Advanced选项,其实该选项也是重复发送请求的一种,可以同时发送多个请求。点击ok之后会回到主页面可观察到请求被发送了10次。
6.撰写请求
可以修改、增加、删除参数名、参数值,请求头等等
7.断点--可以看到 修改过后的请求返回是什么效果,达到测试的目的。
Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。
对要打断点的接口右键,选择【Breakpoints】
在工具栏可以查看打上断点的url
双击此url,修改查询为*,设置可修改请求和响应
点击ok, 重新再跑一下接口。 当跑到设置断点的接口时,网页会暂停,这个时候Charles进入breakpoints
点击Edit Request 修改请求参数。这里根据你要测试的数据来修改
修改好参数后,点击Execute (执行)。 另外 Abort (中止), Cancel (取消)
点击执行后,来到返回的页面,这个时候在Charles可以查看返回的数据。也可以对其进行修改,好了之后 点击 Execute
8.模拟慢速网络
选择 “Proxy”->”Throttle Setting” (节流设置)项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示: