使用 Breakpoint 工具修改 GraphQL 请求

使用 Breakpoint 工具修改 GraphQL 请求 的封面图

本文简要演示如何使用 Breakpoint 工具拦截 GraphQL 的请求与响应,并修改 GraphQL 请求的请求头和请求体。

GraphQL 的问题

如果你的 App 使用 GraphQL 与后端服务器通信,那么所有 GraphQL 请求的 URL 都是相同的,例如 https://<your_server>/graphql

因此,除非读取请求体中的 Query Name,否则很难分辨每个 GraphQL 请求的作用。

下面的截图展示了 Proxyman 抓取 www.producthunt.com 的 App 流量时的情况。

GraphQL 请求的 URL 相同
GraphQL 请求的 URL 相同

👉 小贴士: 添加 Query Name 列,即可在主表格视图(Main Table View)中显示 Query Name。

对 GraphQL 请求使用 Breakpoint

由于 GraphQL 的 URL 都相同,Breakpoint 可能无法判断应该为哪个 GraphQL 请求设置断点。

要为 GraphQL 请求设置 Breakpoint,你可以选择以下任一方法:

1. 手动启用 GraphQL QueryName

创建新的 Breakpoint 规则时,点击 Wildcard 下拉菜单 -> Advanced -> GraphQL Query Name 即可。

启用带 GraphQL Query Name 的规则
启用带 GraphQL Query Name 的规则

2. 自动添加 GraphQL Query

如果是 GraphQL 请求,Proxyman 会自动添加 GraphQL Query Name。操作很简单:

  1. 在主表格视图中,右键点击 GraphQL 请求
  2. Tools -> Breakpoint
  3. GraphQL Query Name 会自动填入。
设置 GraphQL Query Name 规则
设置 GraphQL Query Name 规则

结果

Breakpoint 对 GraphQL 请求的表现符合预期。它允许我们修改请求/响应数据,包括请求头、URL、状态码或请求体。

设置 GraphQL Query Name 规则
设置 GraphQL Query Name 规则

GraphQL 与其他调试工具

所有调试工具,包括 Map Local、Breakpoint、Scripting 以及 Block/Allow List,都支持 GraphQL QueryName。

请在客户端代码中为操作命名,因为匿名查询无法被清晰地匹配。值得测试的响应场景包括:只含一个可空字段的普通 data 结果、顶层的 errors 数组,以及同时包含 data 和 errors 的部分响应。请将 Breakpoint 规则限定为单个操作,以免轮询或后台的 GraphQL 调用也被一并暂停。

希望这篇短文能帮你保持条理清晰。祝编码愉快!👨‍🚀

Proxyman 是一款高性能的 macOS 应用,可用于抓取和检查来自 iOS 设备、iOS 模拟器和 Android 设备上的应用及域名的 HTTP(s) 流量。

前往 https://proxyman.com/ 获取。

Noah Tran
Noah Tran

最后修订于 2026年7月16日。 新增具名操作的建议,以及值得测试的 GraphQL 错误场景。

精确暂停你需要的那个 GraphQL 操作

在 Proxyman 中按操作名匹配,使共用同一 GraphQL URL 的其他请求可以正常继续。

试用 GraphQL Breakpoint