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:
- Systemproxy — der Schalter ganz oben im Menü. Registriert Chute als System-HTTP/SOCKS-Proxy. Anwendungen, die die Systemproxy-Einstellungen lesen (Browser, die meisten GUI-Apps), laufen über Chute; die anderen bleiben unberührt.
- Erweiterter Modus (⌘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. Shell-Exportbefehl kopieren (⌘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 Tab Datenverkehr im Hauptfenster füllt sich mit Zeilen, während Sie die App benutzen. (Das Hauptfenster ist Dashboard öffnen... (⌘,) im Menü; auf einem Mac, der schon vor der aktuellen Oberfläche Konfigurationen hatte, schalten Sie dort zuerst Neue Hauptoberfläche verwenden ein.) 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 Tab Datenverkehr lesen
Datenverkehr listet laufende Verbindungen mit einem Suchfeld und einem Zähler (N aktiv). Spalten anzeigen ▾ wechselt das Layout:
- Zweizeilig (Voreinstellung) — zwei Zeilen pro Verbindung, bequem zum Durchsehen.
- Breite Tabelle — eine Zeile pro Verbindung über alle Spalten: Host, Prozess, Regel, Richtlinie, Prot., Hochladen, Herunterladen, Gesamt, Status. Klick auf eine Überschrift sortiert.
- Nach App gruppieren — 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 Details anzeigen, Host kopieren, Details kopieren, Protokolle filtern (springt zum Tab Protokoll, bereits auf diese Verbindung gefiltert) und Verbindung schließen.
Details anzeigen öffnet ein Fenster mit Host, Prozess, Protokoll, Entfernt, Regel, Richtlinie, Umschreibungen, Hochladen, Herunterladen und Status der Verbindung — alles darüber, wie sie geroutet wurde.
Der Tab Datenverkehr 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 Tab Regeln hat eine Schaltfläche Regel testen.... Geben Sie eine URL oder nur eine Domain ein, drücken Sie Testen, 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 die laufende Engine:
- Datenverkehrsaufzeichnung (⌘B) — behält Anfrage- und Antwort-Bodies, also die Einstellung
replica. Standardmäßig aus; bis dahin hat nichts einen Body. - MitM aktivieren (⌘M) — schaltet die Entschlüsselung für die Hosts der
hostname-Liste in[MITM]ein.
Beide werden in die Konfigurationsdatei zurückgeschrieben — replica und enable unter [MITM] —, überstehen also Neuladen und Neustart. Eine entfernte Konfiguration hat keine lokale Datei, in die geschrieben werden könnte: Der Schalter ändert trotzdem die laufende Engine, und die App meldet Konfiguration konnte nicht gespeichert werden. Konsole, Dashboard und API schalten dieselben beiden Einstellungen, ohne die Datei zu schreiben; nach einem solchen Umschalten behält Konfiguration neu laden (⌘R) Ihre Einstellung bei, solange sich die Datei darunter nicht geändert hat — replica wird erneut angewendet, wenn sich sein eigener Wert in der Datei geändert hat, [MITM] enable, wenn sich irgendein Schlüssel des Abschnitts [MITM] geändert hat oder die Hostliste über Konsole oder API bearbeitet wurde —, und ein Neustart beginnt immer bei der Datei.
Die CA ist unter macOS ein einziger Schritt. Öffnen Sie im Konfigurationsfenster MitM:
- Neues Zertifikat erzeugen (oder Zertifikat aus PKCS#12-Datei importieren).
- Zertifikat im System installieren — 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.
- Zertifikat exportieren schreibt eine
.pem-Kopie — so bringen Sie dieselbe CA auf ein Telefon, ein Apple TV oder in einen Container.
5. Auf einen Prozess eingrenzen
Unter den Apple-Plattformen ist macOS diejenige, auf der Chute weiß, welche Anwendung eine Verbindung geöffnet hat, und Regeln können das nutzen (Chute Android weiß es ebenfalls, über den Paketnamen):
[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy
Zu PROCESS-NAME, PROCESS-PATH und PROCESS-NAME-REGEX siehe Prozessregel. Zusammen mit Nach App gruppieren im Tab Datenverkehr 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 Mock-Regeln. 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 und die Verbindungsdatenbank liegen unter
~/Chute/Share/<run id>/, die Laufmarkierung daneben in~/Chute/Share/; siehe Dateispeicherorte (macOS). Sie können sie direkt an einen Fehlerbericht hängen, statt über ein Teilen-Menü zu gehen. Aufgezeichnete Bodies liegen ebenfalls dort, unterDUMP/, aber nur, solange die Engine läuft: Beim Stoppen werden sie gelöscht, exportieren Sie also vorher, was Sie brauchen — HAR exportieren in der Konsole oder Als bin exportieren in Dashboard. - 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 Entfernt — so untersuchen Sie ein Gerät, auf dem Chute gar nicht läuft, ein Windows-Notebook oder einen Smart-TV inklusive.
7. Wenn der Tab Datenverkehr nicht reicht
- Web-Konsole — Menüleiste → Web-Konsole öffnen. Bodies, HAR-Export, die Regelseite, die sagt, welche Umschreibungen gegriffen haben, und die Diagnoseprüfungen. Braucht
external-http-controllerin[General]. - Chute Dashboard — eine eigene, kostenlose App. Auf diesem Mac braucht sie überhaupt keine Konfiguration: Chute Dashboard öffnen... (⌘D) im Menü öffnet sie bereits mit diesem Mac verbunden, und in ihrem Fenster Neues Dashboard leistet Mit lokalem Rechner verbinden dasselbe. Dieser Weg erreicht die Engine über einen lokalen Socket, den der Tunnel ohnehin immer öffnet — es gibt also weder einen Port noch ein Passwort einzustellen. Erst wenn Dashboard auf einem anderen Mac läuft, brauchen Sie den entfernten Weg:
external-controller-access = <Passwort>@0.0.0.0:6170in[General], dann Mit entferntem Rechner verbinden mit der Adresse dieses Macs, diesem Port und diesem Passwort. Lohnt sich in beiden Fällen wegen der MitM-Werkzeugpanels und der HAR-/curl-Exporte per Rechtsklick. - Der Protokoll-Tab — heben Sie zuerst die Stufe mit
loglevel = verbosean und nehmen Sie sie danach zurück. Protokolle filtern auf einer Verbindungszeile grenzt den Tab auf genau diese Verbindung ein.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.