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. Mehrere Regeln können auf eine einzelne Anfrage angewendet werden.

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

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

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 trackingId- und sessionId-Felder aus allen API-Antworten:

[Body Rewrite]
^https://api\.example\.com/ jsonpath-response jsonpath $.trackingId null
^https://api\.example\.com/ jsonpath-response jsonpath $.sessionId 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:

[Body Rewrite]
^https://api\.example\.com/ request regex "\"apiKey\":\s*\"[^\"]+\"" "\"apiKey\":\"[REDACTED]\""
^https://api\.example\.com/ request regex "\"token\":\s*\"[^\"]+\"" "\"token\":\"[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.

Die maximale Body-Größe für die Umschreibungsverarbeitung beträgt standardmäßig 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.
  • Mehrere Regeln können auf dieselbe Anfrage/Antwort abgestimmt und angewendet werden (sie werden in der Reihenfolge ihrer Definition angewendet).
  • Wenn eine Regel einen Wert über JSONPath setzt oder löscht, der nicht existiert, bleibt der Body unverändert.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-06-28 02:09:17

results matching ""

    No results matching ""