Body-Umschreibung

Chute kann Inhalte in HTTP-Anfrage- und Antwort-Bodys mithilfe von regulären Ausdrücken oder JSONPath-Ausdrücken suchen und ersetzen. Dies erfordert MitM-Entschlüsselung für HTTPS-Verkehr.

Body-Umschreibungsregeln werden im Abschnitt [Body Rewrite] definiert. Pro Richtung (Anfrage / Antwort) wird nur die erste übereinstimmende Regel auf eine Nachricht angewendet.

[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

Regelformat

Jede Regel folgt diesem allgemeinen Format:

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

Hinweis: Der reguläre Ausdruck für die URL muss die vollständige Anfrage-URL abgleichen, nicht nur einen Teilstring davon. Muster sollten in der Regel mit .* enden, damit URLs mit beliebigem Pfad und Query-String abgeglichen werden.

Richtung

Schlüsselwort Beschreibung
response Auf Antwort-Body anwenden (Standard, wenn ausgelassen)
request Auf Anfrage-Body anwenden

Modi

Modus Beschreibung
regex Regulärer Ausdruck Suchen-und-Ersetzen
jsonpath-response / jsonpath-request / body-jsonpath-response / body-jsonpath-request JSONPath-basierte Änderung

Regex-Modus

Führt standardmäßiges Regex-Suchen-und-Ersetzen auf dem dekodierten Body-Text durch. Verwendet NSRegularExpression (ICU) mit Groß-/Kleinschreibung ignorierendem Abgleich. Die Ersetzung unterstützt Capture-Group-Referenzen ($1, $2 usw.).

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

Beispiel — Werbung aus JSON-Antwort entfernen:

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

Beispiel — Anfrage-Body bereinigen:

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

Beispiel — Capture Groups zur Neuformatierung von Daten verwenden:

[Body Rewrite]
// "Nachname, Vorname" zu "Vorname Nachname" tauschen
^https://api\.example\.com/users.* response regex "\"name\":\s*\"(\w+),\s*(\w+)\"" "\"name\":\"$2 $1\""

Beispiel — Eingebettete URLs im Antwort-Body umschreiben:

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

Token, die Leerzeichen enthalten, müssen mit doppelten Anführungszeichen umschlossen werden:

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

Um ein literales doppeltes Anführungszeichen innerhalb eines umschlossenen Tokens einzufügen, maskieren Sie es mit Backslash: \".


JSONPath-Modus

Ändert JSON-Bodys mithilfe von JSONPath-Ausdrücken. Unterstützt Lesen, Setzen und Löschen von Werten an bestimmten Pfaden.

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

Unterstützte JSONPath-Syntax

Ausdruck Beschreibung
$.key Auf Objekteigenschaft zugreifen
$.key.subkey Auf verschachtelte Eigenschaften zugreifen
$[0] Auf Array-Element per Index zugreifen
$.key[0].subkey Gemischter Objekt- und Array-Zugriff
$.items[*].name Wildcard: alle Elemente im Array
$.*.value Wildcard: alle Eigenschaften

Werttypen

Wert Ergebnis
"string" Auf Zeichenfolge setzen
42 Auf Ganzzahl setzen
3.14 Auf Gleitkommazahl setzen
true Auf booleschen Wert true setzen
false Auf booleschen Wert false setzen
null oder ausgelassen Den Pfad löschen

Hinweis: Das Umschließen eines Werts mit Anführungszeichen erzwingt keinen String-Typ — Anführungszeichen werden bei der Tokenisierung entfernt und der Typ wird aus dem verbleibenden Inhalt abgeleitet, sodass "42" zur Zahl 42 und "true" zum booleschen Wert true wird. Das Schlüsselwort nil wird ebenfalls als Lösch-Schlüsselwort akzeptiert, genau wie null.

Beispiel — Ein JSON-Feld setzen:

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

Beispiel — Ein JSON-Feld löschen:

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

Beispiel — Wildcard-Änderung:

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

Praxisbeispiele

Tracking-Parameter aus JSON-Antworten entfernen

Entfernen Sie das trackingId-Feld aus allen API-Antworten. Da pro Richtung nur die erste übereinstimmende Regel angewendet wird, verwenden Sie eine Regel pro URL-Muster:

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

Ein Script-Tag in HTML-Antworten einfügen

Ein benutzerdefiniertes <script>-Tag vor </body> in allen HTML-Seiten anhängen:

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

Vertrauliche Felder in Anfrageprotokollen schwärzen

API-Schlüssel und Token in ausgehenden Anfrage-Bodys ersetzen, bevor sie den Server erreichen. Da pro Richtung nur die erste übereinstimmende Regel angewendet wird, kombinieren Sie beide Felder in einer einzigen Regel:

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

Datumsformate in Antworten normalisieren

ISO-Daten durch ein kürzeres Format ersetzen:

[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"

Feature-Flags in der App-Konfiguration deaktivieren

Alle Feature-Flags in einem Konfigurationsendpunkt auf false zwingen:

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

CDN-URLs in zwischengespeicherten Antworten umschreiben

Alle Verweise auf ein altes CDN durch ein neues ersetzen:

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

Verarbeitungspipeline

Die Body-Umschreibung behandelt automatisch:

  1. Content-Encoding: Unterstützt gzip und deflate. Überspringt nicht unterstützte Kodierungen.
  2. Transfer-Encoding: Dekodiert Chunked-Transfer-Encoding vor der Verarbeitung.
  3. Dekodierung: Dekomprimiert Bodys vor der Anwendung von Umschreibungsregeln.
  4. Neukodierung: Komprimiert Bodys neu und aktualisiert Content-Length. Entfernt den Transfer-Encoding-Header.
  5. Accept-Encoding: Wenn eine Antwort-Regel auf die URL einer Anfrage passt, wird der Accept-Encoding-Header der Anfrage auf gzip, deflate, identity umgeschrieben, damit die Antwort in einer dekodierbaren Kodierung bleibt.

Die maximale Body-Größe für die Umschreibungsverarbeitung beträgt 128 KB. Größere Bodys werden ohne Änderung durchgeleitet.


Hinweise

  • Für HTTPS-Verkehr muss die MitM-Entschlüsselung für den übereinstimmenden Hostnamen aktiviert sein.
  • Der Regex-Abgleich ignoriert Groß-/Kleinschreibung. Die Ersetzungsvorlage unterstützt ICU-Capture-Group-Referenzen: $0 (vollständige Übereinstimmung), $1 (erste Gruppe), $2 (zweite Gruppe) usw.
  • Der JSONPath-Modus wird nur angewendet, wenn der Body gültiges JSON ist.
  • Body-Umschreibungsregeln werden auf den dekodierten (UTF-8) Body-Text angewendet.
  • Pro Richtung (Anfrage / Antwort) wird nur die erste übereinstimmende Regel auf eine Nachricht angewendet. Definieren Sie eine kombinierte Regel, wenn Sie mehrere Änderungen benötigen.
  • Das Löschen eines nicht vorhandenen JSONPath lässt den Body unverändert. Das Setzen eines Werts erzeugt den Schlüssel, wenn dessen übergeordnetes Objekt existiert; fehlt ein Zwischenpfad, passiert nichts.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-08-11 16:08:39

Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.

results matching ""

    No results matching ""