模式切换
流量模拟与测试
流量模拟与测试是 Charles 的高级功能,允许用户通过修改请求、响应或网络条件,模拟不同的测试场景,从而帮助开发人员或测试人员更好地调试和优化应用。
修改请求参数、头信息或响应内容
Charles 允许用户实时修改请求的参数、头信息,以及服务器返回的响应内容,帮助模拟各种场景和调试网络交互。
修改请求参数和头信息
抓取请求:先抓取到需要修改的请求。
编辑请求:
- 在请求列表中,右键点击某个请求,选择 Edit(编辑)。
- 在编辑窗口中,可以对请求的 URL、请求方法、请求头、查询参数(GET 请求)或请求体(POST 请求)进行修改。
- 修改请求参数:例如修改查询字符串中的参数(如
?id=123
改为?id=456
)。 - 修改请求头:可以添加、修改或删除请求头信息,例如更改
User-Agent
来模拟不同的客户端设备,或修改Authorization
来测试认证逻辑。
- 修改请求参数:例如修改查询字符串中的参数(如
发送修改后的请求:编辑完成后,点击 Execute(执行),Charles 会发送修改后的请求并捕获响应。
修改响应内容
Charles 也允许用户在服务器返回响应之前进行修改,这对于模拟不同服务器响应非常有用。
- 设置断点:先对目标请求设置断点(右键点击请求,选择 Breakpoints)。
- 修改响应:
- 当服务器返回响应时,Charles 会暂停请求流程,用户可以在响应窗口中查看并修改返回的状态码、响应头信息,以及响应体内容。
- 修改响应体:例如更改 JSON 数据中的字段值或模拟错误响应。
- 执行响应:修改完成后,点击 Execute,让修改后的响应返回给客户端。这可以帮助验证客户端在不同响应情况下的处理逻辑。
模拟慢速网络环境
Charles 提供了模拟不同网络条件的功能,允许用户测试应用在不同带宽、延迟和丢包情况下的表现。通过模拟慢速网络环境,开发人员可以发现并优化应用的性能。
设置网络速率限制
启用带宽限制:
- 选择菜单 Proxy > Throttle Settings,打开带宽限制设置窗口。
- 勾选 Enable Throttling(启用带宽限制)。
设置速率和延迟:
- 在 Throttling Settings 窗口中,设置最大下行速率(Download)和上行速率(Upload),例如将速率限制为 2G、3G 或自定义网络速度。
- 可以设置网络延迟(Latency),以模拟不同网络响应时间。
- 还可以设置丢包率(Packet Loss)来模拟不稳定网络。
应用带宽限制:设置完成后,所有的网络请求将按照设置的速率限制进行传输,用户可以实时查看慢速网络对请求和响应的影响。
设置特定域名的速率限制
- 在Throttle Settings 窗口中,可以添加特定的域名或 IP 地址,只对某些网站或 API 请求启用网络限制。
- 这对于测试某些 API 的慢速响应,或验证应用在网络环境较差时的表现非常有帮助。
阻止请求和响应
Charles 提供阻止网络请求和响应的功能,允许用户在特定条件下拦截或终止某些网络请求,这对于模拟服务器异常或验证客户端的错误处理机制非常有用。
阻止请求
- 设置黑名单:选择菜单 Proxy > Access Control Settings,在 Denylist(拒绝列表)中添加需要阻止的域名或 IP 地址。
- 拦截请求:当客户端发出到黑名单中的网络请求时,Charles 会直接拒绝连接,客户端将收到无法访问的错误响应。
设置断点阻止请求
- 对特定请求设置断点,当请求被拦截时,用户可以选择 Abort(中止)请求。
- 这种方式可以模拟服务器故障或网络超时,测试客户端如何处理请求失败的场景。
构建并发送自定义请求
Charles 允许用户手动构建并发送自定义的 HTTP/HTTPS 请求,这对于测试接口、验证网络服务或重现问题非常有用。
构建自定义请求
打开构建请求界面:选择菜单 Tools > Compose,打开自定义请求构建工具。
设置请求细节:
- URL:在 URL 输入框中,填写目标服务器的 URL。
- 方法:从下拉菜单中选择请求方法(GET、POST、PUT、DELETE 等)。
- 请求头:点击 Headers,添加或修改请求头信息,例如设置
Content-Type
为application/json
。 - 请求体:在 Body 选项卡中输入请求体内容,例如 POST 请求的 JSON 数据。
发送请求:设置完成后,点击 Execute(执行)发送请求,Charles 将显示请求的响应结果。
重发自定义请求
- 构建请求后,Charles 会保留该请求的所有信息,用户可以通过 Repeat 选项快速重发相同的请求。
- 这对 API 测试、接口验证和重复发送测试数据非常有帮助。