Rewrite-Regeln und Breakpoints
Mitschneiden lässt dich „hinschauen“, Regeln und Breakpoints lassen dich „verändern“. Trace Eagle macht dich zum Herrn über deinen Verkehr: Requests ohne Code ändern, mit einfachen, direkten, klickbaren Regeln Tausende Flows automatisch umschreiben; oder mit Breakpoints Flows einzeln anhalten und bearbeiten; und nur für die komplexe Logik, die Regeln wirklich nicht ausdrücken können, musst du auf Skripte / Plugins zurückgreifen.
1. Rewrite-Regeln (einfach per Klick, automatische Änderungen)
Abschnitt betitelt „1. Rewrite-Regeln (einfach per Klick, automatische Änderungen)“Der schlechteste Einstieg, um Requests zu ändern, ist ein Skript zu schreiben. Hier musst du das nicht: Wähle eine Aktion aus einem Spickzettel und trage einen Wert ein, und schon ist das eine Regel: einfach, intuitiv und in dem Moment angewendet, in dem du sie erstellst.
Regeln stehen eine pro Zeile in der Form <match> <action>://<value> (zum Beispiel *.example.com resHeaders://X-Debug: 1). Leerzeilen und #-Kommentare werden ignoriert, jede Zeile wird für sich validiert, und Änderungen greifen beim Speichern sofort; Regeln lassen sich in benannte Gruppen organisieren und gruppenweise ein- und ausschalten. Die Oberfläche bringt einen klickbaren Spickzettel mit: einmal klicken, um das passende Beispiel einzufügen, dann nur noch den Wert bearbeiten, keine Syntax zum Auswendiglernen.

