Du entwickelst oder testest eine mobile App und möchtest genau wissen, welche Anfragen sie an den Server sendet und was sie als Antwort erhält? Diese Schritt-für-Schritt-Anleitung führt dich von null auf komplett zur vollen Kontrolle über den Netzwerkverkehr deiner eigenen App. Wir schauen uns die beliebtesten Werkzeuge des Jahres 2026 an, lernen, ein vertrauenswürdiges Zertifikat auf dem Handy, Emulator und Simulator zu installieren und SSL Pinning in Debug-Builds mit Bordmitteln elegant zu umgehen.

Wichtig von Anfang an: Alles, was unten beschrieben wird, bezieht sich ausschließlich auf deine eigene App oder auf eine App, für deren Untersuchung du die schriftliche Erlaubnis des Eigentümers hast. Dieses Material richtet sich an Qualitätsingenieure und Entwickler – es ist keine Anleitung zum Eindringen in fremde Programme. Ausführlicher dazu im Abschnitt über Regeln und Ethik.

Einleitung: Warum Entwickler und Tester den Traffic ihrer eigenen App sehen sollten

Eine mobile App kommuniziert ständig mit dem Server: Sie loggt sich ein, lädt den Produktkatalog, sendet Analysedaten, synchronisiert Informationen. Solange alles funktioniert, bleiben diese Anfragen unsichtbar. Aber sobald etwas kaputtgeht, ist die Frage immer dieselbe: Was genau wurde an den Server gesendet, und was kam zurück?

Die Fähigkeit, den Traffic der eigenen App zu lesen, löst gleich mehrere Aufgaben:

  • Überprüfung von Integrationen. Du siehst das genaue Format der Anfragen an deine API, Header, Body, Antwortcodes. Du erkennst leicht, wer an einem Bug schuld ist – Client oder Backend.
  • Reproduktion von Bugs. Wenn ein Tester ein Problem meldet, kannst du die tatsächliche Abfolge der Anfragen ansehen und das Szenario nachvollziehen.
  • Audit auf Datenlecks. Du prüfst, ob nach außen etwas Unnötiges gelangt: Tokens in Logs, personenbezogene Daten in Analysen, überflüssige Felder.
  • Testen von Fehlerszenarien. Du kannst die Antwort des Servers manipulieren und sehen, wie die App bei einem 500er oder Timeout reagiert.

Was du am Ende erhältst

Nach dem Durcharbeiten dieser Anleitung kannst du einen lokalen Proxy auf deinem Computer starten, den Telefonverkehr darüber leiten, verschlüsselte HTTPS-Anfragen entschlüsseln, sie in einer bequemen Oberfläche lesen, wiederholen und Antworten manipulieren – alles für deine eigene App.

Für wen ist diese Anleitung gedacht

Das Material richtet sich an QA-Ingenieure, Mobile-Entwickler und technische Fachleute, die die Netzwerkschicht ihrer App verstehen wollen. Niveau: Anfänger, aber mit Elementen für Fortgeschrittene.

Was du vorher wissen solltest

Grundlegendes Verständnis von HTTP-Anfragen, Server und Client reicht aus. Kenntnisse der Kommandozeile sind ein Plus, aber wir behandeln auch grafische Werkzeuge. Tiefgehende Kryptografiekenntnisse sind nicht erforderlich.

Wie viel Zeit du einplanen solltest

Die Ersteinrichtung dauert ein bis zwei Stunden, inklusive Installation von Werkzeugen und Zertifikaten. Danach dauern wiederholte Starts nur wenige Minuten.

Vorbereitungen: Werkzeuge, Anforderungen und was du installieren musst

Bevor wir in den Traffic eintauchen, richten wir die Arbeitsumgebung ein. Wir vergleichen vier beliebte Werkzeuge und wählen das passende für dich aus.

Vergleich der Werkzeuge: mitmproxy, Charles, Proxyman und Burp

Jedes dieser Werkzeuge fungiert als MITM-Proxy, also als Mittelsmann zwischen deiner App und dem Server. Sie unterscheiden sich in Oberfläche, Preis und Komfort.

  • mitmproxy. Kostenlos und Open Source. Arbeitet im Terminal, bietet aber auch eine Weboberfläche (mitmweb). Ideal für alle, die Skripte und Python-Automatisierung mögen. Plattformübergreifend.
  • Charles. Kostenpflichtig, mit Testphase. Klassische grafische Oberfläche auf Java-Basis, läuft auf Windows, macOS und Linux. Sehr beliebt bei mobilen QA-Testern wegen der Einfachheit.
  • Proxyman. Modernes Werkzeug mit schicker Oberfläche, ursprünglich für macOS, inzwischen auch für Windows und Linux. Praktische automatische Zertifikatskonfiguration.
  • Burp Suite. Werkzeug aus der Sicherheitswelt. Leistungsstark, es gibt eine kostenlose Community-Version. Für einfaches Traffic-Ansehen etwas überdimensioniert, aber nützlich für fortgeschrittene Analysen.

