---
url: https://docs.ogmabox.com/ja/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)