Flexible Match-Bedingungen
Abschnitt betitelt „Flexible Match-Bedingungen“- Exakte Domain:
traceeagle.com(kann ein Pfad-Präfix enthaltentraceeagle.com/path) - Wildcard-Subdomain:
*.traceeagle.com(matcht die Apex-Domain plus alle Subdomains) - Regex gegen die gesamte URL:
regex://… - Exakte vollständige URL:
$https://host/path - Port:
:8080 - Negation: einem beliebigen Match ein
!voranstellen
Unterstützte Rewrite-Aktionen
Abschnitt betitelt „Unterstützte Rewrite-Aktionen“Request-Richtung
- Umleiten / weiterleiten: das angewählte Ziel-IP ändern (
host), auf eine andere vollständige URL abbilden (map-remote, kann auf einen lokalen Entwicklungsserver zeigen), über einen vorgeschalteten http/socks5-Proxy leiten oder die Netzwerkmerkmale eines Client-Requests auf die eines Standard-Clients zurücksetzen (originalgetreue Reproduktion). - Falsche Daten mocken:
mock://200odermock://200|<body>, eine vorgegebene Response zurückgeben, ohne den Server zu erreichen, ein Rettungsanker, wenn das Frontend auf eine Backend-API wartet. - Request-Zeile / Header bearbeiten: Methode, User-Agent, Referer, Basic-Auth, X-Forwarded-For, Content-Type / Zeichensatz, Cookie, Query-Parameter zusammenführen, URL-Suchen-und-Ersetzen.
- Request-Body bearbeiten: vollständig ersetzen / suchen-und-ersetzen / anhängen / voranstellen / in eine lokale Datei ausschreiben.
Response-Richtung
- Status / Header bearbeiten: den Statuscode ändern, einen beliebigen Response-Header hinzufügen oder entfernen, Set-Cookie, CORS mit einem Klick öffnen, einen Download als Anhang erzwingen, Cache-Steuerung (Caching deaktivieren oder max-age setzen), Cookie/Komprimierung/Keep-Alive deaktivieren, Header-Werte suchen-und-ersetzen.
- Response-Body bearbeiten: vollständig ersetzen / suchen-und-ersetzen / anhängen / voranstellen / flaches JSON-Merge.
- Nach Typ injizieren: nur wenn der Content-Type passt, Skripte, Styles oder Snippets in HTML / JS / CSS injizieren oder ersetzen.
Netzwerk und Protokoll
- In Datei ausschreiben: neben dem Request- / Response-Body kann auch der gesamte rohe Request / die gesamte rohe Response mit einem Klick in eine lokale Datei ausgeschrieben werden, zur Archivierung oder Offline-Analyse.
- Simulation schlechter Netze: Request- / Response-Verzögerung (Millisekunden), Bandbreitendrosselung (mit 2G- / 3G- / 4G-Voreinstellungen).
- WebSocket-Frame-Umschreibung:
old=>new-Ersetzung nach Richtung (in beide Richtungen / Client zu Server / Server zu Client). - Rohes TCP / UDP umschreiben: Ersetzung nach Richtung auf Nicht-HTTP-Bytestreams / SOCKS5-UDP-Datagrammen.
Dynamische Werte in Regeln
Abschnitt betitelt „Dynamische Werte in Regeln“Regelwerte können dynamische Variablen wie ${url} ${host} ${port} ${method} ${status} ${now} ${random} ${randomUUID} ${req.headers.X} ${res.headers.X} verwenden, hinzu kommen benutzerdefinierte benannte Werte {name} (einen gemeinsamen Wert einmal definieren, überall referenzieren). Benannte Werte {name} werden hauptsächlich in Request- / Response-Umschreibungen verwendet; Ersetzungswerte bei der WebSocket-Frame-Umschreibung unterstützen ${...}.
2. Breakpoints (manuelles Bearbeiten)
Abschnitt betitelt „2. Breakpoints (manuelles Bearbeiten)“Für Flows, die eine präzise Steuerung im Einzelfall brauchen, verwende einen Breakpoint, um anzuhalten und einen Editor aufzuklappen, bevor der Request gesendet wird oder bevor die Response zurückkommt.
Zwei Auslöseweisen
Abschnitt betitelt „Zwei Auslöseweisen“- Regelgesteuert: mit einer
breakpoint://req|res|both-Regel präzise markieren, welche Flows abgefangen werden sollen. - Globaler Abfangschalter: das Abfangen für die gesamte Sitzung einschalten und den Umfang optional mit Abfang-Filterregeln eingrenzen (Filtern nach Domain / Methode / Phase); ohne Regeln wird alles abgefangen.
Was du nach dem Abfangen ändern kannst
Abschnitt betitelt „Was du nach dem Abfangen ändern kannst“- Request-Phase: Methode, URL (der Host folgt der URL), Header, Body.
- Response-Phase: Statuscode, Response-Header, Response-Body.
- Direkt verwerfen: Abort verwirft diesen Request / diese Response (der Client erhält einen Gateway-Fehler).
- Flows, die mehrere Treffer erzielen, reihen sich zur Bearbeitung auf: du kannst jeden fortsetzen (Resume), verwerfen (Abort) oder alle auf einmal fortsetzen. Flows, die lange unbearbeitet bleiben, werden automatisch unverändert fortgesetzt, sodass der Verkehr nie unbegrenzt festhängt.
3. Skripte und Plugins (fortgeschrittene Automatisierung)
Abschnitt betitelt „3. Skripte und Plugins (fortgeschrittene Automatisierung)“Logik, die Regeln nicht ausdrücken können, übergibst du an ein Skript oder Plugin:
- JavaScript-Skripte: definiere
onRequest(req)/onResponse(resp)und bearbeite Felder direkt, damit sie greifen. Zu den eingebauten Helfern gehören Logging, synchrone ausgehende Aufrufe an andere Dienste, das Zwischenspeichern von Daten über Requests hinweg (für Zähler / gecachte Tokens), Base64-Kodierung/-Dekodierung und mehr. - Ausgehende HTTP-Plugins: mit einer
plugin://name-Regel den Request / die Response an deinen eigenen Plugin-Dienst zur Verarbeitung übergeben (per HTTP aufgerufen), und das Plugin liefert den umgeschriebenen Inhalt zurück (oder mockt ihn direkt). Sprachunabhängig, geeignet für Teams, um eigene Verarbeitung in beliebiger Sprache umzusetzen.
4. Verarbeitungsreihenfolge
Abschnitt betitelt „4. Verarbeitungsreihenfolge“Ein Flow durchläuft der Reihe nach: Request-Regeln, Request-Skripte, Request-Plugins, Request-Breakpoint, Weiterleiten / Mocken, Response-Regeln, Response-Skripte, Response-Plugins, Response-Breakpoint. Das Muster ist einfach: erst automatische Regeln, dann Skripte, dann Plugins, und erst ganz zuletzt greift ein Breakpoint manuell ein, jeder erledigt seine eigene Aufgabe, ohne den anderen ins Gehege zu kommen.
Zurück zu Proxy-Mitschnitt · Verwandt: Zusammenstellen und Wiederholen