Tipp: Wenn du Anfänger bist und schnell Ergebnisse sehen willst, starte mit Charles oder Proxyman. Wenn du das Terminal und Automatisierung magst, installiere mitmproxy. Für diese Anleitung stützen wir uns auf mitmproxy und Charles als die vielseitigsten Optionen.

Systemanforderungen

  • Computer mit Windows, macOS oder Linux und Administratorenrechten.
  • Mobiles Gerät oder Android-Emulator bzw. iOS-Simulator.
  • Gemeinsames WLAN für Telefon und Computer oder ein konfigurierter Emulator.
  • Zugang zu den Quellen deiner App, um eine Debug-Version zu erstellen.

Was du herunterladen und installieren solltest

  1. Lade das ausgewählte Proxy-Werkzeug von der offiziellen Website herunter. Für mitmproxy gibt es Installer für dein Betriebssystem oder ein Paket über den Paketmanager.
  2. Installiere das Werkzeug gemäß dem Standardinstallationsassistenten.
  3. Für den Android-Emulator installiere Android Studio mit Emulator und einem System-Image ohne Google-Dienste, um leichter auf das Systemzertifikatsspeicher zugreifen zu können.
  4. Für den iOS-Simulator auf macOS installiere Xcode aus dem App Store.

⚠️ Achtung: Lade Werkzeuge nur von den offiziellen Entwicklerseiten herunter. Proxy-Programme haben tiefen Zugriff auf den Datenverkehr, daher können Fälschungen gefährlich sein. Überprüfe die Signaturen der Installer, wo immer möglich.

Sicherungskopien und Vorbereitung des Geräts

Die Arbeit mit Zertifikaten und Netzwerkeinstellungen ist in der Regel sicher und umkehrbar. Dennoch solltest du dich absichern.

  1. Notiere die aktuellen WLAN-Einstellungen deines Telefons, um sie später wiederherstellen zu können.
  2. Verwende für Experimente ein separates Testgerät oder -profil, nicht dein primäres Arbeitshandy.
  3. Wenn du mit einem Arbeitsgerät arbeitest, merke dir, welche Zertifikate du installierst, um sie nach der Fehlersuche zu entfernen.

✅ Überprüfung: Zu diesem Zeitpunkt hast du das Proxy-Werkzeug installiert, ein Testgerät oder Emulator/Simulator bereit und Zugang zum Build deiner App.

Grundlagen: Wie ein MITM-Proxy funktioniert und warum du ein eigenes Zertifikat brauchst

Um sicher voranzukommen, klären wir die Schlüsselbegriffe einfach erklärt. Das ist das Fundament – ohne es wirken die Schritte wie Zauberei.

Was ist ein MITM-Proxy?

MITM steht für „Man-in-the-Middle“, also ein Mittelsmann. Der Proxy stellt sich zwischen deine App und den Server. Die App denkt, sie spricht mit dem Server, und der Server denkt, er spricht mit der App. Tatsächlich kommunizieren beide mit dem Proxy, der den gesamten Traffic sieht und anzeigen kann.

Bei normalem HTTP funktioniert das sofort: Die Daten werden unverschlüsselt übertragen. Aber moderne Apps verwenden HTTPS, bei dem der Traffic verschlüsselt ist. Hier wird es spannend.

Was beim TLS-Handshake passiert

HTTPS basiert auf dem TLS-Protokoll. Wenn eine App eine Verbindung zu einem Server aufbaut, führen sie einen sogenannten Handshake durch. Der Server legt sein Zertifikat vor, das bestätigt, dass er der ist, der er vorgibt zu sein. Die App prüft dieses Zertifikat anhand einer Liste vertrauenswürdiger Zertifizierungsstellen.

Zertifizierungsstelle (CA) ist eine Organisation, der Geräte vertrauen. Ihre Signatur auf dem Serverzertifikat überzeugt die App, dass die Verbindung sicher ist.

Warum du ein eigenes CA-Zertifikat brauchst

Damit der Proxy den verschlüsselten Traffic anzeigen kann, muss er selbst als Server für die App auftreten. Dazu erzeugt der Proxy spontan ein Zertifikat für jede angefragte Domain und signiert es mit seinem eigenen Wurzelzertifikat (CA).

Standardmäßig vertraut die App diesem selbstgemachten CA nicht. Deshalb installieren wir manuell das Wurzelzertifikat des Proxys im vertrauenswürdigen Zertifikatsspeicher des Geräts. Danach betrachtet die App die Signatur des Proxys als vertrauenswürdig und stellt die Verbindung her.

Tipp: Stell dir das Wurzelzertifikat des Proxys wie eine Eintrittskarte vor. Solange du diese Karte dem Gerät nicht gibst, lässt es den Proxy nicht in den geschützten Traffic schauen.

Warum ohne Vertrauen nur der Hostname im SNI sichtbar ist

Wenn das Proxy-Zertifikat nicht installiert ist, weigert sich die App, eine gesicherte Verbindung über den Proxy herzustellen. Aber etwas bleibt sichtbar: Im TLS-Handshake wird das SNI-Feld (Server Name Indication) übertragen – der Name des Servers, mit dem die Verbindung aufgebaut wird. Das wird benötigt, damit der Server weiß, welche Website angefordert wird.

