組合重放使用教程
文件版本:20260729
文件目前版本對應的 APP 版本:
- iOS:>= 3.13
- Android:>= 1.2.0
組合重放(Combo Replay)可以把多個 HTTP/HTTPS 請求編排成一條「流程」,依依賴關係自動串行或並行執行。適合聯調介面、迴歸測試、批量驗證同一 API 的不同入參等場景。

一、功能概覽
| 能力 | 說明 |
|---|---|
| 多請求編排 | 從抓包歷史選擇請求,在畫布上組合 |
| 同 API 多節點 | 同一介面可添加多次,每個節點獨立預設參數 |
| 依賴關係 | 控制執行順序(如先登入再調業務介面) |
| 依賴注入 | 把上游回應的 token 等自動填入下游請求 |
| 表達式注入 | 動態產生時間戳、UUID,或使用全域變數 |
| 手動執行 | 一鍵重放,查看每個節點的請求/回應詳情 |
| 排程任務 | 按 Cron 或自訂間隔自動執行 |
二、快速上手
步驟 1:先抓包
組合重放的請求來自抓包歷史。請先用 App 正常抓取一批 HTTP/HTTPS 請求(WebSocket 請求不能添加)。
步驟 2:建立規則
- 進入 組合重放 列表
- 點擊 + 添加組合重放規則
- 填寫規則名稱(必填,預設類似
Combo Replay 260729) - 點擊右下角 + 添加請求到畫布
- 在列表中選擇需要的請求

步驟 3:執行
- 儲存規則(編輯頁右上角 ✓)
- 在列表中 點擊規則名 進入執行頁
- 點擊 執行重放
執行完成後,節點會顯示成功/失敗狀態;此時點擊節點可查看詳情。

三、規則管理
3.1 列表資訊
每條規則卡片顯示:
- 規則名稱
- 節點數量
- 路徑預覽(最多 3 個)
- 依賴數量、參數映射數量
- 最近更新時間
3.2 建立 / 編輯 / 刪除
| 操作 | 方式 |
|---|---|
| 建立 | 列表頁導覽列 + |
| 編輯 | 左滑 → 編輯 |
| 刪除 | 左滑 → 刪除 |
| 儲存 | 編輯頁右上角 ✓ |
規則儲存在本機,解除安裝 App 或清除資料會遺失。

四、編輯組合規則
4.1 添加請求
- 點擊頁面右下角 + 懸浮按鈕
- 支援搜尋 URL / Method
- 可按 Session、Host、類型、狀態碼篩選
同一 API 可多次添加:例如添加 3 個 /api/order 節點,分別測試正常單、邊界值、異常參數。
4.2 節點選單
點擊節點彈出選單:
| 選單 | 作用 |
|---|---|
| 設定依賴 | 進入連線模式,再點擊目標節點建立依賴 |
| 預設參數 | 修改請求的 Query / Header / Body(也可在執行頁面修改,但執行頁面的修改為暫時性修改) |
| 依賴注入 | 設定上游回應 → 下游請求的參數映射 |
| 刪除 | 刪除節點及相關依賴、映射 |
拖動節點 可調整位置;點擊空白處 取消選取或退出連線模式。

五、預設參數
用於在 編輯規則階段 為每個節點固定測試資料,尤其適合「同 API、不同入參」的場景。
5.1 操作步驟
- 點擊節點 → 預設參數
- 分別編輯 查詢參數 / 請求標頭 / 請求主體
- 全部改完後,點擊預設參數 Sheet 右上角 ✓ 儲存到規則
5.2 與執行頁「修改請求」的區別
| 預設參數(編輯頁) | 修改請求(執行頁) | |
|---|---|---|
| 入口 | 節點選單 → 預設參數 | 執行頁點擊節點 |
| 持久化 | 寫入規則,下次還在 | 僅本次執行,不寫回規則 |
| 用途 | 固定測試 case | 暫時微調再跑 |
5.3 典型用法:同 API 多場景
節點 A: POST /api/login → body: 正常帳號
節點 B: POST /api/login → body: 密碼錯誤
節點 C: POST /api/login → body: 空密碼
(三個節點無依賴 → 並行執行)
5.4 支援表達式注入
見:【八、表達式注入】

六、依賴關係
6.1 含義
連線 A → B 表示:A 依賴 B,B 先執行,A 後執行。
箭頭從 下游(A) 指向 上游(B)。
6.2 建立依賴
- 點擊 下游節點 → 設定依賴
- 頂部出現藍色提示:「點擊目標節點建立依賴」
- 點擊 上游節點
- 出現連線
6.3 限制
- 不能重複建立同一條依賴
- 不能形成 環路
- 刪除連線會同時刪除相關的 參數映射
6.4 執行順序示意
┌─ 節點 B ─┐
節點 A ─┤ ├─ 並行(同層)
└─ 節點 C ─┘
↓
節點 D(等 A、C 都成功後再執行)
- 同一層(無相互依賴):並行執行
- 不同層(有依賴關係):串行執行,上一層全部成功後才執行下一層
- 任一層有失敗:後續所有節點標記為 已跳過
七、依賴注入(參數映射)
用於把上游回應裡的 token、userId 等,自動填入下游請求。
7.1 前提
目標節點必須 至少有一條上游依賴,否則會提示「無上游節點,請先建立依賴關係」。
7.2 設定步驟
- 點擊 下游節點 → 依賴注入
- 點擊 添加映射,設定:
| 設定項 | 說明 | 範例 |
|---|---|---|
| 來源節點 | 從哪個上游取回應 | 登入節點 |
| 從上游回應提取 | 回應標頭 / 回應主體 JSON 路徑 | data.token |
| 注入到請求 | 請求標頭 / 查詢參數 / 請求主體 | 請求標頭 Authorization |
| 可選前綴 | 注入值前拼接的字串 | Bearer |
- 儲存映射

