---
url: https://docs.ogmabox.com/zh-Hant/app/match-replace.md
description: 使用 Ogma 比對與取代規則，自動修改擷取的 HTTP 與 WebSocket 流量。
---

# 比對與取代 {#match-replace}

比對與取代會在流量通過代理時自動修改流量，不必暫停，也不必對每個請求手動操作。

## 規則的運作方式 {#how-rules-work}

每條規則定義要尋找的內容及處理方式。當請求或回應符合條件時，規則會立即套用轉換。

規則依清單中的順序套用。如果兩條規則針對同一個標頭，第一條符合的規則會先套用，後續規則看到的是該項變更的結果。

## 規則欄位 {#rule-fields}

| 欄位 | 說明 |
| --- | --- |
| 名稱 | 規則的標籤。請使用能說明用途的名稱。 |
| 方向 | 規則套用至請求、回應或兩者 |
| 操作 | 要執行的轉換（請參閱下方操作表格） |
| 比對模式 | 依操作而定，可為字面文字、正規表示式或完整內容 |
| 比對值 | 要尋找的字串或模式 |
| 取代值 | 要替換成的值 |
| 已啟用 | 不必刪除規則即可啟用或停用的開關 |
| 篩選條件 | 選填的方法、主機、路徑和 HTTPQL 條件，用於限制規則的套用範圍 |

### 操作 {#operations}

| 操作 | 功能 |
| --- | --- |
| 新增標頭 | 新增具有固定名稱和值的標頭 |
| 移除標頭 | 依名稱刪除標頭 |
| 取代標頭 | 取代現有標頭的值 |
| 取代本文 | 使用比對值取代本文的一部分 |
| 路徑 / 查詢 / 查詢參數 | 變更請求路徑或查詢值 |
| 請求 / 回應行 | 變更選取的 HTTP 起始行組成部分 |
| 狀態碼 | 變更回應狀態 |
| 原始訊息 | 同時轉換 HTTP 起始行、標頭和本文 |
| WebSocket 酬載 | 取代符合條件的用戶端/伺服器訊息內容 |
| 工作流程 | 對選取的內容執行已啟用的轉換工作流程 |

## 比對模式 {#match-modes}

**字面文字**會比對完全相同的字串，適用於固定權杖、標頭名稱或特定值。

**正規表示式**會使用正規表示式比對。目標內容會變化時可使用此模式，例如比對每個工作階段都會變更的權杖，或擷取群組並在取代時重複使用。

在正規表示式取代中，使用 `$1`、`$2` 等擷取群組，在取代值中參照符合的部分。

**整段取代**會將選取的完整內容傳給轉換，不會尋找子字串。有些操作，例如新增/移除具名標頭，使用的是字面名稱，因此不會提供所有模式。

## 轉換完整回應本文 {#transforming-a-complete-response-body}

1. 建立並啟用**轉換**工作流程，再用測試輸入驗證。
2. 建立比對與取代規則，將方向設為**回應**，操作設為**工作流程 (本文)**。
3. 選擇**整段取代**比對模式，並選擇工作流程。
4. 使用 HTTPQL 篩選條件縮小規則範圍，例如：

```text
req.host.eq:"cdn.example.com" AND (req.path.cont:".js" OR resp.headers["Content-Type"].value.cont:"javascript")
```

工作流程會接收完整本文，其輸出會取代該本文。\*\*工作流程 (標頭)\*\*轉換具名標頭，\*\*工作流程 (原始標頭)\*\*則轉換標頭區塊。這些輸入與回應本文不同。

HTTPQL 篩選條件會在可用的請求/回應上下文中檢查。請求方向的規則不能依賴尚未到達的回應。規則產生大量執行時，請停用工作流程記錄；診斷轉換問題時再暫時啟用。

## 重新排列規則 {#reordering-rules}

拖曳規則列，調整其在清單中的位置。當規則修改同一個請求或回應中重疊的部分時，順序很重要。

## AI 輔助 {#ai-assist}

在規則編輯器中按一下 **使用 AI 填入**，以自然語言描述想要的變更。Ogma 會根據描述產生規則欄位。啟用前，請檢查並調整產生的值。

有效提示的範例：

* 「移除所有回應中的 X-Frame-Options 標頭」
* 「將 Authorization 標頭值取代為我的測試權杖」
* 「在所有請求中新增名為 X-Debug、值為 true 的標頭」

## 測試規則 {#testing-a-rule}

將規則套用至即時流量前，請先用範例請求測試：

1. 開啟規則編輯器。
2. 將原始 HTTP 請求貼到**測試**面板。
3. 按一下**套用規則**。面板會顯示結果，以及套用了哪些規則。
4. 確認輸出符合預期。
5. 啟用規則。

測試面板也提供**回應**目標，包含狀態、標頭和本文輸入。請檢查已套用的規則清單：測試的是適用的規則，不只是孤立的編輯器欄位。

## 比對與取代與攔截 {#match-replace-vs-intercept}

**比對與取代**會自動執行。規則啟用後，無須你採取任何操作，就會轉換每個符合條件的請求或回應。

**攔截**會暫停流量，等待手動決定。當正確的變更取決於需要逐一請求評估的上下文時，請使用攔截。同一項轉換應每次套用且不必檢查時，請使用比對與取代。

## 常見用途 {#common-uses}

* 替換所有請求中的工作階段 Cookie，以測試另一個帳號。
* 新增啟用除錯或管理員模式的標頭。
* 移除回應中的安全標頭，評估用戶端行為。
* 取代重新導向回應中寫死的主機。
* 重寫請求路徑前綴。

## 相關頁面 {#related-pages}

* [攔截](./intercept.md)
* [HTTP 歷程記錄](./http-history.md)
* [工作流程](./workflows.md)