Daher siehst du auch ohne vertrauenswürdiges Zertifikat eine Liste der Domains, die die App kontaktiert, aber nicht den Inhalt der Anfragen und Antworten. Zum Lesen des Inhalts brauchst du ein installiertes und vertrauenswürdiges Zertifikat.

Was ist SSL Pinning?

SSL Pinning (oder Zertifikats-Pinning) ist ein zusätzlicher Schutz. Die App speichert den Fingerabdruck des erwarteten Serverzertifikats oder -schlüssels und prüft, ob der Server genau diesen vorlegt. Selbst wenn ein vertrauenswürdiges Proxy-Zertifikat im System installiert ist, lehnt die App mit Pinning die Verbindung ab, weil der Fingerabdruck nicht übereinstimmt. Wie man mit Pinning in Debug-Builds umgeht, besprechen wir gesondert.

✅ Überprüfung: Du verstehst: Der Proxy zeigt den Traffic, indem er als Mittelsmann fungiert, und um HTTPS lesen zu können, benötigst du ein vertrauenswürdiges Wurzelzertifikat des Proxys auf dem Gerät.

Schritt 1: Proxy im Netzwerk auf Android und iOS einrichten

Ziel dieses Schritts: Den gesamten Webverkehr des Telefons über deinen Computer leiten, auf dem das Proxy-Werkzeug läuft.

Computer vorbereiten und seine Adresse herausfinden

  1. Stelle sicher, dass Computer und Telefon im selben WLAN sind.
  2. Starte das Proxy-Werkzeug. Für mitmweb gib den Befehl zum Starten der Weboberfläche im Terminal ein, für Charles öffne einfach die App.
  3. Überprüfe, auf welchem Port der Proxy lauscht. Standardmäßig ist es bei mitmproxy Port 8080, bei Charles je nach Version 8888 oder 8080.
  4. Finde die lokale IP-Adresse des Computers im Netzwerk. Unter Windows mit dem Befehl zur Netzwerkkonfiguration, unter macOS und Linux mit einem ähnlichen Terminalbefehl. Die Adresse sieht etwa so aus: 192.168.1.15.

Tipp: Notiere dir die IP-Adresse des Computers und den Proxy-Port. Diese beiden Werte wirst du in den Telefoneinstellungen eingeben.

Proxy auf Android einrichten

  1. Öffne auf dem Telefon die App „Einstellungen“.
  2. Gehe zu „Netzwerk und Internet“ und dann zu „WLAN“.
  3. Tippe auf den Namen deines aktuellen Netzwerks, um die Einstellungen zu öffnen.
  4. Suche den Punkt „Erweitert“ oder das Stiftsymbol, um das Netzwerk zu bearbeiten.
  5. Wähle bei „Proxy“ die Option „Manuell“.
  6. Gib bei „Proxy-Hostname“ die IP-Adresse des Computers ein, z.B. 192.168.1.15.
  7. Gib bei „Port“ den Proxy-Port ein, z.B. 8080.
  8. Speichere die Einstellungen mit „Speichern“.

Proxy auf iOS einrichten

  1. Öffne die App „Einstellungen“.
  2. Gehe zu „WLAN“.
  3. Tippe auf das blaue Informationssymbol neben deinem Netzwerknamen.
  4. Scrolle nach unten zum Abschnitt „HTTP-Proxy konfigurieren“.
  5. Wähle den Modus „Manuell“.
  6. Gib bei „Server“ die IP-Adresse des Computers ein.
  7. Gib bei „Port“ den Proxy-Port ein.
  8. Gehe zurück – die Einstellungen werden automatisch gespeichert.

⚠️ Achtung: Nach der Proxy-Einrichtung wird der gesamte Webverkehr des Telefons über den Computer geleitet. Wenn das Proxy-Werkzeug ausgeschaltet ist, funktioniert das Internet auf dem Telefon nicht mehr. Das ist normal: Schalte einfach den Proxy wieder ein oder entferne die Einstellungen.

Erwartetes Ergebnis

Öffne auf dem Telefon einen Browser und rufe eine einfache HTTP-Seite auf. Im Proxy-Interface sollten Einträge zu den Anfragen erscheinen. HTTPS wird vorerst nur als Hostname angezeigt, weil das Zertifikat noch nicht installiert ist.

Mögliche Probleme. Wenn nichts erscheint, überprüfe, ob Telefon und Computer im selben Netzwerk sind, ob du die richtige IP und den richtigen Port eingegeben hast und ob die Firewall auf dem Computer die Verbindung nicht blockiert.

✅ Überprüfung: Im Proxy-Fenster sind eingehende Anfragen vom Telefon zu sehen, zumindest als Liste von Domains.

Schritt 2: Wurzelzertifikat installieren und vertrauen

Ziel dieses Schritts: Dem Gerät vertrauen lassen, dass das Wurzelzertifikat des Proxys gültig ist, sodass der Inhalt von HTTPS-Anfragen lesbar wird.

Proxy-Zertifikat herunterladen