7.3 經典場景:登入 + 帶 Token 請求
[登入 POST /login] ──→ [取得使用者資訊 GET /user/profile]
│ ↑
回應: data.token Authorization = Bearer ${注入的 token}
- 添加兩個請求
- 對
GET /user/profile→ 設定依賴 → 點擊POST /login - 對
GET /user/profile→ 依賴注入:- 來源:登入節點,回應主體
data.token - 目標:請求標頭
Authorization - 前綴:
Bearer
- 來源:登入節點,回應主體
7.4 執行時的處理順序
預設參數 / 修改請求
↓
表達式注入(${method.timestamp()} 等)
↓
依賴注入(參數映射)
↓
發送 HTTP 請求
八、表達式注入
在 請求標頭、查詢參數、請求主體 中寫入 ${...} 表達式,執行時自動替換。
8.1 內建方法
| 表達式 | 替換結果 |
|---|---|
${method.timestamp()} | 目前時間戳(毫秒) |
${method.uuid()} | UUID(小寫) |
${method.date()} | 日期,如 2026-07-29 |
${method.time()} | 時間,如 14:30:00 |
${method.datetime()} | 日期時間,如 2026-07-29 14:30:00 |
範例:
{
"requestId": "${method.uuid()}",
"timestamp": "${method.timestamp()}",
"date": "${method.date()}"
}
8.2 全域變數
使用 ${token}、${appId} 等非 method. 開頭的表達式,即為全域變數。
設定方式(執行頁):
- 規則中任意節點使用了
${variableName}表達式 - 執行頁狀態列右側會出現 🌐 按鈕
- 點擊後填寫各變數的值
- 儲存後 隨規則持久化(刪除規則時一併清除)
預設參數、執行頁「修改請求」均支援表達式語法;實際替換發生在點擊「執行重放」時。
8.3 組合範例
Header: X-Request-Id: ${method.uuid()}
Query: ts=${method.timestamp()}
Body: {"token": "${token}", "userId": "123"}
執行前在 🌐 中填寫 token 的實際值即可。

九、執行頁
9.1 介面

9.2 執行前
- 點擊節點 → 修改請求(僅影響本次執行,不寫回規則)
- 有全域變數表達式 → 點擊 🌐 填寫變數值
9.3 執行後
- 點擊節點 → 執行詳情(實際發送的請求、回應、耗時、錯誤資訊)
- 導覽列 重置(紅色):清除所有結果,可重新編輯並執行
9.4 節點狀態
| 狀態 | 含義 |
|---|---|
| 灰色圓圈 | 待執行 |
| 藍色進度 | 執行中 |
| 綠色 ✓ | 成功(HTTP 2xx) |
| 紅色 ✗ | 失敗 |
| 橙色 − | 已跳過(上游失敗) |
9.5 成功判定
HTTP 狀態碼 200–299 視為成功,其餘視為失敗。
十、典型場景手冊
場景 1:並行測同一介面多種入參
POST /api/order 節點1 body: {"type":"normal"}
POST /api/order 節點2 body: {"type":"edge"}
POST /api/order 節點3 body: {"type":"invalid"}
- 不建立依賴 → 三個節點並行執行
- 各節點透過 預設參數 設定不同 body
- 執行後對比各節點結果
場景 2:登入鏈式呼叫
POST /login → GET /user → POST /order
│ ↑ ↑
└──── token 注入 Authorization ─┘
- 建立依賴:
GET /user依賴POST /login,POST /order依賴GET /user - 在
GET /user、POST /order上設定 token 映射 - 串行執行:登入 → 取得使用者資訊 → 下單
場景 3:動態參數 + 固定 Token
- Body 中寫:
{"ts":"${method.timestamp()}","id":"${method.uuid()}"} - Header 中寫:
Authorization: Bearer ${token} - 執行前在 🌐 中填寫
token - 每次執行時間戳、UUID 都會自動更新
十一、常見問題
Q:添加了請求但執行頁是空的?
A:編輯頁需要點擊 ✓ 儲存規則後,再從列表進入執行頁。
Q:預設參數改了,執行頁沒變?
A:確認編輯頁已儲存規則;執行頁「修改請求」只影響當次執行,不會覆蓋預設參數。
Q:依賴注入不生效?
A:檢查:① 是否建立了依賴關係;② JSON 路徑是否與樣本回應一致;③ 上游節點是否執行成功;④ 表達式注入在依賴注入之前執行,注意順序。
Q:全域變數替換為空?
A:需要在執行頁點擊 🌐 填寫變數值並儲存;未填寫時替換為空字串。
Q:為什麼有的節點被跳過?
A:同層或上游節點執行失敗時,後續層所有節點會被標記為「已跳過」。
Q:WebSocket 請求能添加嗎?
A:不能,僅支援普通 HTTP/HTTPS 請求。
十二、操作速查表
| 我想… | 怎麼做 |
|---|---|
| 新建規則 | 列表 + → 填名稱 → 加請求 → ✓ |
| 同 API 測多組參數 | 多次添加同一請求 → 各節點 預設參數 |
| 控制先後順序 | 設定依賴 → 點擊上游節點 |
| 自動帶 token | 依賴注入 設定映射 |
| 動態時間戳/UUID | 參數中寫 ${method.timestamp()} 等 |
| 共用 token 等設定 | 寫 ${token} → 執行頁 🌐 填寫 |
| 暫時改參數再跑 | 執行頁點節點 → 修改請求 |
| 看某次請求詳情 | 執行後點節點 |
| 重新跑 | 重置 → 再 執行重放 |