Die meisten modernen Apps sind auf APIs angewiesen. “ – Wie kann ich auf Ihren Katalog zugreifen? – Hier ist eine API dafür. “ APIs sind überall und das wird sich nicht ändern.
Es ist (oft) gut, jeden Teil Ihres Codes in separate Dienste aufzuteilen, aber wenn es um Tests geht, kann diese Trennung die Dinge etwas schwieriger machen.
Front-End-Apps-Entwickler schreiben nicht mehr den Code, der sich um die Kerngeschäftslogik kümmert. Im Allgemeinen werden komplexe Datenverarbeitungsaufgaben auf API-Seite ausgeführt, und Front-End-Apps müssen nur anzeigen, was von der API bereitgestellt wird.
Aus diesem Grund ist es so wichtig, den Datenpfad von der App zur API zurückverfolgen zu können. Wenn Sie eine App testen und validieren, ist es entscheidend, die folgenden Fragen beantworten zu können :
- welche API-Endpunkte verwendet die App für diesen Bildschirm?
- Was ist in der Antwort der API enthalten?
- Was passiert, wenn sich die API-Antwortstruktur ändert?
Am Ende dieses Tutorials sollten Sie in der Lage sein, mitmproxy zu verwenden, um diese Fragen zu beantworten. Aber Sie werden sehen, mit diesem erstaunlichen Tool gibt es noch viel mehr zu tun.
Bevor wir anfangen …
Sie fragen sich vielleicht, warum Sie mitmproxy anstelle eines anderen Tools verwenden sollten. Und das ist eine gute Frage (folgen Sie nicht dem Hype!).
Mein erstes Argument ist der Preis: mitmproxy ist kostenlos (veröffentlicht unter MIT-Lizenz), wenn eine Lizenz für Charles Proxy rund 50 $ kostet.
Auch mitmproxy ist ein sehr mächtiges Werkzeug : es bietet nicht nur Optionen zum Umschreiben des Datenverkehrs, sondern ermöglicht Ihnen auch, Python-Skripte auszuführen, um Anforderungen und Antworten zu ändern. Dies ist sehr hilfreich, wenn Sie versuchen, Edge-Cases zu testen.
Zum Abschluss kann mitmproxy überall mit einer Weboberfläche oder in der Befehlszeile ausgeführt werden : Unabhängig vom Kontext gibt es gute Chancen, dass Sie es verwenden können.
Installation
Es gibt mehrere Möglichkeiten mitmproxy zu installieren. Die Verwendung von Brew ist der „Standard“ -Weg, aber ich persönlich bevorzuge die Verwendung über Docker : es hindert mich daran, mit Python-Versionen umzugehen, und hilft auch, meinen Mac sauber zu halten. Darüber hinaus ist es wirklich einfach und es sind keine besonderen Docker-Kenntnisse erforderlich.
Für die Installation können Sie jede Methode wählen, mit der Sie sich am wohlsten fühlen.
Verwenden von brew
Wenn brew bereits auf Ihrem Computer installiert ist und alles gut geht, sollte das Ausführen dieses einfachen Befehls ausreichen, um die Aufgabe zu erledigen :
brew install mitmproxy
Sobald mitmproxy installiert ist, können Sie direkt zum Abschnitt Let’s run mitmproxy springen.
Docker verwenden
Das Ausführen von mitmproxy mit dem offiziellen Docker-Image ist so einfach wie das Ausführen des folgenden Befehls :
docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy:4.0.4
Um zu vermeiden, dass die Zertifikate von mitmproxy jedes Mal auf Ihren Testgeräten installiert werden müssen, wird dringend empfohlen, den Zertifikatsordner des Containers mit einem lokalen Ordner zu teilen (mit dem Parameter -v
).
Auf diese Weise bleiben Zertifikate auch nach dem Beenden Ihres Docker-Containers erhalten.
docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4
Um die Verwendung dieses Befehls zu vereinfachen, fügen Sie einen Alias in Ihrem ~/.bash_profile
:
alias mitmproxy='docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4'
Und vergessen Sie nicht, source ~/.bash_profile
auszuführen, nachdem Sie die Datei bearbeitet haben.
Lassen Sie uns mitmproxy ausführen
Egal wie Sie es installiert haben, Sie sollten jetzt in der Lage sein, mitmproxy mit dem Befehl zu starten :
mitmproxy
Wenn das Programm startet, dann herzlichen Glückwunsch! Du kannst weitermachen!
Netzwerkeinstellungen auf dem Zielgerät
mitmproxy kann als Reverse Proxy, als transparenter Proxy oder als regulärer Proxy ausgeführt werden. Um die Dinge einfach zu halten, werden wir es als regulären Proxy verwenden.
Die Verwendung des Programms auf diese Weise ist sicherlich einfacher, bedeutet jedoch, dass Sie die Netzwerkeinstellungen des Zielgeräts ändern können, um einen Proxy festzulegen.
Dies ist wirklich einfach, wenn Sie Anforderungen von einem iOS- oder Android-Gerät überprüfen müssen, wird jedoch bei Geräten, die keine erweiterten Netzwerkeinstellungen bieten, komplizierter.
Folgen Sie je nach Zielgerät einfach dem entsprechenden Unter-Tutorial :
- Einrichten eines Proxys auf einem iOS-Gerät
- Einrichten eines Proxys auf einem Android-Gerät
- Einrichten eines Proxys auf einem tvOS-Gerät
Installieren des selbstsignierten Zertifikats
Wenn Sie mitmproxy starten, akzeptiert Ihr Gerät zu diesem Zeitpunkt HTTP-Datenverkehr, lehnt jedoch alle HTTPS-Anforderungen ab, die nicht direkt von der Server. Der Grund ist einfach: Ihr Gerät akzeptiert kein selbstsigniertes Zertifikat, es sei denn, Sie bitten es darum.
Um HTTPS-Anfragen abzufangen, müssen wir das von mitmproxy verwendete Zertifikat auf dem Zielgerät festlegen. Auf diese Weise kann Ihr Gerät gesicherte Anforderungen von Ihrem Computer anstelle des realen Servers akzeptieren.
Die Komplexität der Installation eines selbstsignierten Zertifikats hängt wirklich von der Art des Geräts ab, das Sie überprüfen müssen. Grundsätzlich geht es von “ sehr einfach “ bis “ nicht möglich „.
Folgen Sie je nach Zielgerät einfach dem entsprechenden Unter-Tutorial :
- Installieren eines selbstsignierten Zertifikats auf einem iOS-Gerät
- Installieren eines selbstsignierten Zertifikats auf einem Android-Gerät
- Installieren eines selbstsignierten Zertifikats auf einem tvOS-Gerät
Abfangen von Anrufen
Sobald das Zertifikat installiert ist, können Sie Anrufe abfangen. Sie können mitmproxy erneut starten mit :
mitmproxy
Öffnen Sie auf dem Zielgerät eine App und prüfen Sie, ob neue Zeilen im Terminal angezeigt werden.
Wenn Sie Anfragen sehen, dann herzlichen Glückwunsch! Alles ist eingerichtet und Sie können den Webverkehr über Ihr Telefon oder Tablet überprüfen.
Fehlerbehebung
Wenn nichts angezeigt wird und das Zielgerät keine Internetverbindung zu haben scheint, sollten Sie Folgendes überprüfen :
- befinden sich sowohl der Computer, auf dem mitmproxy ausgeführt wird, als auch das Zielgerät im selben Netzwerk?
- haben Sie versucht, mitmproxy neu zu starten?
- Sind die Proxy-Einstellungen auf dem Zielgerät korrekt eingestellt?
- Haben Sie das selbstsignierte Zertifikat auf dem Zielgerät aktiviert?
Um weiter zu gehen
Jetzt sollten Sie alles wissen, was Sie brauchen, um mitmproxy zu installieren und Ihr Zielgerät zu konfigurieren. Wenn Sie weiter gehen möchten, schauen Sie sich die folgenden Beiträge an :
- Nützliche Tipps für mitmproxy
- Erstellen von Skripten für mitmproxy