Wenn der Proxy eingerichtet ist und das Telefon darüber kommuniziert, gibt es eine bequeme Möglichkeit, das Zertifikat direkt auf dem Gerät zu erhalten.

  1. Öffne auf dem Telefon einen Browser.
  2. Rufe für mitmproxy die spezielle Dienstseite mitm.it auf. Diese Seite erscheint nur, wenn der Traffic über mitmproxy läuft.
  3. Du siehst Schaltflächen für verschiedene Plattformen. Wähle die passende aus, z.B. Android oder Apple.
  4. Lade die Zertifikatsdatei herunter.
  5. Bei Charles ist das Zertifikat ebenfalls über eine Dienstseite verfügbar, die das Programm im Hilfemenü anzeigt.

Installation auf Android 7 und neuer

Ab Android 7 unterscheidet das System zwei Zertifikatsspeicher: Benutzer- und Systemspeicher. Das ist ein entscheidender Punkt.

  • Benutzerspeicher. Hier kannst du ein Zertifikat ohne Root-Rechte installieren. Aber Apps vertrauen standardmäßig nicht auf Benutzerzertifikate, es sei denn, der Entwickler hat dies explizit in der App-Konfiguration erlaubt.
  • Systemspeicher. Ihm vertrauen alle Apps, aber ein Zertifikat dort hinzuzufügen geht nur auf einem gerooteten Gerät oder auf einem Emulator mit einem Image ohne Google-Dienste.

Für die Installation im Benutzerspeicher führe folgende Schritte aus:

  1. Öffne die „Einstellungen“, dann „Sicherheit“.
  2. Suche den Punkt „Verschlüsselung und Anmeldedaten“ oder „Erweiterte Sicherheitseinstellungen“.
  3. Wähle „Zertifikat installieren“ und dann „CA-Zertifikat“.
  4. Das System warnt vor Risiken, bestätige die Installation.
  5. Wähle die heruntergeladene Zertifikatsdatei aus.
  6. Gib dem Zertifikat einen aussagekräftigen Namen, z.B. „DebugProxy“.

Wichtig: Gerade wegen der Trennung der Speicher unter Android 7 und höher kann es sein, dass deine App den Traffic nicht sieht, selbst wenn das Zertifikat im Benutzerspeicher installiert ist. Die Lösung über die App-Konfiguration behandeln wir im Schritt zu Pinning.

Installation und Vertrauen auf iOS

Auf iOS besteht der Vorgang aus zwei Schritten: Profil installieren und Vertrauen aktivieren.

  1. Nach dem Herunterladen des Zertifikats meldet iOS, dass ein Profil geladen wurde.
  2. Öffne die „Einstellungen“, oben erscheint der Punkt „Profil geladen“.
  3. Tippe darauf und wähle rechts oben „Installieren“.
  4. Gib den Geräte-Code ein, falls einer eingerichtet ist.
  5. Bestätige die Installation des Profils.

Jetzt der entscheidende Schritt, den man leicht vergisst – das vollständige Vertrauen aktivieren:

  1. Öffne die „Einstellungen“, dann „Allgemein“.
  2. Gehe zu „Info“.
  3. Scrolle nach unten zu „Zertifikatsvertrauenseinstellungen“.
  4. Suche dein Proxy-Zertifikat in der Liste.
  5. Schalte den Schalter daneben ein, um das vollständige Vertrauen in das Wurzelzertifikat zu aktivieren.

⚠️ Achtung: Ohne das Aktivieren des Schalters unter „Zertifikatsvertrauenseinstellungen“ betrachtet iOS das Zertifikat zwar als installiert, aber nicht als vertrauenswürdig. HTTPS-Traffic wird nicht lesbar. Das ist der häufigste Fehler bei iOS-Einsteigern.

Erwartetes Ergebnis

Öffne den Browser und rufe eine beliebige HTTPS-Seite auf. Jetzt solltest du im Proxy-Interface den vollständigen Inhalt der Anfragen und Antworten sehen, nicht nur die Domainnamen.

✅ Überprüfung: Im Proxy-Werkzeug werden entschlüsselte HTTPS-Anfragen aus dem Telefon-Browser angezeigt.

Schritt 3: Dasselbe auf dem Android-Emulator und iOS-Simulator

Ziel dieses Schritts: Traffic-Abfangen ohne physisches Gerät, direkt auf dem Entwicklungsrechner einrichten.

Android-Emulator

Der Emulator ist praktisch, weil du ein Image ohne Google-Dienste verwenden und Zugriff auf den Systemzertifikatsspeicher erhalten kannst.

  1. Öffne in Android Studio den Device Manager und erstelle ein virtuelles Gerät.
  2. Wähle bei der Image-Auswahl eine Variante ohne den Hinweis „Google Play“ – das gibt dir Rechte auf die Systempartition.
  3. Starte den Emulator.
  4. In den erweiterten Einstellungen des Emulators kannst du den Proxy direkt angeben oder ihn in den WLAN-Einstellungen im Emulator wie auf einem echten Telefon einrichten.
  5. Für den Systemspeicher verwende Kommandozeilen-Tools, mit denen du den Emulator mit Schreibrechten auf die Systempartition neu starten und das Zertifikat dort hinzufügen kannst.

Tipp: Ein Emulator ohne Google-Dienste mit Zugriff auf den Systemspeicher erspart dir viele Probleme mit Zertifikatsvertrauen. Er ist die beste Wahl für regelmäßige Debugging-Sessions.

