Debugging auf dem Mac
Auf einem Mac liegen Chute und der Verkehr, den Sie ansehen wollen, auf derselben Maschine — das meiste, wofür die iPhone-Anleitung Schritte aufwendet (ein Kabel, ein Listener, ein Passwort), entfällt also. An seine Stelle tritt eine andere Frage: Erreicht der Verkehr Chute überhaupt? Denn unter macOS kann eine Anwendung den Proxy schlicht ignorieren.
1. Den Verkehr durch Chute leiten
Zwei Mechanismen, voneinander unabhängig — das Menü zeigt beide:
- System Proxy — der Schalter ganz oben im Menü. Registriert Chute als System-HTTP/SOCKS-Proxy. Anwendungen, die die Systemeinstellungen lesen (Browser, die meisten GUI-Apps), laufen über Chute; die anderen bleiben unberührt.
- Enhanced Mode (⌘E) — erfasst den Verkehr auf Netzwerkebene, sodass die Meinung einer Anwendung über Proxys keine Rolle mehr spielt. Genau das brauchen Sie, wenn eine App gar keine Proxy-Unterstützung hat. Zum Genehmigungsablauf und zu den beiden Implementierungsarten siehe Erweiterter Modus.
Terminal-Werkzeuge sind die übliche Überraschung: curl, git, npm und Konsorten lesen HTTP_PROXY/HTTPS_PROXY aus der Umgebung, nicht die Systemeinstellungen. Copy Shell Export Command (⌘C) im Menü legt die passende Zeile in die Zwischenablage —
export HTTPS_PROXY=http://127.0.0.1:8118;export HTTP_PROXY=http://127.0.0.1:8118;export NO_PROXY=127.0.0.1,localhost,.example.com
— mit Ihrem tatsächlichen HTTP-Listener-Port und einem NO_PROXY, das aus Ihrer skip-proxy-Liste gebaut wird, sodass Kommandozeilenwerkzeuge genau das umgehen, was auch der Systemproxy umgeht. Fügen Sie sie in die Shell ein, aus der Sie testen; sie gilt nur für diese Shell.
Sie sollten sehen: Der Reiter Traffic im Hauptfenster füllt sich mit Zeilen, während Sie die App benutzen. Keine Zeilen heißt, der Verkehr hat Chute nie erreicht — kehren Sie zu diesem Schritt zurück, statt ein Entschlüsselungsproblem zu suchen.
2. Den Traffic-Reiter lesen
Traffic listet laufende Verbindungen mit einem Suchfeld und einem Zähler (N active). Show columns ▾ wechselt das Layout:
- Double-row (Voreinstellung) — zwei Zeilen pro Verbindung, bequem zum Durchsehen.
- Wide table — eine Zeile pro Verbindung über alle Spalten: Host, Process, Regel, Richtlinie, Proto, Hochladen, Herunterladen, Totals, Status. Klick auf eine Überschrift sortiert.
- Group by app — Verbindungen nach der Anwendung gebündelt, die sie geöffnet hat, mit Name und Symbol. Der schnellste Weg zur Antwort auf „mit wem redet dieser Prozess".
Ein Rechtsklick auf eine Zeile bietet Show Details, Copy Host, Copy Details, Filter Logs (springt zum Reiter Protokoll, bereits auf diese Verbindung gefiltert) und Close Connection.
Show Details öffnet ein Fenster mit Host, Process, Protokoll, Gegenstelle, Regel, Richtlinie, Rewrites, Hochladen, Herunterladen und Status der Verbindung — alles darüber, wie sie geroutet wurde.
Der Traffic-Reiter zeigt keine Anfrage- und Antwort-Bodies. Dafür ist die Schaltfläche Anfragen & Verlauf im Detailfenster da: Sie öffnet die Web-Konsole, die es tut. Geöffnet wird die Startseite der Konsole, nicht diese Verbindung.
3. Eine Regel prüfen, ohne eine Anfrage zu stellen
Der Reiter Regeln hat eine Schaltfläche Test Rule.... Geben Sie eine URL oder nur eine Domain ein, drücken Sie Test, und Chute antwortet mit dem erkannten Host samt Port, dem DNS-Ergebnis, der passenden Regel, der Richtlinie, die diese Regel gewählt hat, und Hinweisen.
Nehmen Sie es, wenn die Frage lautet „warum ging das direkt raus" oder „welche meiner beiden Regeln gewinnt" — es befragt den laufenden Regelsatz und sagt Ihnen damit nebenbei auch, ob die Konfiguration, die Sie bearbeitet haben, tatsächlich die geladene ist. Wirkt die Antwort veraltet, laden Sie die Konfiguration neu (⌘R). Dieselbe Frage über die API ist POST /api/rules/match.
4. Aufzeichnung und Entschlüsselung einschalten
Beide stehen im Menü, und beide wirken auf den laufenden Kernel:
- Traffic Capture (⌘B) — behält Anfrage- und Antwort-Bodies, also die Einstellung
replica. Standardmäßig aus; bis dahin hat nichts einen Body. - Enable MitM (⌘M) — schaltet die Entschlüsselung für die Hosts der
hostname-Liste in[MITM]ein.
Keiner wird in die Konfigurationsdatei zurückgeschrieben: Nach Reload Configuration oder einem Neustart gewinnen replica und [MITM] enable aus der Datei.
Die CA ist unter macOS ein einziger Schritt. Öffnen Sie im Konfigurationsfenster MitM:
- Generate New Certificate (oder Import Certificate from PKCS#12 File).
- Install the Certificate to System — macOS fragt nach einem Administratorpasswort und fügt es dem System-Schlüsselbund als vertrauenswürdiges Root-Zertifikat hinzu. Einen getrennten „Vertrauen"-Schritt wie unter iOS gibt es nicht.
- Export the Certificate schreibt eine
.pem-Kopie — so bringen Sie dieselbe CA auf ein Telefon, ein Apple TV oder in einen Container.
5. Auf einen Prozess eingrenzen
macOS ist die Plattform, auf der Chute weiß, welche Anwendung eine Verbindung geöffnet hat, und Regeln können das nutzen:
[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy
Zu PROCESS-NAME, PROCESS-PATH und PROCESS-NAME-REGEX siehe Prozessregel. Zusammen mit Group by app im Traffic-Reiter können Sie so eine einzelne Anwendung über einen Proxy — oder über einen Mock — führen, während der Rest der Maschine normal weiterläuft.
6. Was nur auf einem Mac geht
data=-Dateipfade in Map Local. Die Datei liest das Gerät, auf dem Chute läuft, zum Zeitpunkt der Anfrage. Auf einem Mac ist das die Maschine, an der Sie sitzen: Ein echter Pfad funktioniert, und eine Änderung an der Datei ändert die nächste Antwort ohne Neuladen. Auf einem Telefon bedeutet derselbe Pfad nichts — deshalb benutzt die iPhone-Anleitungbase64=.- Die Dateien auf der Platte. Protokoll-Shards, die Laufmarke und Aufzeichnungen liegen unter
~/Chute/Share/<run id>/; siehe Dateispeicherorte (macOS). Sie können sie direkt an einen Fehlerbericht hängen, statt über ein Teilen-Menü zu gehen. - Andere Geräte bedienen. Mit eingeschaltetem
allow-wifi-accesskönnen andere Maschinen im Netz ihre Proxy-Einstellungen auf diesen Mac richten. Ihr Verkehr erscheint dann in denselben Ansichten, in Dashboards Client-Seitenleiste unter Remote — so untersuchen Sie ein Gerät, auf dem Chute gar nicht läuft, ein Windows-Notebook oder einen Smart-TV inklusive.
7. Wenn der Traffic-Reiter nicht reicht
- Web-Konsole — Menüleiste → Web-Konsole öffnen. Bodies, HAR-Export, die Regelseite, die sagt, welche Rewrites gegriffen haben, und die Diagnose-Sonden. Braucht
external-http-controllerin[General]. - Chute Dashboard — eine eigene, kostenlose App. Für den lokalen Kernel schreiben Sie
external-controller-access = <Passwort>@127.0.0.1:6170in[General]und verbinden dann Dashboards Reiter Remote mit127.0.0.1, mit diesem Port und Passwort. Lohnt sich wegen der MitM-Werkzeugpanels und der HAR-/curl-Exporte per Rechtsklick. - Der Protokoll-Reiter — heben Sie zuerst die Stufe mit
loglevel = verbosean und nehmen Sie sie danach zurück. Filter Logs auf einer Verbindungszeile grenzt den Reiter auf genau diese Verbindung ein.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.