ボディリライト

Chuteは正規表現またはJSONPath式を使用して、HTTPリクエストおよびレスポンスボディのコンテンツを検索・置換できます。HTTPSトラフィックにはMitM復号が必要です。

ボディリライトルールは[Body Rewrite]セクションで定義されます。1つのリクエストに複数のルールを適用できます。

[Body Rewrite]
^https://api\.example\.com/response response regex "old-text" "new-text"
^https://api\.example\.com/request request regex "sensitive" "[redacted]"
^https://api\.example\.com/data jsonpath-response jsonpath $.ads null

ルール形式

各ルールは次の一般的な形式に従います:

<URL regex> [direction] <mode> <pattern> <replacement>

方向

キーワード 説明
response レスポンスボディに適用(省略時のデフォルト)
request リクエストボディに適用

モード

モード 説明
regex 正規表現による検索と置換
jsonpath-response / jsonpath-request / body-jsonpath-response / body-jsonpath-request JSONPathベースの変更

正規表現モード

デコードされたボディテキストに対して標準的な正規表現の検索と置換を実行します。NSRegularExpression(ICU)を使用し、大文字小文字を区別しないマッチングを行います。置換はキャプチャグループ参照($1$2など)をサポートします。

<URL regex> [response|request] regex <pattern> <replacement>

例 — JSONレスポンスから広告を削除:

[Body Rewrite]
^https://api\.example\.com/feed response regex "\"ads\":\s*\[.*?\]" "\"ads\":[]"

例 — リクエストボディをサニタイズ:

[Body Rewrite]
^https://api\.example\.com/submit request regex "\"password\":\s*\".*?\"" "\"password\":\"[FILTERED]\""

例 — キャプチャグループを使用してデータを再フォーマット:

[Body Rewrite]
// "last, first" を "first last" に入れ替え
^https://api\.example\.com/users response regex "\"name\":\s*\"(\\w+),\\s*(\\w+)\"" "\"name\":\"$2 $1\""

例 — レスポンスボディ内の埋め込みURLをリライト:

[Body Rewrite]
^https://api\.example\.com response regex "https://old-cdn\\.example\\.com" "https://new-cdn.example.com"

スペースを含むトークンはダブルクォートで囲む必要があります:

[Body Rewrite]
^https://example\.com response regex "old value with spaces" "new value"

トークン内にリテラルのダブルクォートを含めるには、バックスラッシュでエスケープします: \"


JSONPathモード

JSONPath式を使用してJSONボディを変更します。特定のパスでの値の読み取り、設定、削除をサポートします。

<URL regex> jsonpath-response|jsonpath-request jsonpath <jsonpath-expression> [value]

サポートされるJSONPath構文

説明
$.key オブジェクトプロパティにアクセス
$.key.subkey ネストされたプロパティにアクセス
$[0] インデックスで配列要素にアクセス
$.key[0].subkey オブジェクトと配列の混合アクセス
$.items[*].name ワイルドカード: 配列内の全アイテム
$.*.value ワイルドカード: 全プロパティ

値の型

結果
"string" 文字列値に設定
42 整数に設定
3.14 浮動小数点数に設定
true ブール値trueに設定
false ブール値falseに設定
null または省略 パスを削除

例 — JSONフィールドを設定:

[Body Rewrite]
^https://api\.example\.com/profile jsonpath-response jsonpath $.user.name "Anonymous"

例 — JSONフィールドを削除:

[Body Rewrite]
^https://api\.example\.com/data jsonpath-response jsonpath $.tracking null

例 — ワイルドカード変更:

[Body Rewrite]
^https://api\.example\.com/list jsonpath-response jsonpath $.items[*].hidden true

実践例

JSONレスポンスからトラッキングパラメータを除去

全てのAPIレスポンスからtrackingIdsessionIdフィールドを削除:

[Body Rewrite]
^https://api\.example\.com/ jsonpath-response jsonpath $.trackingId null
^https://api\.example\.com/ jsonpath-response jsonpath $.sessionId null

HTMLレスポンスにスクリプトタグを注入

全てのHTMLページの</body>の前にカスタム<script>タグを追加:

[Body Rewrite]
^https://www\.example\.com/ response regex "</body>" "<script>console.log('injected')</script></body>"

リクエストログの機密フィールドを墨消し

サーバーに到達する前に、送信リクエストボディ内のAPIキーとトークンを置換:

[Body Rewrite]
^https://api\.example\.com/ request regex "\"apiKey\":\s*\"[^\"]+\"" "\"apiKey\":\"[REDACTED]\""
^https://api\.example\.com/ request regex "\"token\":\s*\"[^\"]+\"" "\"token\":\"[REDACTED]\""

レスポンスの日付形式を正規化

ISO日付を短い形式に置換:

[Body Rewrite]
^https://api\.example\.com/ response regex "(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z" "$1/$2/$3 $4:$5"

アプリ設定の機能フラグを無効化

設定エンドポイントの全ての機能フラグをfalseに強制:

[Body Rewrite]
^https://api\.example\.com/config jsonpath-response jsonpath $.features[*].enabled false

キャッシュされたレスポンスのCDN URLをリライト

古いCDNへの全ての参照を新しいものに置換:

[Body Rewrite]
^https://www\.example\.com/ response regex "https://old-cdn\.example\.com" "https://new-cdn.example.com"

処理パイプライン

ボディリライトは以下を自動的に処理します:

  1. Content-Encoding: gzipdeflateをサポート。サポートされていないエンコーディングはスキップされます。
  2. Transfer-Encoding: 処理前にチャンク転送エンコーディングをデチャンクします。
  3. デコード: リライトルールを適用する前にボディを展開します。
  4. 再エンコード: ボディを再圧縮し、Content-Lengthを更新します。Transfer-Encodingヘッダーを削除します。

リライト処理の最大ボディサイズはデフォルトで128KBです。これより大きいボディは変更されずに通過します。


注意事項

  • HTTPSトラフィックの場合、マッチするホスト名に対してMitM復号が有効になっている必要があります。
  • 正規表現マッチングは大文字小文字を区別しません。置換テンプレートはICUキャプチャグループ参照をサポートします: $0(完全一致)、$1(最初のグループ)、$2(2番目のグループ)など。
  • JSONPathモードはボディが有効なJSONである場合にのみ適用されます。
  • ボディリライトルールはデコードされた(UTF-8)ボディテキストに適用されます。
  • 同じリクエスト/レスポンスに複数のルールがマッチして適用される可能性があります(定義された順序で適用されます)。
  • ルールが存在しないパスの値をJSONPathで設定または削除した場合、ボディは変更されません。
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-06-28 02:09:17

results matching ""

    No results matching ""