iOS-Simulator

Der iOS-Simulator auf macOS verwendet die vertrauenswürdigen Zertifikate des macOS-Systems selbst, was die Einrichtung vereinfacht.

  1. Installiere das Wurzelzertifikat des Proxys in den System-Schlüsselbund deines Macs.
  2. Öffne die App „Schlüsselbundverwaltung“, suche das Proxy-Zertifikat.
  3. Doppelklicke darauf und setze im Bereich „Vertrauen“ den Wert auf „Immer vertrauen“.
  4. Starte den Simulator über Xcode. Er erbt das Vertrauen in das Zertifikat aus macOS.
  5. Der Traffic des Simulators läuft über den System-Proxy des Macs, sofern dieser konfiguriert ist, oder über den in den Netzwerkeinstellungen festgelegten Proxy.

Erwartetes Ergebnis. In beiden Fällen siehst du entschlüsselten Traffic der Test-App oder des Browsers, der im Emulator oder Simulator läuft.

Mögliche Probleme. Wenn der Android-Emulator den Proxy nicht übernimmt, überprüfe die WLAN-Einstellungen im Emulator und die Startparameter. Für den iOS-Simulator stelle sicher, dass das Zertifikat im Schlüsselbund als vertrauenswürdig markiert ist.

✅ Überprüfung: Der Verkehr aus dem Emulator/Simulator wird im Proxy-Werkzeug entschlüsselt angezeigt.

Schritt 4: Umgang mit SSL Pinning in deinem Debug-Build

Ziel dieses Schritts: Verstehen, ob die App Zertifikats-Pinning verwendet, und es nur im Debug-Build mit den plattformüblichen Mitteln korrekt abschwächen.

Das ist der verantwortungsvollste Abschnitt, also gehen wir ihn sorgfältig an.

Wie erkenne ich, ob Pinning aktiviert ist?

Wenn das Proxy-Zertifikat installiert und vertrauenswürdig ist, der Browser den Traffic anzeigt, aber deine App dennoch nicht funktioniert oder sich über Netzwerkfehler beschwert, liegt sehr wahrscheinlich Pinning vor.

  • Im Proxy-Interface siehst du einen Verbindungsabbruch während des TLS-Handshakes für die Domains deiner App.
  • In den Logs der App können Meldungen über fehlgeschlagene Zertifikatsprüfungen oder eine nicht vertrauenswürdige Kette erscheinen.
  • Oft weiß der Entwickler selbst, dass Pinning bewusst hinzugefügt wurde, um die Release-Version zu schützen.

Pinning auf Android über network_security_config abschwächen

Android bietet einen offiziellen Mechanismus zur Konfiguration der Netzwerksicherheit. Damit kannst du das Vertrauen in Benutzerzertifikate nur für den Debug-Build erlauben.

  1. Erstelle im Projekt eine Netzwerksicherheitskonfigurationsdatei in den Ressourcen.
  2. Beschreibe darin die Vertrauensregeln für Zertifikate speziell für die Debug-Konfiguration, indem du einen speziellen Block für Debug-Überschreibungen verwendest.
  3. Gib an, dass die App im Debug-Modus dem Benutzerzertifikatsspeicher vertraut.
  4. Binde diese Datei im Manifest der App über das entsprechende Attribut ein.
  5. Stelle sicher, dass die Debug-Überschreibungen nur gelten, wenn die App im Debug-Modus erstellt wurde – niemals im Release.

Wichtig: Der spezielle Block für Debug-Überschreibungen funktioniert nur, wenn die App als debuggbar markiert ist. In der Release-Version ignoriert das System diese Regeln vollständig, was die Sicherheit gewährleistet.

Auf iOS die Prüfungen über Info.plist-Einstellungen lockern

Unter iOS kontrolliert der Mechanismus ATS die Transportsicherheit. Im Debug-Build kannst du die strengen Prüfungen für bestimmte Domains deiner Testumgebung lockern.

  1. Öffne die Info.plist deiner Debug-Konfiguration.
  2. Füge die Transportsicherheitseinstellungen für die benötigten Domains des Testservers hinzu.
  3. Denke daran: ATS regelt die Verbindungsrichtlinie, ein eigenes Pinning im Code der App muss separat deaktiviert werden.
  4. Wenn Pinning im Code implementiert ist, füge eine Bedingung ein, dass die Fingerabdruckprüfung nur in der Release-Konfiguration durchgeführt wird.

⚠️ Achtung: Lasse gelockerte Prüfungen niemals im Release-Build. Das schafft eine echte Sicherheitslücke für die Nutzer deiner App. Alle Änderungen müssen ausschließlich in der Debug-Konfiguration wirken und im Release automatisch verschwinden.

Warum nur im Debug und niemals im Release

SSL Pinning schützt die Nutzer deiner App vor dem Abfangen ihres Datenverkehrs. Indem du es im Debug deaktivierst, tust du dies auf deinem kontrollierten Gerät, bewusst und vorübergehend, zu Diagnosezwecken. Im Release ist dieser Schutz kritisch und muss maximal streng bleiben.

