Chute Dashboard
Chute Dashboard ist eine kostenlose macOS-App, die sich mit einem laufenden Chute verbindet — Chute iOS über WLAN oder ein USB-Kabel, oder Chute Mac auf demselben Rechner — und zeigt, was diese Instanz tut: jede Verbindung mit der Regel und der Richtlinie, die sie entschieden haben, die entschlüsselte Anfrage und Antwort für Hosts unter HTTPS-Entschlüsselung, DNS-Antworten, UDP-Sitzungen. Sie können den Datenverkehr auch verändern, während Sie zusehen: die MitM-Hostliste und jede Umschreibungs- und Mock-Regelfamilie lassen sich live bearbeiten.
Dies ist nicht die Web-Konsole. Die Konsole wird vom Kernel selbst ausgeliefert und im Browser geöffnet; Dashboard ist eine eigene App, die mit dem Kernel über seinen binären Steuerkanal spricht — deshalb braucht es auf dem Gerät
external-controller-accessstattexternal-http-controller. Beide überschneiden sich, und jedes kann etwas, das das andere nicht kann — siehe Was Dashboard nicht erreicht.
Die Oberfläche von Dashboard ist in dieselben Sprachen lokalisiert wie dieses Handbuch, mit Ausnahme von Arabisch; auf einem arabischen System erscheint sie auf Englisch.
Dashboard die Verbindung erlauben
Nichts lauscht, bevor das Gerät es erlaubt.
Chute iOS — öffnen Sie im Konfigurationseditor Externer Controller → Externer Controller-Zugriff:
- Schalten Sie Chute Dashboard/Chute CLI-Verbindung erlauben ein.
- Legen Sie einen Port und ein Passwort fest. Das Passwort darf nicht leer sein, und es muss Ihr eigenes sein: Ein Listener, der aus dem Netzwerk erreichbar ist, verweigert den Start mit leerem oder Standard-Passwort.
- Lassen Sie Zugriff über WLAN erlauben aus, sofern Sie es nicht brauchen. Aus ist der Standard und bedeutet, dass der Listener auf dem Telefon selbst bleibt — ein USB-Kabel erreicht ihn weiterhin, andere Geräte im WLAN nicht. Ein bedeutet, dass jeder im Netzwerk, der das Passwort kennt, alles lesen kann, was dieser Lauf gesehen hat.
- Sichern Sie und starten Sie den Tunnel (oder starten Sie ihn neu). Das Kontrollzentrum zeigt jetzt Externer Zugriffsport:
<Port>— diese Zeile ist die Bestätigung, dass der Listener läuft.
Chute Mac — dieselben drei Werte stehen in [General]:
[General]
external-controller-access = password@127.0.0.1:6170
127.0.0.1 beschränkt ihn auf den Mac, an dem Sie sitzen — genau das, was ein Dashboard auf demselben Mac braucht; eine LAN-Adresse oder 0.0.0.0 öffnet ihn für andere Rechner. Der Abschnitt „General“ des Konfigurationsfensters hat Felder für denselben Schlüssel.
Verbinden
Dashboard öffnet mit dem Fenster Chute – Neues Dashboard; jede Verbindung bekommt ein eigenes Fenster, sodass mehrere Geräte gleichzeitig offen sein können. Zwei Wege hinein:
| Felder | Wann | |
|---|---|---|
| Entfernt | Host, Port, Passwort | Die WLAN-Adresse des Geräts (iPhone: Einstellungen → WLAN → ⓘ) oder 127.0.0.1 für Chute Mac auf diesem Rechner. Erfordert Zugriff über WLAN erlauben auf dem Telefon. |
| USB | Port, Passwort | iPhone per Kabel angeschlossen und diesem Mac vertrauend. Geben Sie denselben Port ein, den Sie konfiguriert haben — den Kabelkanal findet Dashboard selbst. Funktioniert mit ausgeschaltetem Zugriff über WLAN erlauben und zeigt auch Mobilfunkverkehr, da das Telefon gar nicht im WLAN sein muss. |
Rechner, mit denen Sie sich verbunden haben, werden unter Rechner: für das nächste Mal gemerkt.
Ist das Passwort falsch, meldet das Fenster Passwort stimmt nicht überein. Verschwindet das Gerät — der Tunnel wurde gestoppt, das Kabel gezogen, das Telefon hat das Netzwerk gewechselt —, meldet das Dashboard-Fenster Verbindung geschlossen und bietet Erneut verbinden an; eine automatische Wiederverbindung gibt es nicht.
Das Fenster
Die Symbolleiste wechselt zwischen fünf Ansichten — Aktiv, Kürzlich, DNS, UDP und MitM — und Filtern blendet die Filterleiste ein oder aus. Das Feld unten links zeigt die aktuelle Upload- und Download-Geschwindigkeit; ein Klick klappt den Graphen auf.
In den Ansichten Aktiv und Kürzlich trägt die Symbolleiste außerdem zwei Schalter, die auf den laufenden Kernel wirken, genau wie die Schalter in den Apps:
- Datenverkehr aufzeichnen → Aufzeichnung deaktivieren: schaltet die Aufzeichnung von Anfrage- und Antwort-Bodies ein (die Einstellung
replica). Ohne sie erscheinen die Zeilen weiterhin mit ihrer Routing-Information, aber die Daten-Reiter bleiben leer. - MitM aktivieren (N Regeln) → MitM deaktivieren (N Regeln): schaltet die HTTPS-Entschlüsselung für die N Hosts der MitM-Hostliste ein. Der Schalter bewirkt nichts Sinnvolles, solange das Gerät keine vertrauenswürdige CA und mindestens einen Host hat — siehe die Seite HTTPS-Entschlüsselung.
Keiner der Schalter ändert die Konfigurationsdatei; ein Neustart kehrt zu dem zurück, was die Datei sagt.
Die Seitenleiste gruppiert Verbindungen nach Client: Alle Clients, dann Lokal für Clients auf dem Gerät selbst und Entfernt für andere Rechner, die dieses Chute als Proxy verwenden. Eine Auswahl engt jede Liste darauf ein. Ist das Gerät ein Chute Mac, sind die lokalen Clients die Anwendungen, mit Namen und Symbol, und das Kontextmenü bietet Im Finder anzeigen.
Aktiv und Kürzlich
Aktiv ist, was gerade offen ist; Kürzlich ist der Verlauf des Geräts, neueste zuerst, aus den Aufzeichnungen des Laufs gelesen. Beide teilen sich einen Satz Spalten:
| Spalte | |
|---|---|
| ID | Die Verbindungsnummer des Kernels — dieselbe Nummer, die Konsole und Apps zeigen |
| Datum, Dauer | Wann sie begann und wie lange sie dauert oder gedauert hat |
| Client | Der Prozess (Chute Mac) oder die lokale Adresse |
| Methode, Server, Status | Anfragezeile und Antwort, aus der aufgezeichneten Anfrage gelesen |
| Richtlinie | Die von der Regel gewählte Richtlinie |
| Upload, Download | Bytes in jede Richtung |
| Flags | Was Chute mit der Verbindung getan hat — siehe die Legende unten |
Die Spalte Flags ist der schnellste Weg zu sehen, ob eine Regel, die Sie geschrieben haben, angewendet wird:
| Flag | Bedeutung |
|---|---|
M |
Entschlüsselt (MitM abgefangen) |
H |
Ein Header wurde geändert |
B |
Ein Body wurde geändert |
R |
Eine Umschreibungsregel hat ausgelöst |
K |
Von einem Map-Local-Mock beantwortet statt vom Server |
Kürzlich hält bis zu 5.000 Zeilen; Ältere laden am Ende der Liste holt die nächste Seite vom Gerät, und die Liste aktualisiert sich alle paar Sekunden von selbst. Ist die aktive Liste länger, als ein Steuerpaket tragen kann, weist eine Notiz unter der Tabelle darauf hin, dass der Kernel sie gekürzt hat — die Zeilen sind auf dem Gerät vorhanden, und Kürzlich zeigt sie, sobald sie geschlossen sind.
Ein Rechtsklick auf eine Zeile bietet curl-Befehl kopieren, Auswahl als HAR exportieren … / CSV exportieren … und Alle als HAR exportieren … / CSV exportieren …; eine aktive Zeile bietet zusätzlich Verbindung beenden, was sie auf dem Gerät schließt.
Hinweis: Eine Zeile ist eine Verbindung, keine Anfrage. Eine Keep-Alive-Verbindung, die mehrere Anfragen getragen hat, bleibt eine Zeile, und die aufgezeichneten Daten enthalten alle diese Nachrichten hintereinander; die gezeigten Header gehören zu einer der Anfragen. Ein Browser, der eine Seite öffnet, erzeugt deshalb weniger Zeilen, als die Seite Ressourcen hat.
Die Filterleiste
Die Filterleiste engt ein, was angezeigt wird. Sie ändert nicht, was das Gerät aufzeichnet — dafür dient [Replica] auf dem Gerät.
| Element | Auswahl |
|---|---|
| Host/URL filtern … | Text, der gegen Host und URL geprüft wird |
| Methode | GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT |
| Status | 1xx – 5xx |
| Datenverkehr | Aktiv, Abgeschlossen, Abgebrochen |
| Typ | JSON, HTML, XML, Bild, Text, Binär — nach dem Content-Type der Antwort |
| Dauer | < 100ms, 100ms–1s, 1s–5s, > 5s |
| Größe | < 1 KB, 1–100 KB, 100 KB–1 MB, > 1 MB |
| Nur MitM | Nur entschlüsselte Verbindungen |
| Geändert | Verbindungen, die eine Regel verändert hat — eines von H, B, R, K |
Filter zurücksetzen zeigt wieder alles.
Verbindungsdetails
Öffnen Sie eine Zeile für ihr Detailfenster. Die Reiter, von links nach rechts:
Allgemein — was die Liste zeigt, mit Platz ausgelegt: Anfragezeile und Statuscode; Ausgangsmodus, Richtlinie und die Regel, die gepasst hat; Datenvolumen und Spitzengeschwindigkeiten; lokale und entfernte Adresse; die Startzeit; der SSL/MitM-Zustand (Abgefangen, Header geändert, Body geändert, Gemockt); und Ausgelöste Regeln — jede Umschreibungs- oder Mock-Regel, die diese Verbindung verändert hat, im Wortlaut der Regel. Eine Regel, die hier nicht erscheint, hat diese Verbindung nicht berührt.
Timing — wie der Aufbau der Verbindung sich verteilt hat, so wie der Kernel es gemessen hat:
| Zeile | Gezählt von → bis |
|---|---|
| Proxy bereit | Die Verbindung des Clients trifft ein → Chute ist bereit, sie zu bearbeiten |
| DNS-Auflösung | → der Name ist aufgelöst (null, wenn die Regel keine Adresse brauchte) |
| Regelabgleich | → die Regeltabelle hat entschieden |
| Remote bereit | → der gewählte Ausgang ist verbunden und bereit |
| Aktiv | Alles danach, bis die Verbindung geschlossen wurde |
Eine langsame Anfrage ist meist in genau einer dieser Zeilen langsam, und welche es ist, sagt, wo zu suchen ist: DNS im Abschnitt DNS, Remote bereit in der Richtlinie oder dem Server dahinter, Aktiv in der Anwendung selbst.
Anfrage-Header / Antwort-Header — die Header als Tabelle, mit Query-Parameter und Cookies getrennt für die Anfrage und Cookies für die Antwort. Ein von einer Regel geänderter Header ist hervorgehoben. Auswahl kopieren kopiert die markierten Zeilen.
Anfrage-Daten / Antwort-Daten — der aufgezeichnete Body als Hex, Text, JSON (ein aufklappbarer Baum mit Suche) oder Bild (Einpassen / Originalgröße); Multipart-Bodies werden in ihre Teile zerlegt. Als bin exportieren sichert die rohen Bytes. Die Daten sind nur vorhanden, wenn die Aufzeichnung lief, als die Verbindung lief, und nur für Hosts, die die Filter in [Replica] durchlassen.
Hinweis: Bodies werden so gezeigt, wie sie aufgezeichnet wurden. Eine komprimierte Antwort —
Content-Encoding: gzip— wird hier nicht entpackt, ihre Text- und JSON-Ansicht sind also Rauschen; die Hex-Ansicht und Als bin exportieren liefern die Bytes, um sie anderswo zu entpacken. Das Gerät verweigert die Herausgabe eines Bodys über 2 MiB, und die Hex-Ansicht zeigt das erste 1 MiB.
DNS und UDP
DNS ist der Resolver-Cache des Geräts: jede Domain mit den Adressen, zu denen sie aufgelöst wurde, dem Server, der zuerst geantwortet hat (Chute fragt alle konfigurierten Server gleichzeitig — siehe DNS), der TTL und dem Eintragstyp. Rechtsklick für Domain kopieren, IPs kopieren und DNS-Server kopieren.
UDP listet UDP-Sitzungen — Host, Server, Richtlinie und Zustand. Für UDP gibt es keine Bodies.
MitM-Werkzeuge
Die Ansicht MitM verwaltet die fünf Regelfamilien auf dem Gerät in fünf Feldern: MitM-Regeln, Header-Umschreibung, Body-Umschreibung, Map Local und Map Remote. Was für alle gilt:
- Die Liste ist die Kopie der Regeln im laufenden Kernel, die mit dem beginnt, was die Konfigurationsdatei deklariert hat.
- Eine hinzugefügte Regel wird an das Gerät gesendet, das sie so parst, wie es eine Konfigurationszeile parsen würde; eine Zeile, die nicht parst, wird mit einem Fehler abgewiesen statt gespeichert.
- Änderungen leben nur im laufenden Kernel. Sie werden nicht in die Konfigurationsdatei geschrieben, und ein Neuladen oder Neustart stellt wieder her, was die Datei sagt. Finden Sie mit den Feldern die Regel, die funktioniert, und schreiben Sie sie dann in die Konfiguration.
- Ob eine Regel angewendet wird, zeigt die Spalte Flags der Liste (
R,K) und Ausgelöste Regeln im Detailfenster.
MitM-Regeln — ein Host-Muster je Regel, host[:port][/path], mit vorangestelltem - zum Ausschließen: *.google.com, api.example.com:8443, api.example.com/v2/*, -*.apple.com. Dieselbe Grammatik wie der Schlüssel hostname auf der Seite HTTPS-Entschlüsselung. Die Zahl am MitM-Schalter der Symbolleiste ist die Länge dieser Liste.
Header-Umschreibung — ein Formular: URL-Regex, Anfrage oder Antwort, Hinzufügen / Ersetzen / Löschen, Header-Name, Header-Wert. Dashboard setzt die Konfigurationszeile für Sie zusammen; die Grammatik steht auf der Seite Header-Umschreibung.
Body-Umschreibung — eine Konfigurationszeile, so eingegeben, wie Sie sie in die Datei schreiben würden: url-regex type pattern replacement, wobei der Typ response, request, jsonpath-response oder jsonpath-request ist. Siehe Body-Umschreibung.
Map Local — URL-Regex, ein Dateipfad (Durchsuchen …) und optionale Antwort-Header, je Zeile ein Name: Wert.
Hinweis: Der Dateipfad wird vom Gerät gelesen, auf dem Chute läuft, zum Zeitpunkt der Anfrage. Ein Pfad auf Ihrem Mac hat Bedeutung, wenn Dashboard mit Chute Mac auf demselben Rechner verbunden ist, und keine, wenn es mit einem iPhone verbunden ist — das Telefon hat kein
/Users/…. Für ein entferntes Gerät legen Sie den Inhalt mit der Formbase64=der Regel inline ab (siehe Mock-Antwort), über den Editor des Geräts oder die Web-Konsole, oder Sie stellen die Datei unter einer URL bereit und verwenden Map Remote.
Map Remote — URL-Regex, Ziel und Typ: header schreibt die Anfrage an Ort und Stelle um (Surges Map Remote), 302 und 307 leiten den Client um, und reject, reject-200, reject-img, reject-dict antworten, ohne den Server zu kontaktieren. Siehe URL-Umschreibung.
Exportieren
- HAR — Rechtsklick auf die Liste: die markierten Zeilen oder alle, als HAR-1.2-Datei, die Sie in den Entwicklerwerkzeugen eines Browsers (Netzwerk → Importieren), in Charles oder Proxyman öffnen können. Ein Eintrag je Zeile; Bodies sind enthalten, wenn die Aufzeichnung lief.
- CSV — die Spalten der Liste, für eine Tabellenkalkulation.
- curl-Befehl kopieren — ein
curl-Aufruf, der die Anfrage mit ihren Headern von Ihrem Mac aus wiederholt. - Als bin exportieren — ein Body, wie aufgezeichnet.
Dashboard baut sein HAR aus dem, was es abgerufen hat. Der Kernel kann selbst eines bauen — mit passender Regel, Richtlinie und den ausgelösten Umschreibungen in einem _kl-Objekt je Eintrag und Sende-/Empfangszeiten aus der Aufzeichnung — über Export HAR (HAR exportieren) in der Konsole oder GET /api/connections/export?format=har.
Was Dashboard nicht erreicht
Dashboard spricht den binären Steuerkanal des Kernels, und manches, was der Kernel kann, gibt es nur auf der HTTP-Steuer-API. Verwenden Sie dafür die Web-Konsole oder die API:
- das Diagnosepaket, Zustand, Ablehnungszähler und Ereignisse;
- die Trefferzahlen je Regel auf der Seite „Rules“ der Konsole und die Antwort, die sie geben: hat diese Regel je ausgelöst;
- das HAR des Kernels, oben;
- das Protokoll.
Zwei weitere Dinge, die Sie wissen sollten, bevor Sie sich darauf verlassen:
- Chute Android bietet den binären Kanal nicht an, Dashboard kann sich also nicht damit verbinden. Androids eigenes entferntes Dashboard und die Web-Konsole decken dasselbe ab.
- Auf iPhone und Apple TV sind HTTPS-Entschlüsselung und Body-Aufzeichnung lizenzpflichtige Funktionen. Ohne Lizenz verbindet sich Dashboard trotzdem und zeigt jede Verbindung mit Regel und Richtlinie, aber HTTPS-Zeilen bleiben undurchsichtige
CONNECT-Tunnel, die Daten-Reiter bleiben leer, und der MitM-Schalter hat keine Wirkung. Siehe Lizenz und Aktivierung.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.