之前一直用postman调接口比较多,但有时候想要去修改APP的页面展示,造数据又会比较麻烦,此时可以用以下三种方法修改请求参数或修改响应:
map Local(本地映射)、Breakpoints(打断点)、Rewrite(重写)
MAP重定向:
Charles 的map功能,就是将某个请求进行重定向,然后用重定向后的内容来修改请求内容;map又分Map Remote和Map Local,Map Remote 是将指定的网络请求重定向到另一个网址,Map Local 是将指定的网络请求重定向到本地文件。
map Local:只能修改返回数据
Rewrite:可修改接口的请求和响应
Breakpoints:可以修改该接口的请求和返回数据,在响应时间内。
一、Map Local
Map Local的使用场景,要验证接口返回数据的各种场景,使用本地映射可以修改请求接口的response。
1.1 保存接口响应:右键-->save response-->保存到本地路径(最好为json格式)
1.2 右击选择Map local:点击接口-->右键-->Map Local进入Map Edit页面
1.3 配置Map Local Map To本地文件:Edit Mapping-->Map To选择你保存到本地已修改的json文件
-
-
- protocol:接口协议
- Host:接口URL粘进去,自动分解到host与path文本框中
- port:*(匹配全部)
- Query: *(匹配全部)
1.4 再次请求接口,接口返回response已经变成本地json文件的值。完成~
1.5 关闭Map Local:点击charles工具栏中的工具,取消map Local勾选,即将本地映射关闭
二、Rewrite
Rewrite:可用于修改请求(?request?)和返回(?response?)的?modify?工具
- 打开charles,点击菜单栏tools-->Rewrite
- 弹出Rewrite Settings界面,选择?Enable Rewrite?,点击?Add?,此时会出现一个?Unitled Set?
-
-
- Enable Rewrite:允许使用Rewrite
- Add-Name:支持修改被篡改的接口的名称
3. 点击?Location?下方的?Add?,出现二级界面
-
-
- 选择自己需要的?Protocol?(?http/https?)
- 放入需要访问的接口地址?api?,会自动将URL的内容分解host和path文本框中
- ?Port?和?Query?改为*(也可自定义)
4.篡改规则:点击下方的第二个add,填写重写规则
-
- Type: 重写的类型,可以选择url/body等
- where:选择修改request或reponse
- Match--Value:匹配现有的值(支持正则匹配)
- Replace:替换值
- Replace first:仅替代掉第一个被匹配的值
- Replace all:替代到所有被匹配的值
5. 重新刷下接口,可以看到APP数据已修改为替换值,完成~
三、Breakpoints
使用Breakpoints拦截响应,修改Response请求或响应
- 设置断点:找到要设置断点的链接,右键 -> Breakpoints,勾选后工具栏上方显示红色的"√"状态
2. 点击Charles菜单-【Proxy】-【Breakpoint...】,此时会弹出【BreakpointsSettings】对话框
3. 双击【Location】内的接口地址,此时会弹出【Edit Breakpoint】对话框,
在【Query】项输入:*即匹配所有的参数;
如果修改Request数据,就将Request勾选;如果修改Response数据,就将Response勾选。
4. 点击ok, 重新请求该接口。 当跑到设置断点的接口时,网页会暂停,这个时候Charles进入breakpoints
5. Edit Response-->Excute:修改响应内容。
注:因使用Breakpoint除非你操作够快否则很容易超时,建议先保存到本地,直接粘贴复制节省时间。点击Excute后,页面上展示的为修改后的response。完成~