Tipp: Trenne die Logik der Zertifikatsprüfung per Build-Flag. Konfiguriere es so, dass selbst aus Versehen kein Release mit gelockerten Prüfungen gebaut werden kann. Das schützt dich vor menschlichen Fehlern.

Erwartetes Ergebnis

Nach korrekter Konfiguration des Debug-Builds baut deine App eine Verbindung über den Proxy auf, und du siehst ihre entschlüsselten Anfragen und Antworten.

✅ Überprüfung: Die Anfragen deiner App an ihre API werden im Proxy lesbar angezeigt, und die Änderungen betreffen ausschließlich den Debug-Build.

Schritt 5: Traffic lesen und analysieren

Ziel dieses Schritts: Lernen, die gewünschten Anfragen zu finden, Rauschen herauszufiltern, Daten zu exportieren, Anfragen zu wiederholen und Antworten zu manipulieren.

Filter und Suche

Selbst eine kleine App erzeugt Dutzende von Anfragen. Filter helfen, die richtige zu finden.

  1. Verwende einen Filter nach Domain, um nur die Anfragen an deine API anzuzeigen.
  2. Filtere nach Inhaltstyp, z.B. nur JSON-Antworten.
  3. Suche nach einer Zeichenfolge im Anfrage- oder Antworttext, um schnell den gewünschten Aufruf zu finden.
  4. In Charles gibt es eine praktische Baumansicht nach Hosts, in mitmweb eine flexible Filterzeile.

Tipp: Richte den Filter so ein, dass nur die Domains deiner App angezeigt werden. Das eliminiert sofort den Rauschen von System- und Drittanbieterdiensten.

Export im HAR-Format

Das HAR-Format ist ein Standard, um eine Traffic-Session in einer Datei zu speichern. Es eignet sich zur Weitergabe an das Backend-Team oder zum Anhängen an einen Bug-Report.

  1. Wähle die gewünschten Anfragen oder die gesamte Session aus.
  2. Wähle im Menü des Werkzeugs die Exportfunktion in das HAR-Format.
  3. Speichere die Datei und füge sie der Aufgabe im Ticket-System bei.

Anfrage wiederholen

Manchmal muss man dieselbe Anfrage mehrmals wiederholen, z.B. um Idempotenz zu prüfen oder einen Bug zu reproduzieren.

  1. Wähle die gewünschte Anfrage in der Liste aus.
  2. Nutze die Wiederholungsfunktion – bei Charles heißt sie „Repeat“, bei mitmproxy ein Befehl zum Wiederholen des Streams.
  3. Bearbeite die Anfrage bei Bedarf vor der Wiederholung, ändere Header oder Body.

Antwort manpulieren für Fehlerszenarien

Das ist eine mächtige Funktion. Du kannst die App zwingen, eine bestimmte Antwort anstelle der echten zu erhalten.

  1. Richte eine Manipulationsregel ein – bei Charles sind das „Map Local“ oder „Breakpoints“, bei mitmproxy Python-Skripte.
  2. Lege fest, dass bei einer Anfrage an eine bestimmte Adresse eine vorbereitete Antwort zurückgegeben wird, z.B. ein 500er-Fehler oder eine leere Liste.
  3. Führe das Szenario in der App aus und beobachte, wie sie mit dem Fehler umgeht.

Tipp: Mit der Antwortmanipulation kannst du das Verhalten der App bei schlechtem Internet, Serverfehlern oder unerwarteten Daten testen, ohne das echte Backend zu berühren.

✅ Überprüfung: Du kannst Traffic filtern, als HAR exportieren, Anfragen wiederholen und Antworten in deiner eigenen App manipulieren.

Wie Mobile Proxies dabei helfen, die App aus einem anderen Netzwerk und einer anderen Region zu testen

Ein separates Thema sind Mobile Proxies. Das sind Proxy-Server, die über echte Mobilfunknetze arbeiten. Sie sind nützlich, um zu testen, wie sich deine App verhält, wenn ein Nutzer über mobiles Internet in einer anderen Region zugreift.

Warum das für QA wichtig ist

  • Überprüfung regionaler Inhalte. Viele Apps zeigen je nach Region unterschiedliche Daten an. Ein Mobile Proxy ermöglicht dir, die App aus der Perspektive eines Nutzers in der gewünschten Region zu sehen.
  • Testen im Mobilfunknetz. Das Verhalten der App im mobilen Internet unterscheidet sich von WLAN: andere Latenzen, wechselnde IPs, Besonderheiten der Betreibernetze. Ein Mobile Proxy hilft, solche Bedingungen nachzustellen.
  • Überprüfung geografischer Logik. Wenn dein Backend die Region anhand der IP ermittelt, kannst du sicherstellen, dass die Logik für verschiedene Standorte korrekt funktioniert.

Wichtig: Mobile Proxies solltest du nur zum Testen deiner eigenen App und im Rahmen des Gesetzes verwenden. Sie sind ein QA-Werkzeug zur Überprüfung regionaler Logik, nicht zum Umgehen von irgendetwas. Dienste wie MobileProxy.space bieten legalen Zugang zu mobilen IPs für solche Aufgaben.

