Mock-Antwort
Chute kann Mock-Daten für übereinstimmende HTTP/HTTPS-Anfragen zurückgeben. Für entschlüsselte HTTP/2-Streams wird die Mock-Antwort lokal beantwortet, ohne die Anfrage weiterzuleiten; bei HTTP/1.1-Anfragen (einfaches Proxying und MitM HTTP/1.1) wird die Anfrage weiterhin an den echten Server gesendet, und die echte Antwort wird durch die Mock-Daten ersetzt, bevor sie den Client erreicht. Dies ist nützlich für Tests, Entwicklung oder das Blockieren unerwünschter Inhalte mit einer benutzerdefinierten Antwort.
Mock-Regeln werden im Abschnitt [Map Local] definiert.
Pro Anfrage wird nur eine Mock-Regel angewendet — die erste Regel, deren URL-Muster übereinstimmt.
Map-Local-Format
Zum Bereitstellen von Mock-Antworten aus lokalen Dateien, eingebettetem Text oder base64-kodierten Inhalten, mit wählbarem Statuscode und Headern:
[Map Local]
^https://example\.com/api.* data="/path/to/mock-response.json"
^https://example\.com/page.* data="/path/to/page.html" header="SGVhZGVyOiBWYWx1ZQ=="
^https://example\.com/pixel.* base64="R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
^https://example\.com/api/v2.* data-type=text data="rate limited" status-code=429 header="Content-Type: text/plain|Retry-After: 30"
^https://example\.com/beacon.* data-type=tiny-gif
Hinweis: Der reguläre Ausdruck wird an beliebiger Stelle der vollständigen Anfrage-URL abgeglichen —
https://…nach der Entschlüsselung,http://…, wenn Chute als schlichter HTTP-Proxy arbeitet —, daher deckt^https://example\.combereits jeden Pfad und Query-String dieses Hosts ab, ein abschließendes.*ist unnötig. Er wird nie gegen den Pfad allein abgeglichen, daher passt ein Muster wie^/apinicht. Das Muster behält seine Groß-/Kleinschreibung, sodass\S,\D,\Wund\Bbedeuten, was dasteht; der Abgleich selbst ignoriert die Groß-/Kleinschreibung.
Ein # oder // am Zeilenanfang oder nach einem Leerzeichen leitet einen Kommentar ein, der bis zum Zeilenende reicht, sofern es nicht in doppelten Anführungszeichen steht; ; tut das nie. Siehe Kommentar.
Map-Local-Parameter
| Parameter | Beschreibung | |||
|---|---|---|---|---|
data="/path/to/file" |
Dateipfad, der als Antwort-Body bereitgestellt und zum Anfragezeitpunkt gelesen wird oder, mit data-type, der Body selbst (siehe unten). |
|||
| `data-type=file\ | text\ | base64\ | tiny-gif` | Wie data= gelesen wird: file, ein Pfad (Standard); text, der Wert ist der Body; base64, der Wert wird base64-dekodiert; tiny-gif, ein eingebautes 1×1-GIF ohne data= (gesendet als image/gif, sofern header= keinen Content-Type setzt). |
base64="<encoded>" |
Base64-kodierter Antwort-Body-Inhalt (entspricht data-type=base64). |
|||
status-code=<code> |
Statuscode der Mock-Antwort, 200–599. Standard 200. Ein Code außerhalb dieses Bereichs macht die ganze Zeile ungültig und wird als Konfigurationsfehler gemeldet. |
|||
| `header="Key: value\ | Key2: value2"` | Benutzerdefinierte Antwort-Header. Paare werden mit `\ | getrennt, und jedes Paar wird am ersten Doppelpunkt geteilt, sodass ein Wert selbst Doppelpunkte enthalten darf (URLs). Die ältere base64-Form (base64-kodierteKey:Value\n`-Zeilen) wird weiterhin akzeptiert. |
Eine Regel braucht einen Body:
data=(eine Datei, oder Text bzw. base64 mitdata-type),base64=oderdata-type=tiny-gif;data-type=textohnedata=ergibt einen leeren Body. Eine Regel, die ihren Body nicht erzeugen kann — kein Body-Parameter oder eine nicht lesbare Datei —, antwortet nicht: Die Anfrage geht an den Server, und spätere Mock-Regeln werden nicht versucht.Hinweis: In beiden Formen wird jeder Header am ersten Doppelpunkt geteilt, und Name und Wert werden von umgebenden Leerzeichen befreit; eine Zeile ohne Doppelpunkt wird ignoriert.
Antworten, die Chute selbst erzeugt — Map Local, die
responseeines Skripts sowie die Antworten und die Fehlerseite der URL-Umschreibung und der REJECT-Richtlinien — folgen HTTP: Die Antwort auf eine HEAD-Anfrage besteht nur aus dem Header, mit der Content-Length, die eine GET-Anfrage bekäme, und eine Antwort mit Status 204, 205 oder 304 trägt weder einen Body noch eine Content-Length.
Vorlagenvariablen
Bei Verwendung von data= oder base64= unterstützt der Antwort-Body die Ersetzung von Vorlagenvariablen:
| Variable | Ersetzt durch |
|---|---|
{{url}} |
Die vollständige Anfrage-URL, wie die Regel sie gesehen hat |
{{host}} |
Hostname der Anfrage |
{{path}} |
Relativer URL-Pfad |
{{method}} |
HTTP-Methode |
{{ua}} |
Wert des User-Agent-Headers |
Beispiel einer Mock-Antwortdatei (response.json):
{
"requested_url": "{{ "{{url}}" }}",
"host": "{{ "{{host}}" }}",
"method": "{{ "{{method}}" }}"
}
Hinweis: Für HTTPS-Anfragen muss die MitM-Entschlüsselung für den übereinstimmenden Hostnamen aktiviert sein. Mock-Regeln für HTTPS-Verkehr ohne MitM werden ignoriert. Eine unverschlüsselte HTTP-Anfrage wird nur beantwortet, wenn sie Chute über seinen HTTP-Proxy erreicht; unverschlüsseltes HTTP, das über die TUN-Schnittstelle ankommt, wird unverändert weitergeleitet. Chute Android leitet sämtlichen Verkehr über TUN, sofern nicht System-HTTP-Proxy in den Einstellungen eingeschaltet ist, womit Apps den HTTP-Proxy von Chute erhalten (Android 10 und neuer; standardmäßig aus).
Hinweis: Die Datei hinter
data=wird vom Gerät gelesen, auf dem Chute läuft, zum Zeitpunkt der Anfrage. Wenn Sie eine Mock-Regel aus Chute Dashboard auf einem iPhone anlegen, ist ein Pfad auf Ihrem Mac für das Telefon bedeutungslos — legen Sie den Inhalt stattdessen mitbase64=inline ab, oder stellen Sie die Datei unter einer URL bereit und verwenden Sie URL-Umschreibung.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.