Charles Proxy ist ein plattformübergreifender Proxy-Server zum Debuggen von HTTP/HTTPS-Verkehr, der von Entwicklern verwendet wird, um Netzwerkanfragen abzufangen, anzuzeigen und zu ändern. Laut Karl von Randow, dem Ersteller des Tools (2025), wird Charles seit 2004 in mehr als 50.000 Unternehmen weltweit eingesetzt. Der Proxy unterstützt das Abfangen von Datenverkehr von mobilen Geräten über WiFi, HTTPS-Proxying mit Installation eines Stammzertifikats und eine breite Palette von Werkzeugen für die API-Analyse.
Wesentliche Punkte
Charles Proxy ist ein HTTP-Proxy und HTTP-Monitor, der als Vermittler zwischen Client und Server fungiert. Alle Anfragen und Antworten passieren Charles, sodass Sie deren Inhalt anzeigen, die Struktur analysieren, Daten in Echtzeit ändern und verschiedene Netzwerkbedingungen simulieren können. Es ist für Windows, macOS und Linux verfügbar.
Charles Proxy wurde 2004 von Karl von Randow entwickelt und ist eines der beliebtesten Werkzeuge zum Debuggen von Netzwerkverkehr. Im Gegensatz zu kostenlosen Alternativen bietet Charles eine kostenpflichtige Lizenz mit 30-tägiger Testphase. Das Tool positioniert sich als professionelle Lösung für Mobile-App-Entwickler, Webentwickler und QA-Ingenieure, die die volle Kontrolle über HTTP-Kommunikation benötigen.
Charles arbeitet als System-Proxy auf dem Computer und kann Datenverkehr von allen Geräten im selben Netzwerk abfangen: Android, iOS, Simulatoren, Emulatoren, Webbrowser und IoT-Geräte. Zum Abfangen von HTTPS muss das Charles-Stammzertifikat auf jedem Gerät installiert werden. Der Datenverkehr wird über HTTP/1.1 und HTTP/2 (teilweise) unterstützt. HTTP/3 (QUIC) wird auf Abfangebene nicht unterstützt.
Charles arbeitet nach dem Prinzip eines MITM (Man-in-the-Middle)-Proxys: Wenn ein Client eine Anfrage über Charles sendet, fängt das Tool die Anfrage ab, leitet sie an den Zielserver weiter, empfängt die Antwort und gibt sie an den Client zurück. Der gesamte Datenverkehr passiert Charles, sodass er analysiert und modifiziert werden kann.
Beim Start erstellt Charles einen lokalen HTTP-Proxy auf Port 8888 (Standard). Das Betriebssystem oder die Anwendung wird so konfiguriert, dass dieser Proxy verwendet wird. Alle HTTP-Anfragen werden zuerst an Charles gesendet, der dann als vollwertiger Client für den Zielserver fungiert. Für HTTPS verwendet Charles eine eigene SSL-Proxying-Technik: Es generiert für jede Domain spontan ein Zertifikat, das vom Charles-Stammzertifikat signiert wird. Wenn das Stammzertifikat auf dem Gerät als vertrauenswürdig installiert ist, kann Charles HTTPS-Datenverkehr entschlüsseln und anzeigen.
Charles unterstützt zwei Modi: Proxy(klassischer Proxy-Server) und SOCKS Proxy(für UDP- und TCP-Datenverkehr). Für die Webentwicklung wird der standardmäßige HTTP-Proxy verwendet. Für mobile Geräte — WiFi-Proxy auf dem Gerät konfigurieren und die IP-Adresse des Computers angeben, auf dem Charles läuft. macOS unterstützt die automatische Proxy-Konfiguration für den iOS-Simulator.
<!-- Konfiguration von network_security_config.xml für Android mit Charles-Unterstützung -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Charles-Zertifikat im Debug-Build vertrauen -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Charles Proxy bietet eine Reihe professioneller Werkzeuge zum Analysieren und Modifizieren von Datenverkehr, die weit über das einfache Abfangen von Anfragen hinausgehen.
Das Rewrite-Werkzeug ermöglicht das automatische Ändern bestimmter Teile von Anfragen oder Antworten: Header, URL-Parameter, Antwortbody. Beispielsweise können Sie den User-Agent-Header durch einen Wert von einem anderen Gerät ersetzen oder bestimmte Cookies entfernen. Breakpoints funktionieren wie ein Debugger: Die Anfrage wird an einer ausgewählten Stufe angehalten (vor dem Senden oder vor dem Empfangen), und der Entwickler kann ihren Inhalt manuell ändern, bevor sie fortgesetzt wird. Dies ist nützlich zum Testen der Verarbeitung von Fehlerantworten oder nicht standardmäßigen Zuständen.
Map Local ermöglicht das Ersetzen einer Netzwerkressource (CSS, JS, JSON) durch eine lokale Datei von der Festplatte. Dies ist in der Frontend-Entwicklung unverzichtbar: Sie können CSS/JS ändern und das Ergebnis sofort sehen, ohne auf einen Server bereitstellen zu müssen. Map Remote leitet Anfragen von einer URL zu einer anderen um — beispielsweise vom Produktionsserver zum Staging-Server für Tests. Beide Werkzeuge arbeiten mit URL-Mustern, die Platzhalter unterstützen.
Das Throttle-Werkzeug ermöglicht die Simulation verschiedener Arten von Netzwerkverbindungen mit voreingestellten Profilen: 3G, EDGE, GPRS, DSL, WiFi. Sie können Geschwindigkeitsbegrenzungen (Download/Upload), Latenz, Paketverlust und Stabilität konfigurieren. Dies ist entscheidend für das Testen des App-Verhaltens bei langsamen oder instabilen Verbindungen — korrekte Timeout-Behandlung, Wiederholungslogik, Offline-Modus.
| Profil | Download | Upload | Latenz | Typisches Szenario |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Testen mit schwachem Mobilfunksignal |
| EDGE | 130 kbps | 50 kbps | 400 ms | Extrem langsame Verbindung |
| GPRS | 50 kbps | 20 kbps | 500 ms | Minimal mögliche Verbindung |
| DSL | 2 Mbps | 256 kbps | 50 ms | Haushalt-Kabelverbindung |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Gute WiFi-Verbindung |
Charles kann Datenverkehrssitzungen automatisch in .chls-Dateien speichern, sodass Sie sie später analysieren oder mit Kollegen teilen können. Mit Recording Control können Sie flexibel konfigurieren, welcher Datenverkehr gespeichert werden soll: nach Domain, Inhaltstyp oder Statuscode. Dies ist für die langfristige API-Überwachung praktisch.
Zum Debuggen des Datenverkehrs mobiler Apps wird Charles als WiFi-Proxy konfiguriert: Alle Geräte im selben Netzwerk wie der Computer können Datenverkehr über Charles leiten. Die korrekte HTTPS-Konfiguration erfordert die Installation des Charles-Zertifikats auf dem mobilen Gerät.
Für Android: Settings → WiFi → Advanced → Proxy öffnen, Manual auswählen und die IP-Adresse des Computers mit Port 8888 eingeben. Dann einen Browser auf dem Gerät öffnen und http://chls.pro/ssl aufrufen, um das Charles-Zertifikat herunterzuladen. Auf Android 7+ (API 24+) ist eine network_security_config.xml erforderlich, um Benutzerzertifikaten in Debug-Builds zu vertrauen — andernfalls leitet die App möglicherweise keinen Datenverkehr über Charles.
Für iOS: Settings → WiFi → Proxy konfigurieren mit IP und Port 8888. Dann Safari → http://chls.pro/ssl → Zertifikatsprofil installieren. Unter iOS 10.3+ muss zusätzlich das Zertifikatsvertrauen aktiviert werden: Settings → General → About → Certificate Trust Settings → Charles Proxy einschalten. iOS ist strenger bei Zertifikaten: Einige Apps verwenden möglicherweise SSL Pinning, das den Datenverkehr über Charles selbst mit einem vertrauenswürdigen Zertifikat blockiert.
Wenn die App SSL Pinning(Serverzertifikatsfixierung) verwendet, funktioniert das standardmäßige Proxying über Charles nicht — die App lehnt das Charles-Zertifikat ab. Lösungen: SSL Pinning in Debug-Builds über OkHttp- oder URLSession-Einstellungen deaktivieren, Frida verwenden, um Pinning zur Laufzeit zu umgehen, oder Android Emulator mit Root-Zugriff verwenden.
Charles Proxy löst spezifische Entwicklungs- und Testaufgaben. Betrachten wir die häufigsten Szenarien, in denen das Werkzeug unverzichtbar ist.
Das häufigste Szenario — Überprüfung der Korrektheit von API-Anfragen. Charles zeigt die genaue Anfrage-URL, Header, Body und Parameter an. Wenn der Server eine unerwartete Antwort zurückgibt, sehen Sie sofort: JSON-Struktur, Fehlercode, Antwort-Header. Dies ermöglicht die Unterscheidung von Client-Fehlern und Server-Fehlern ohne Logs von beiden Seiten.
Mit Throttle-Profilen können Sie testen, wie sich die App bei niedriger Verbindungsgeschwindigkeit verhält: ob ein Ladeindikator angezeigt wird, ob Timeouts korrekt behandelt werden, ob die UI bei Verbindungsverlust einfriert. Besonders wichtig ist das Testen des Cachings — wenn Daten bereits geladen wurden, sollte die App sie aus dem Cache anzeigen, anstatt in einen endlosen Ladezustand zu geraten.
Mit Breakpoints können Sie die Serverantwort ändern, bevor sie an die App gesendet wird. Zum Beispiel ein leeres Array statt Daten zurückgeben, den Statuscode auf 500 ändern, ein neues Feld zum JSON hinzufügen. Dies ermöglicht das Testen der Verarbeitung von Grenzfällen ohne Änderung des Servercodes — eine der leistungsstärksten Anwendungen von Charles in der mobilen Entwicklung.
Häufig gestellte Fragen
Charles Proxy ist ein kommerzielles Produkt mit 30-tägiger Testphase. Nach Ablauf der Testphase arbeitet das Programm weiter, pausiert jedoch bei jedem Start für 30 Minuten. Die Lizenz kostet $50 pro Kopie. Es gibt kostenlose Alternativen wie Proxyman (macOS) und mitmproxy (plattformübergreifend).
Ja, der iOS-Simulator verwendet automatisch den macOS-System-Proxy. Starten Sie einfach Charles und aktivieren Sie SSL-Proxying — der gesamte Simulator-Datenverkehr wird abgefangen. Die Zertifikatseinrichtung für den Simulator erfolgt automatisch; Sie müssen nur dem Charles-Zertifikat im macOS-Schlüsselbund vertrauen.
Haupt-Unterschiede: Charles ist plattformübergreifend (Windows, macOS, Linux), Proxyman nur für macOS und iOS. Charles hat ein breiteres Werkzeugset (Rewrite, Map Local, Repeat, Auto Save), ist aber kostenpflichtig. Proxyman ist für Basisfunktionen kostenlos, mit moderner Oberfläche und nativer iOS-Simulator-Integration.
Charles fügt Latenz hinzu, wenn Datenverkehr durch den Proxy läuft, besonders bei aktivem SSL-Proxying (Entschlüsselung/Verschlüsselung). Auf modernen Computern beträgt die Verzögerung 5–15 Millisekunden pro Anfrage. Für Leistungstests wird empfohlen, SSL-Proxying für statische Inhalte (CSS, JS, Bilder) über Recording Control zu deaktivieren.
Charles unterstützt den Export in Formate: .chls(nativ, zum erneuten Öffnen in Charles), HAR(HTTP Archive, öffnet in Browsern und anderen Tools), CSV(zur Verarbeitung in Excel oder Tabellenkalkulationen), Trace(zum Exportieren einer bestimmten Anfrage in curl-kompatiblem Format). Export über das Menü File → Export Session.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch