使用 Charles 抓包工具进行断点调试与模拟接口返回参数——测试实践

        在前后端分离开发、接口测试或自动化测试过程中,我们经常需要对后端接口进行调试或模拟响应数据。Charles 是一款功能强大的 HTTP 代理抓包工具,支持断点调试和接口返回值修改功能。
        接下来我们将详细介绍如何使用 Charles 的断点调试功能,来拦截并修改接口返回的数据,以满足接口测试、前端联调等场景需求。

🧰 一、准备工作(确保已完成)

在开始之前,请确认以下步骤已完成:

  • ✅ 已安装 Charles(官网下载地址
  • ✅ 已配置浏览器或手机通过 Charles 代理上网
  • ✅ 已安装 Charles 根证书并信任(支持 HTTPS 抓包)
  • ✅ 可正常看到 Charles 中的请求列表

🔍 二、Charles 基础界面介绍

启动 Charles 后,你会看到如下主要区域:

  1. 左侧资源树:列出所有访问过的域名
  2. 中间请求列表:展示每个请求的 URL、状态码、耗时等信息
  3. 右侧详情面板:
  • Summary:基础信息
  • Request:请求头、请求体
  • Response:响应头、响应体

🔁 三、使用断点调试(Breakpoints)模拟接口返回

Charles 提供了三种断点方式,分别用于拦截请求和响应:

  • 修改请求参数模
  • 拟服务端行为
  • 修改接口返回内容(这里我们着重实现这个)

1、设置断点

  • 右键点击该接口 → Breakpoints → 开启断点模式
  • 此时,每次请求该接口时都会被 Charles 拦截。

 2、发起接口请求

在浏览器或 App 中访问该接口,Charles 会弹出一个窗口,显示即将返回给客户端的响应内容,点击Execute(执行)。

3、修改接口返回值

切换到 Edit  Response 标签页,找到 Response Body 内容(JSON Text)。

接口返回示例:

{
  "code": 0,
  "message": "success",
  "data": {
    "username": "xiaoming",
    "age": 25
  }
}
  • 将 "age": 25 修改为 "age": 30 或任意你想要的数据结构。
  • 你也可以直接粘贴一段完整的 JSON 数据来替换整个响应内容。

⚠️注意:使用Charles工具时,需要把Headers处的 Content-Length 给删掉,不然无法正常访问修改了返回值的接口

4、确认并放行

  • 点击 Execute,Charles 将把修改后的数据返回给客户端。
  • 你也可以点击 Cancel 放弃修改,或 Abort 终止请求。

✅ 四、总结

        Charles 不仅是一个抓包工具,更是接口调试和模拟的利器。掌握其断点调试功能,可以大幅提升前后端协作效率,节省大量重复开发和测试时间。
        无论你是做接口测试、前端开发还是自动化测试,Charles 都是你值得熟练使用的调试神器!

### 使用 Charles 模拟登录超时场景的解决方案 为了模拟登录超时场景,可以利用 Charles 的 **Throttle 功能** 或者通过设置 **断点调试** 来手动干预请求。以下是两种主要的方法及其配置教程: #### 方法一:使用 Throttle 功能模拟网络延迟 Charles 提供了内置的带宽限制功能(Throttling),能够帮助开发者轻松模拟各种网络条件下的应用表现。 1. 启动 Charles 并进入菜单栏 `Proxy` -> `Throttle Settings...`。 2. 在弹出窗口中启用 Throttle,并根据需要调整以下参数: - **Bandwidth**: 设定较低的下载速度和上传速度,例如 56 kbps 表示非常缓慢的拨号网络[^2]。 - **Latency**: 添加较高的延迟值(如 5000 ms)以延长每次请求的时间。 - **Reliability**: 将可靠性降低至接近零百分比以便增加丢包率。 3. 点击 OK 应用更改后的设定。 4. 返回到目标网页或移动 App 登录界面尝试发起新的认证流程;由于人为制造出来的恶劣联网状态,应该很快就能看到因长时间未能完成握手而触发失败提示框的现象发生。 #### 方法二:借助 Breakpoints 实现精确控制 如果仅希望针对某个具体的 API 调用实施延时效果而不影响其他正常业务逻辑的话,则推荐采用第二种办法——即运用 Charles 中间人代理所提供的强大功能之一:“Breakpoint”。 1. 定位到即将被拦截的目标地址模式下对应的 HTTP(S) 请求项; 2. 右键点击该项选择 “Set Breakpoint on Request” 或者直接按下快捷键 Ctrl+B (Windows/Linux)/Cmd+B(Mac),此时该条目旁边会出现一个小图标表示已成功打上了断点标记; 3. 当再次访问关联资源的时候,程序运行到这里就会自动暂停下来等待进一步指示; 4. 利用顶部工具栏里的计时按钮(Stopwatch Icon)来计量实际耗费了多少毫秒数之后再放行后续动作即可达成目的[^3]。 ```python # 示例代码片段用于说明如何计算时间间隔 import time start_time = time.time() # Simulate long-running process here... time.sleep(7) end_time = time.time() elapsed_seconds = end_time - start_time if elapsed_seconds >= 5: print(f"Request took {round(elapsed_seconds)} seconds which exceeds acceptable limit!") else: print("Login request processed within expected timeframe.") ``` 以上就是关于怎样利用 Charles 这款优秀的抓包软件去构建一个仿真的用户身份验证环节超期未果情形的具体步骤介绍啦! ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值