指南

设置一个断点 在移动端请求上

在半途暂停来自真机的请求或响应,在仪表盘里编辑原始 HTTP,然后让它继续——或者中止它。iOS 的 VPN 与 PAC 模式、通过代理的 Android,以及被抓包的 Chrome 都适用。

观察流量能告诉你应用发了什么。断点则让你在它到达之前改掉它。当请求或响应匹配你设定的模式时,它会被扣住——iOS VPN 模式下在手机本身的隧道内,PAC 模式的 iOS、Android 和浏览器则在代理服务器上——并在仪表盘中显示为一个实时暂停,附带原始 HTTP 的编辑器。你先编辑,再决定:带着或不带你的改动继续,或者中止。

无论哪种情况,仪表盘都是驾驶舱;手机完全不必碰。模式是简单的「主机加路径」通配符,一键全捕获能暂停所有请求,被遗忘的暂停会自动超时,所以你走开后留下的断点永远不会永久卡住手机的流量。

开始之前

你需要 准备什么

一部已在抓包的手机,以及在它上面已解密、你想暂停的主机。

  • 一部已配对、已开启抓包的手机——任一模式的 iOS,或通过代理的 Android。

  • 该设备 SSL 代理列表中的主机。带路径的模式需要已解密的主机;加密主机只能按名称匹配。

  • 打开的仪表盘,以及每次暂停大约六十秒的注意力——这就是超时时间。

  • 可选:一个存有新令牌的环境变量,这样重放调用时不必粘贴密钥。

分步操作

按顺序 执行

七步:解密、设定模式、触发、编辑、决定,然后是响应侧与重放。

  1. 01

    先解密主机

    在信息流中找到一条发往该端点的真实请求,确认它的正文可读。如果不可读,把主机加入设备的 SSL 代理列表并再次触发调用——在 iOS 的 VPN 模式下,把隧道关掉再打开,让它读取新列表。断点按主机和路径匹配,而路径只存在于已解密的主机上。

  2. 02

    添加请求模式并保存

    从设置导航打开 Breakpoints 页面。添加请求模式可在出站请求到达服务器前暂停它,添加响应模式则在应用看到回复前暂停它——语法与拦截规则相同,都是「主机加路径」通配符。点击 Save patterns 把它们推送到抓包链路。按设备的模式位于设备下的 Breakpoints;全局集合是每台设备的兜底。

    赶时间?Pause all requests 是一键全捕获,不需要任何模式就能暂停每一个出站请求。Resume all 则撤销它。

    两个模式——一个用于请求侧,一个用于响应侧
    text
    # Request patterns (pause before the request leaves the phone)
    api.example.com/v1/checkout/*
    
    # Response patterns (pause the reply before the app sees it)
    *.example.com/v1/session
  3. 03

    从手机触发调用

    使用应用。当请求匹配时它会停下来——VPN 模式下在 iOS 隧道扩展内,其他情况在代理服务器上——并出现在仪表盘的 Live pauses 下,状态标签会确认实时链路正常。对应用来说,它只是在等一个慢网络。

  4. 04

    编辑原始 HTTP

    选中暂停项,在文本区编辑请求:方法、路径、头部和正文。内容长度会自动重算,你永远不用数字节。Host 头部可以编辑,但不会改变请求的去向——它改变的是服务器看到的内容,而不是请求发往哪里。

    被暂停的请求在编辑器里的样子
    http
    POST /v1/checkout/confirm HTTP/1.1
    Host: api.example.com
    Content-Type: application/json
    Authorization: Bearer <redacted>
    
    {"amount": 4900, "currency": "eur", "coupon": null}
  5. 05

    在六十秒内继续、中止或重置

    Continue 让请求继续,带不带你的改动都可以。Abort 丢弃它,应用会看到失败。Reset 丢掉你的改动并恢复抓到的原件。你的决定通过实时控制通道传到拥有该暂停的设备;如果六十秒内没有任何决定,暂停会自动超时,原始请求照常通过,所以无人照看的断点永远不会把手机彻底堵死。

  6. 06

    也暂停响应侧

    响应模式会在应用收到之前扣住服务器的回复。你可以借此测试应用面对服务器从不发送的字段、从不返回的状态码或略有错误的正文时会怎么做——不需要模拟规则,也不用碰服务器。编辑、继续,然后观察应用的反应。

  7. 07

    用 Resend 重放并迭代

    在任何已抓请求的操作栏里,Resend 会从设备或代理原样重新发出它,并把新抓到的记录标记为已重发。Edit and Resend 会打开一个弹窗,让你先调整方法、URL、头部或正文。URL、头部或正文里的双花括号占位符会在请求发出前一刻用设备的环境变量解析——所以你可以用新令牌重放调用而不必粘贴密钥。用信息流中的 Resent 筛选把重放与原始请求分开,并把两者结合起来:暂停一条请求,复制它,然后用 Edit and Resend 发送各种变体,直到得到你想要的响应。

故障排除

可能出现 的问题

如果什么都没暂停,说明模式匹配的是它看不到的东西,或者根本没有保存。

  • 请求直接通过,没有暂停

    检查该设备上主机是否已解密,是否点击了 Save patterns,以及通配符是否与信息流行显示的确切主机和路径匹配。按设备的集合会覆盖全局兜底,所以也要检查手机正在使用的是哪一个。

  • 我还没编辑完,暂停就消失了

    它在六十秒时超时了,原始请求继续了。提前准备好你的改动——从之前的抓包里粘贴——然后再次触发调用。

  • 修改 Host 头部并没有把请求发到别处

    这是设计如此:该头部可以编辑但从不重定向。想打到另一台服务器,请用 Edit and Resend 换一个 URL,或者把设备的出口流量路由到外部代理。

  • Pause all requests 冻结的范围超出我的预期

    它会捕获你设置范围内的每一个出站请求。点击 Resume all,然后为你唯一关心的主机添加一个窄的请求模式。

  • 状态标签显示实时链路已断开

    在控制通道重新连接之前,你的 Continue 或 Abort 无法到达设备。等待标签恢复;期间超时的暂停会按原样继续。

常见问题

大家常问 的问题

没有 Wi-Fi 代理,断点在 iOS 上也能用吗?

能。VPN 模式下,设备端隧道在网络扩展内运行同样的暂停-编辑-继续循环,Wi-Fi 和蜂窝网络都可以。PAC 模式则在代理服务器上运行。两种情况下仪表盘看起来完全一样。

我能暂停响应而不是请求吗?

可以——响应模式会在应用看到之前扣住服务器的回复,你可以编辑状态码、头部或正文,观察应用如何应对。

如果我希望每次都自动做这个改动呢?

那是拦截规则或脚本的事,不是断点:规则自动回应每次匹配,脚本按请求改写字节。断点适用于你想每次亲自决定的场景。

拦下请求, 改变主意

一个模式、一次暂停、一次编辑——你手中的手机就能收到你想测试的那条请求或回复。

Ask your mate