Netzwerk-Debugging
Chute ist ein Proxy, aber der Grund, einen auf den eigenen Geräten zu betreiben, ist selten das Routing. Er ist, dass jede Anfrage nun durch eine Stelle läuft, die Sie kontrollieren — Sie können also beobachten, was eine App tatsächlich sendet, die Bodies aufbewahren und später lesen, eine Anfrage oder Antwort unterwegs ändern und ein gesundes Backend kaputt aussehen lassen, um zu sehen, was Ihre App daraufhin tut.
Die Referenzseiten der einzelnen Mechanismen stehen anderswo in diesem Handbuch: HTTPS-Entschlüsselung, Mock-Antwort, URL-Umschreibung, JavaScript-Scripting. Dieser Abschnitt bringt sie in die Reihenfolge, in der man sie tatsächlich benutzt, und sagt, was sich von Plattform zu Plattform ändert.
Vier Fenster auf dieselbe Engine
Ein laufendes Chute, vier Blickwinkel. Das falsche Fenster zu wählen ist der übliche Grund dafür, dass etwas „nicht da“ ist.
| Läuft auf | Anfrage- und Antwort-Bodies | Ändert die laufende Engine | Braucht | |
|---|---|---|---|---|
| Die App selbst | Dem Gerät | iOS und Android ja; macOS und tvOS nein | Nur die Schalter — Chute Mac speichert sie auch in der Konfigurationsdatei | Nichts |
| Web-Konsole | Einem Browser, beliebiges Gerät | Ja | MitM-Hosts, alle Umschreibungsfamilien, Richtlinien, Konfiguration | external-http-controller |
| Chute Dashboard | Einem Mac | Ja | MitM-Hosts, alle Umschreibungsfamilien, die beiden Schalter | Nichts für Chute Mac auf eben diesem Mac; external-controller-access für jedes andere Gerät |
| HTTP-Control-API | Allem, was HTTP spricht | Ja, base64 | Alles, was die Konsole kann | external-http-controller |
Konsole und Dashboard überschneiden sich stark, werden aber verschieden erreicht — die Konsole liefert die Engine selbst aus und man öffnet sie im Browser, Dashboard ist eine Mac-Anwendung, die einen binären Kanal spricht. Keines ist eine Obermenge des anderen; Was Dashboard nicht erreicht listet die Unterschiede.
Zuerst vier Schalter richtig setzen
Fast jedes „ich sehe die Verbindung, aber nicht die Anfrage“ endet bei einem dieser vier, in dieser Reihenfolge:
- Der Verkehr erreicht Chute überhaupt. Eine Zeile in der Verkehrsansicht ist der Beweis. Gar nichts ist ein Übernahmeproblem, kein Debugging-Problem — siehe Fehlerbehebung.
- Die CA ist installiert und vertrauenswürdig. Zwei getrennte Schritte auf iOS, einer auf macOS, und keiner davon in der App auf tvOS — siehe CA-Zertifikat installieren und als vertrauenswürdig einstufen.
- Der Host steht auf der MitM-Liste. Chute entschlüsselt deklarierte Hosts und sonst nichts. In Dashboard wurde eine Zeile ohne das Flag
Mnie entschlüsselt. - Die Aufzeichnung läuft.
replica = trueoder der Schalter (Datenverkehrsaufzeichnung in der App). Auf iPhone, Apple TV und Android verlangt die Engine zusätzlich eine Lizenz, der Schlüssel allein zeichnet dort also nichts auf. Ohne Aufzeichnung trägt jede Zeile weiterhin ihre Regel, ihre Richtlinie und ihre Zeiten — es fehlen nur die Nutzdaten.[Replica]schränkt danach ein, was davon behalten wird, und das Behaltene reicht nur so lange wie der Lauf: Chute löscht die aufgezeichneten Bodies, wenn es stoppt.
Die Schalter 3 und 4 lassen sich auch zur Laufzeit aus der Konsole, aus Dashboard und über die API umlegen, und keines davon schreibt in die Konfigurationsdatei zurück: Nach einem Neustart gewinnt die Datei.
Was jede Plattform hergibt
| Chute iOS | Chute Mac | Chute tvOS | Chute Android | |
|---|---|---|---|---|
| In der App ansehen | Dashboard-Bildschirm — Übersicht, Anfrage, Antwort, mit Bodies | Tab Datenverkehr — Routing, keine Bodies | DIAGNOSE → Dashboard — Routing, keine Bodies | Dashboard — Tunnel, mit Bodies |
| MitM in der App umschalten | Schalter im Bedienfeld (lizenzpflichtig) | Menüleiste → MitM aktivieren (⌘M) | Auf dieser Plattform kein Schalter | Bedienfeld → MitM (lizenzpflichtig) |
| Aufzeichnung in der App umschalten | Bedienfeld → Datenverkehrsaufzeichnung (lizenzpflichtig) | Menüleiste → Datenverkehrsaufzeichnung (⌘B) | Bedienfeld → Datenverkehrsaufzeichnung (lizenzpflichtig) | Bedienfeld → Datenverkehrsaufzeichnung (lizenzpflichtig) |
| CA installieren | In der App, dann in den Einstellungen vertrauen | In der App, ein Schritt | Nur MDM oder Apple Configurator | P12 importieren in der App, dann öffnet CA installieren das Installationsprogramm von Android |
| Chute Dashboard erreicht es | USB-Kabel oder WLAN | Mit lokalem Rechner verbinden, auf eben diesem Mac | WLAN | USB-Kabel (adb) oder das Netzwerk |
| Datei vom Gerät holen | Teilen-Menü | Das Dateisystem | Nur die Konsole, per QR-Code | Teilen-Menü |
Wie es weitergeht
- Ein iPhone vom Mac aus debuggen — der ganze Weg, vom frischen Telefon bis zum entschlüsselten Body auf dem Mac-Bildschirm.
- Debugging auf dem Mac — der eigene Verkehr des Macs, samt Terminal-Werkzeugen und Trennung nach Prozess.
- Ein Apple TV debuggen — ein Gerät ohne Browser, ohne Teilen-Menü und ohne Möglichkeit, selbst ein Zertifikat zu installieren.
- Replikat — welche Verbindungen ihre Bodies behalten und wie man aufhört, alles aufzuzeichnen.
- Mocks und Fehlerinjektion — vorgefertigte Antworten, Fehlerstatus, künstlich eingefügte Latenz und was Chute wirklich nicht simulieren kann.
Lautet die Frage „es funktioniert nicht“ statt „was tut es“, beginnen Sie stattdessen bei der Fehlerbehebung — insbesondere bei Warum bewirkt meine Umschreibung nichts?, der Frage, die dieser Abschnitt am häufigsten hervorbringt.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.