Skip to content

iPhone 用 JavaScript 脚本修改 HTTPS 请求和响应

在 HTTPS Capture 里编写 JavaScript 脚本,修改 iPhone 上匹配流量的 URL、Header、查询参数和 JSON Body;内置示例,带运行日志。

2 分钟阅读HTTPS Capture

一旦需要逻辑判断,固定规则就不够用了。比如根据 Body 计算签名头,只在某个字段等于特定值时修改另一个字段,或者在多次请求之间计数。HTTPS Capture 可以在 iPhone 上直接对匹配的流量运行 JavaScript 脚本,类似 Proxyman、mitmproxy 这些桌面工具的脚本功能。

创建脚本

  1. 在抓包页点 规则 → 脚本。
  2. 打开 启用脚本。
  3. 点 新建脚本 从模板开始,点 示例 选一个内置示例,或者点 导入脚本 加载 .capture.js 文件。

编辑器带语法高亮、行号和括号补全。保存时会先检查脚本有没有错误,保存后立即对新请求生效。

脚本格式

每个脚本都调用一次 Capture.defineScript:

Capture.defineScript({
  name: "Add debug header",
  version: "1.0.0",
  match: {
    urls: ["https://api.example.com/*"],
    methods: ["GET", "POST"]
  },

  onRequestHeaders(context, request) {
    request.headers.set("X-Debug", "1");
    request.queries.set("lang", "en");
    return request;
  }
});

一共有五个可选的钩子:

钩子执行时机
shouldMatch(request)额外判断,返回 false 则跳过这条请求
onRequestHeaders(context, request)请求发出之前,可以改 URL、方法、Header、查询参数
onRequest(context, request)拿到完整的请求 Body 之后
onResponseHeaders(context, request, response)响应头到达时
onResponse(context, request, response)拿到完整的响应 Body 之后

示例:修改 JSON 响应

Capture.defineScript({
  name: "Unlock feature flag",
  version: "1.0.0",
  match: { urls: ["https://api.example.com/config*"] },

  onResponse(context, request, response) {
    const body = JSON.parse(response.body || "{}");
    body.features = body.features || {};
    body.features.newCheckout = true;
    response.body = JSON.stringify(body);
    return response;
  }
});

常用 API

  • request.url、method、host、port、path:读取或修改请求目标
  • request.headers 和 request.queries:支持 get、set、append、delete,也可以直接写 request.headers["X-Debug"] = "1"
  • request.body / response.body 是文本,二进制数据用 bodyBytes
  • response.statusCode
  • context.state:同一条请求的各个钩子之间共享数据
  • context.shared:抓包期间在多条请求之间共享数据
  • env.get(key) / env.set(key, value):持久保存的值,比如需要反复使用的 Token
  • Capture.crypto.md5()、Capture.crypto.sha256()、Capture.base64.encode() / decode()
  • console.log() 的输出显示在 运行时日志 里

在请求钩子里返回 null,可以 拦截 这条请求。

安全设计

脚本运行在沙箱里:fetch、XMLHttpRequest、WebSocket 等网络 API 都被禁用,每个钩子都有严格的时间限制。脚本报错或超时时,流量原样通过,错误会写进日志,脚本出 bug 不会导致断网。每条请求只由第一个匹配的已启用脚本处理,拖动脚本可以调整优先级。

让 AI 帮你写脚本

点 AI 提示词 可以复制完整的脚本 API 文档。把它和你的需求一起发给 ChatGPT、Claude 等 AI 助手,就能得到完全符合 API 的脚本。

简单的固定修改用 重写规则 更快;一次性的手动修改用 断点。

HTTPS Capture

Capture and decrypt HTTPS traffic on iPhone

App Store

准备好试试了吗?

HTTPS Capture · Capture and decrypt HTTPS traffic on iPhone

App Store 免费下载