Tipp: Kombiniere einen Mobile Proxy zum Wechsel des Ausgangspunkts mit einem lokalen MITM-Proxy zum Lesen des Traffics. So siehst du gleichzeitig den Inhalt der Anfragen und prüfst das regionale Verhalten.

Ergebnisprüfung: Checkliste für eine erfolgreiche Einrichtung

Gehe diese Liste durch, um sicherzustellen, dass alles wie gewünscht funktioniert.

  • Das Proxy-Werkzeug läuft und hört auf dem richtigen Port.
  • Telefon, Emulator oder Simulator leiten den Traffic über den Proxy.
  • Das Wurzelzertifikat des Proxys ist auf dem Gerät installiert und vertrauenswürdig.
  • HTTPS-Traffic aus dem Browser wird entschlüsselt angezeigt.
  • Im Debug-Build der App wurde Pinning mit Bordmitteln abgeschwächt.
  • Die Anfragen deiner App an die API werden vollständig im Proxy angezeigt.
  • Du kannst filtern, exportieren, wiederholen und Antworten manipulieren.

Wie testen

  1. Starte den Debug-Build der App.
  2. Führe ein typisches Szenario aus, z.B. Login und Laden des Hauptbildschirms.
  3. Stelle sicher, dass im Proxy Anfragen an deine API mit lesbarem Body erscheinen.
  4. Wiederhole eine Anfrage und manipuliere eine Antwort, um die Reaktion der App zu prüfen.

Erfolgskriterien. Du siehst den vollständigen Lebenszyklus der Netzwerkkommunikation deiner App und kannst sie zu Testzwecken beeinflussen.

Häufige Fehler und Lösungen

Wir gehen typische Probleme nach dem Schema Problem – Ursache – Lösung durch.

App ignoriert den System-Proxy

Problem: Der Traffic erscheint nicht im Proxy, obwohl der Browser funktioniert. Ursache: Die App verwendet einen eigenen Netzwerk-Stack, der die System-Proxy-Einstellungen nicht beachtet. Lösung: Konfiguriere den Netzwerk-Client im Debug-Build so, dass er den System-Proxy berücksichtigt, oder verwende einen transparenten Proxy auf Netzwerkebene.

QUIC-Traffic nicht sichtbar

Problem: Ein Teil der Anfragen fehlt. Ursache: Die App verwendet das QUIC-Protokoll über UDP, das von normalen HTTP-Proxys nicht abgefangen wird. Lösung: Deaktiviere vorübergehend die QUIC-Unterstützung im Netzwerk-Client des Debug-Builds, damit der Traffic über normales HTTPS läuft und im Proxy sichtbar wird.

Besonderheiten bei Android 14

Problem: Das Zertifikat ist installiert, aber die App sieht es nicht. Ursache: In neueren Android-Versionen wurden die Regeln für Benutzerzertifikate verschärft – Apps vertrauen ihnen standardmäßig nicht. Lösung: Verwende die Netzwerksicherheitskonfiguration mit Debug-Überschreibungen oder den Systemspeicher auf dem Emulator.

iOS entschlüsselt Traffic nicht

Problem: Die Anfragen der App auf iOS werden nicht gelesen. Ursache: Das Zertifikat ist installiert, aber das vollständige Vertrauen wurde nicht unter „Zertifikatsvertrauenseinstellungen“ aktiviert. Lösung: Gehe zu Einstellungen > Allgemein > Info > Zertifikatsvertrauenseinstellungen und aktiviere den Schalter.

gRPC und HTTP/2

Problem: Daten werden sichtbar, aber in einem binären, unverständlichen Format. Ursache: Die App verwendet gRPC über HTTP/2 mit binärer Serialisierung. Lösung: Verwende Werkzeuge, die HTTP/2 verstehen, und ggf. Plugins zur Dekodierung des Nachrichtenformats, um den Inhalt lesen zu können.

Kein Internet nach Proxy-Einrichtung

Problem: Das Telefon hat keine Internetverbindung mehr. Ursache: Das Proxy-Werkzeug ist ausgeschaltet, aber die Proxy-Einstellungen sind noch aktiv. Lösung: Schalte den Proxy auf dem Computer ein oder entferne die Proxy-Einstellungen in den WLAN-Optionen des Telefons.

Firewall blockiert Verbindungen

Problem: Das Telefon kann keine Verbindung zum Proxy herstellen. Ursache: Die Firewall des Computers blockiert eingehende Verbindungen auf den Proxy-Port. Lösung: Füge eine Ausnahmeregel für den Proxy-Port in der systemeigenen Firewall hinzu.

Zusätzliche Funktionen und fortgeschrittene Einstellungen

Wenn die Basiseinrichtung sitzt, lohnt es sich, das Arsenal zu erweitern.

Skripte und Automatisierung

mitmproxy erlaubt das Schreiben von Python-Skripten, die Anfragen und Antworten automatisch verändern. Das ist praktisch für Regressionstests und komplexe Manipulationsszenarien.

Sessions speichern

Speichere aufgezeichnete Traffic-Sessions in Dateien, um später darauf zurückzugreifen oder sie mit dem Team zu teilen. Das beschleunigt die Fehleranalyse.

