模式切换
流量控制
流量控制是 Charles 的重要功能之一,帮助用户有效管理和分析网络请求。通过流量控制,用户可以暂停或恢复抓包、过滤特定请求、重放或修改请求,以及设置断点调试,从而对抓包过程进行更细粒度的控制。
暂停/恢复抓包
Charles 允许用户随时暂停或恢复抓包,以便用户在需要时中断抓包过程,避免不必要的流量被捕获。
- 暂停抓包: 点击工具栏中的 Record 按钮(录制按钮),当按钮状态变为"未激活"(灰色)时,Charles 将停止捕获网络流量。
- 恢复抓包: 再次点击 Record 按钮,当按钮激活(红色)时,Charles 开始继续捕获流量。
此功能适合在不需要抓包的场景下暂停,以便只捕获重要请求,减少不必要的噪音。
过滤特定请求
在 Charles 中,用户可以根据特定条件过滤请求,确保只显示相关的请求或响应。过滤功能可以提高分析效率,尤其在大量网络流量的情况下。
通过搜索框进行过滤
- 在请求列表的
Filter
搜索框中输入关键字(如 URL、状态码、请求方法),Charles 会自动过滤并显示与之匹配的请求。 - 例如,可以输入
GET
来只显示 GET 请求,或者输入404
来查看所有返回 404 状态码的响应。
高级过滤功能
- 通过选择菜单 View > Filter,可以打开高级过滤选项,设置更详细的过滤条件,包括请求路径、主机名、IP 地址、端口等。
排除不需要抓取的流量
有时,用户只希望抓取某些特定的请求,或者排除某些不相关的流量。通过配置 Charles,可以排除不需要的流量。
排除流量:
- 选择 Proxy > Recording Settings。
- 在弹出的窗口中,点击 Exclude 选项卡。
- 在此处,可以设置需要排除的域名或 IP 地址范围,避免捕获它们的流量。例如,可以排除某些广告域名或第三方 API 调用的流量。
仅包含指定流量:
- 在 Recording Settings 中的 Include 选项卡,用户可以设置 Charles 只抓取某些特定域名的流量。未包含在列表中的流量将不会被抓取。
使用黑名单和白名单功能
黑名单和白名单是 Charles 提供的流量控制功能,允许用户对网络请求进行更精确的管理。
白名单(允许列表)
- 设置 Charles 只允许抓取在白名单中的网络请求。可以根据域名、路径、端口号等信息定义白名单。
- 配置方式:选择 Proxy > Access Control Settings,在 Allowlist 选项卡中添加允许的域名。
黑名单(拒绝列表)
- 设置 Charles 自动拒绝或忽略来自黑名单中的网络请求,适用于屏蔽广告或不需要的第三方流量。
- 配置方式:选择 Proxy > Access Control Settings,在 Denylist 选项卡中添加需要拒绝的域名。
重放请求(Repeat)
Charles 提供重放请求功能,允许用户重新发送之前捕获的请求,以便测试接口的稳定性或调试前后端交互问题。
操作步骤
- 在请求列表中,右键点击某个已捕获的请求。
- 选择 Repeat,Charles 会立即重新发送该请求。
- 可以观察新的响应是否与原响应一致,验证服务器的稳定性。
高级重放(Advanced Repeat)
- Charles 允许用户自定义重放请求的次数和频率。
- 右键点击请求,选择 Repeat Advanced,可以设置重复次数和间隔时间。例如,设置请求重复 10 次并间隔 1 秒,用于压力测试。
断点调试请求(Breakpoints)
断点调试是 Charles 的高级功能之一,允许用户在网络请求发送之前或服务器响应返回之前进行拦截,并手动修改请求或响应内容。
设置断点
- 在请求列表中,右键点击某个请求,选择 Breakpoints。
- 当相同的请求再次发送时,Charles 会在请求发送之前暂停,显示一个调试窗口,用户可以在此窗口中查看和修改请求的内容(如 URL、头信息或请求体)。
执行断点调试
- 当 Charles 拦截到请求后,用户可以:
- 修改请求:更改 URL、参数或头信息后,再点击 Execute(执行),将修改后的请求发送到服务器。
- 查看响应:Charles 也允许用户在响应返回时暂停,并修改响应体或状态码。
修改请求和响应
Charles 提供了强大的修改功能,允许用户在调试过程中灵活调整网络请求和响应。
修改请求
- 在 Charles 中,右键点击一个请求,选择 Edit。
- 在编辑窗口中,可以修改:
- URL:更改请求地址。
- 请求头:如更改
User-Agent
、Content-Type
等。 - 请求体:特别适用于
POST
请求,可以更改提交的表单数据或 JSON 数据。
- 修改完毕后,点击 Execute,Charles 会发送修改后的请求并显示结果。
修改响应
- 通过设置断点拦截响应,用户可以修改服务器返回的响应内容。
- 当响应被拦截时,用户可以修改响应的状态码、头信息以及响应体(如 JSON、HTML 等)。
- 修改完成后,点击 Execute,Charles 将返回修改后的响应给客户端。这对于模拟服务器不同的响应结果非常有用,例如验证客户端对错误代码的处理。