charles技能之修改请求参数/返回数据(map Local、Rewrite、Breakpoints)


之前一直用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?工具
  1. 打开charles,点击菜单栏tools-->Rewrite

   

  1. 弹出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请求或响应
  1. 设置断点:找到要设置断点的链接,右键 -> 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。完成~