Mapping auf lokale Dateien

Die Funktion, Antworten durch lokale Dateien zu ersetzen, ermöglicht es, die App-Oberfläche unabhängig von der Backend-Verfügbarkeit zu entwickeln. Du gibst der App einfach vorbereitete JSON-Antworten.

Geschwindigkeitsbegrenzung

Viele Proxys können die Verbindung künstlich verlangsamen. Das hilft, das App-Verhalten bei langsamen Netzwerken zu testen und Probleme mit Timeouts zu finden.

Tipp: Erstelle eine Sammlung typischer Manipulations- und Verlangsamungsszenarien und verwende sie in jedem Release wieder. Das macht manuelles Debugging zu einem wiederholbaren Testprozess.

FAQ: Häufig gestellte Fragen

Brauche ich Root auf Android, um den Traffic zu lesen?

Für den Benutzerspeicher und eine eigene App mit Debug-Konfiguration ist kein Root nötig. Für den Systemspeicher auf einem echten Gerät wäre Root erforderlich, aber einfacher ist die Verwendung eines Emulators ohne Google-Dienste.

Kann ich auf die Installation eines Zertifikats verzichten?

Ohne vertrauenswürdiges Zertifikat siehst du nur die Domainnamen im SNI, aber nicht den Inhalt von HTTPS. Zum Lesen der Anfragen ist ein Zertifikat zwingend erforderlich.

Warum sieht der Browser den Traffic, aber die App nicht?

Wahrscheinlich verwendet die App SSL Pinning oder einen eigenen Netzwerk-Stack. Konfiguriere den Debug-Build wie im Schritt zu Pinning beschrieben.

Ist es sicher, ein Wurzelzertifikat des Proxys zu installieren?

Auf einem Testgerät und während der Fehlersuche ist das akzeptabel. Entferne das Zertifikat nach der Arbeit, um kein erweitertes Vertrauen auf dem Gerät zu hinterlassen.

Was tun, wenn der Traffic über QUIC läuft?

Deaktiviere QUIC im Debug-Build des Netzwerk-Clients, damit die Verbindungen über normales HTTPS laufen und vom Proxy gesehen werden.

Kann ich den Traffic einer fremden App analysieren?

Nein. Nur deine eigene App oder eine App mit ausdrücklicher Erlaubnis des Eigentümers. Das ist eine grundlegende Regel.

Charles oder mitmproxy – was für Einsteiger besser?

Charles ist dank der grafischen Oberfläche einfacher für den Einstieg. mitmproxy ist leistungsstärker für Automatisierung. Starte mit dem, was dir angenehmer ist.

Wie entferne ich alle Änderungen nach der Fehlersuche?

Entferne die Proxy-Einstellungen im WLAN, lösche das installierte Zertifikat in den Sicherheitseinstellungen und erstelle die App in der Release-Konfiguration mit vollständigen Prüfungen.

Warum funktioniert das Zertifikatsvertrauen auf iOS nicht?

Du hast das Profil installiert, aber das vollständige Vertrauen unter „Zertifikatsvertrauenseinstellungen“ nicht aktiviert. Das ist ein separater und obligatorischer Schritt.

Kann ich den Traffic bei langsamem Netzwerk ansehen?

Ja, viele Proxys können die Verbindung künstlich verlangsamen, um das App-Verhalten bei schlechtem Internet zu testen.

Fazit

Herzlichen Glückwunsch – jetzt verfügst du über das volle Rüstzeug, um den Netzwerkverkehr deiner eigenen mobilen App zu analysieren. Du hast gelernt, zwischen mitmproxy, Charles, Proxyman und Burp zu wählen, einen lokalen Proxy zu starten und den Traffic von Telefon, Emulator und Simulator darüber zu leiten.

Du hast verstanden, wie ein MITM-Proxy funktioniert und warum ein vertrauenswürdiges Wurzelzertifikat nötig ist, die Feinheiten der Zertifikatsspeicher unter Android 7 und neuer kennengelernt und den obligatorischen Vertrauensschritt auf iOS gemeistert. Du weißt, wie du SSL Pinning nur im Debug-Build mit plattformeigenen Mitteln abschwächst – ohne jemals den Release zu berühren.

Schließlich kannst du Anfragen lesen, filtern, exportieren, wiederholen und manipulieren sowie Mobile Proxies nutzen, um das regionale Verhalten der App legal zu testen.

Wie es weitergeht

Vertiefe die Fähigkeiten an einem echten Projekt: Richte das Traffic-Abfangen für deine App ein und integriere typische Antwortmanipulationsszenarien in den Testprozess. Erarbeite dich nach und nach Automatisierungsskripte und teile Traffic-Sessions mit dem Team.

Zur weiteren Vertiefung: Analysiere HTTP/2 und gRPC genauer, lerne das Schreiben von mitmproxy-Skripten, integriere Traffic-Abfangen in automatisierte Tests. Und denke immer an die Grundregel: Arbeite nur mit deiner eigenen App oder mit ausdrücklicher Erlaubnis des Eigentümers, respektiere die Gesetze und die Privatsphäre der Nutzer.