使用Charles抓包时,怎么mock单个接口的返回

使用 Charles 抓包并 mock 单个接口返回值有多种方法,包括:

  1. Map Local(本地映射)

  2. Map Remote(远程映射)

  3. Rewrite(重写响应)

  4. Breakpoints(断点修改返回)

  5. Charles Scripting(高级脚本,自动修改响应)

以下是每种方法的原理解释 + 操作步骤 + 注意事项,你可以根据不同需求选择合适的方式。


1️⃣ Map Local(本地映射)【最常用】

✅ 原理:

将某个接口请求的响应,替换为你本地的一个文件(如 JSON),实现 mock 返回。

🛠 操作步骤:

① 捕获接口请求
  • 确保设备或浏览器配置了 Charles 代理

  • 发起目标请求,Charles 中出现如:

    https://api.example.com/user/info
    
② 保存或编写本地响应文件
  • 右键该请求 → Save Response...

  • 保存为本地 JSON 文件,比如:mock_info.json

  • 可以用编辑器修改为你想返回的数据

③ 设置 Map Local
  • 菜单栏 → Tools > Map Local

  • 点击 Add

    • Host:填写 api.example.com

    • Path:填写 /user/info

    • Local Path:选择 mock_info.json

④ 确保 Map Local 功能开启
  • 菜单栏中 Proxy > Map Local 要勾选 ✅

  • 确保 Charles 工具栏按钮为绿色(表示启用)

⑤ 测试是否生效
  • 再次访问接口,Charles 会返回本地 JSON 内容

⚠️ 注意:

  • 文件路径必须正确

  • 支持 JSON、HTML、XML、文本等格式

  • Mock 文件需注意编码(UTF-8)


2️⃣ Map Remote(远程映射)

✅ 原理:

将请求重定向到另一个远程接口地址,可以 mock 成测试环境、备用服务器等。

🛠 操作步骤:

  1. 菜单栏 → Tools > Map Remote

  2. 点击 Add

    • Host:原始接口地址(如:api.example.com

    • Path:原接口路径(如:/user/info

    • Remote Host:替换目标地址(如:test-api.example.com

    • Remote Path:新路径(如:/mock/user/info

  3. 确保 Map Remote 功能已启用

  4. 重新访问接口,看是否被重定向成功

✅ 应用场景:

  • 从生产环境切换到测试环境

  • 远程 mock 平台(如:mocky.io、mockapi.io)


3️⃣ Rewrite(响应内容重写)【强大灵活】

✅ 原理:

通过规则匹配请求或响应,然后对其内容进行修改,比如替换 JSON 字段。

🛠 操作步骤:

① 开启 Rewrite 功能
  • 菜单栏 → Tools > Rewrite

  • 点击左下角 + 添加规则,命名如:mock_user_info

② 添加条件匹配规则
  • Locations 中添加目标接口:

    • Host: api.example.com

    • Path: /user/info

③ 添加修改响应的规则(Modify Response)
  • 选中 Modify ResponseBody

  • 点击 Add

    • Match:原始内容或字段(用正则匹配)

    • Replace:替换后的字段或值

✅ 示例:
将返回中的 "status":1 替换成 "status":0

Match:    "status":\s*1
Replace:  "status": 0
④ 重新访问接口,验证修改结果

⚠️ 注意:

  • 使用正则匹配响应体内容,需要有一定文本处理能力

  • 不适合大段 JSON 替换,更适合字段级别替换


4️⃣ Breakpoints(断点修改响应)

✅ 原理:

在请求或响应过程中打断点,手动修改返回内容。

🛠 操作步骤:

① 设置断点
  • 选中目标接口 → 右键 → Breakpoints

  • 或菜单栏 → Proxy > Breakpoints Settings → 添加断点规则

② 启用断点功能
  • 确保菜单栏 Proxy > Breakpoints 是勾选状态 ✅

③ 触发请求并修改响应
  • 发起请求时,Charles 弹出窗口,显示请求或响应内容

  • 切换到 Response 标签页,修改返回 JSON 内容

  • 点击 Execute 继续返回给客户端

✅ 优点:

  • 灵活临时修改响应

  • 不需提前准备本地文件

⚠️ 缺点:

  • 每次都需手动干预

  • 不适合自动化测试或频繁请求


5️⃣ 使用 Charles Scripting(高级)

✅ 原理:

使用 Charles 的 JavaScript 脚本功能(Beta)自动修改响应内容(需要 Charles 5+)。

🛠 操作大致思路:

  1. 菜单栏 Tools > Scripting

  2. 添加 JavaScript 脚本,如监听特定接口并修改返回内容

  3. 参考 Charles 脚本 API(查阅官方文档)

// 示例伪代码
function responseReceived(request, response) {
  if (request.url.contains("/user/info")) {
    response.bodyText = '{"code":0,"msg":"mocked"}';
  }
}

⚠️ 说明:

  • 比较适合自动化、持续性 mock

  • 使用门槛略高,适合高级用户或测试工程师


🔚 总结对比

方法优点缺点适用场景
Map Local简单直观、一次配置多次使用需准备本地文件固定接口 mock
Map Remote指向远程 mock 服务器不支持本地 JSON重定向环境
Rewrite精细替换字段,规则灵活复杂 JSON 不好处理微调字段
Breakpoints手动即时修改每次都要手动改临时调试
Scripting自动化程度高需脚本能力高级测试场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值