Überwachen von Netzwerkanrufen mit iOS Simulator


113

Ich versuche, Anrufe von einer App auf meinen Server genau wie Firebug zu überwachen. Ich konnte keinen Weg finden, dies in iOS Simulator oder in xCode zu sehen.

Gibt es eine Möglichkeit, dies zu tun, ohne den gesamten Verkehr zu schnüffeln? Wenn nein, welches Tool würden Sie vorschlagen?

Antworten:


84

Persönlich benutze ich Charles für solche Sachen.
Wenn diese Option aktiviert ist, werden alle Netzwerkanforderungen überwacht und erweiterte Anforderungsdetails angezeigt, einschließlich Unterstützung für SSL und verschiedene Anforderungs- / Antwortformate wie JSON usw.

Sie können es auch so konfigurieren, dass nur Anforderungen an bestimmte Server abgehört werden, nicht der gesamte Datenverkehr.

Es ist kommerzielle Software, aber es gibt eine Testversion, und meiner Meinung nach ist es definitiv ein großartiges Werkzeug.


1
Wirklich einfach zu bedienen und zu konfigurieren und macht genau das, was ich wollte, danke!
Mad Echet

3
Funktioniert nicht einfach, wenn Ihr Server durch TLS geschützt ist, wie es sein sollte.
Carbokation

Ich habe es mit Charles versucht, aber ich konnte den ausgehenden Verkehr nicht sehr gut überwachen. Zum Beispiel konnte ich die Formatierung meiner POST-Anfrage nicht in JSON ändern
Jesus Rodriguez

24

Ein Man-in-the-Middle-Proxy ist, wie in anderen Antworten vorgeschlagen, eine gute Lösung, wenn Sie nur HTTP / HTTPS-Verkehr sehen möchten. Burp Suite ist ziemlich gut. Die Konfiguration kann jedoch schwierig sein. Ich bin mir nicht sicher, wie Sie den Simulator davon überzeugen würden, mit ihm zu sprechen. Möglicherweise müssen Sie den Proxy auf Ihrem lokalen Mac auf Ihre Instanz eines Proxyservers einstellen, damit dieser abfängt, da der Simulator die Umgebung Ihres lokalen Mac verwendet.

Die beste Lösung für das Paket-Sniffing (obwohl es nur für tatsächliche iOS-Geräte funktioniert , nicht für den Simulator), die ich gefunden habe, ist die Verwendung rvictl. Dieser Blog-Beitrag hat eine schöne Zusammenfassung. Grundsätzlich tun Sie:

rvictl -s <iphone-uid-from-xcode-organizer>

Dann schnüffeln Sie an der Schnittstelle, die mit Wireshark (oder Ihrem Lieblingswerkzeug) erstellt wurde, und wenn Sie fertig sind, schließen Sie die Schnittstelle mit:

rvictl -x <iphone-uid-from-xcode-organizer>

Dies ist hilfreich, da Sie, wenn Sie den Simulator paketschnüffeln möchten, auch durch den Datenverkehr zu Ihrem lokalen Mac waten müssen, aber rvictleine virtuelle Schnittstelle erstellen, die nur den Datenverkehr von dem iOS-Gerät anzeigt, das Sie an Ihren USB-Anschluss angeschlossen haben Hafen.


1
+1 für Burp Suite, und keine Mühe, es zu konfigurieren: engadget.com/2011/02/21/… Es dauert weniger als 10 Minuten
Vladimir

20

Ein kostenloses Open-Source-Proxy-Tool, das problemlos auf einem Mac ausgeführt werden kann, ist Mitmproxy .

Die Website enthält Links zu einer Mac-Binärdatei sowie den Quellcode auf Github.

Die Dokumente enthalten eine sehr hilfreiche Einführung zum Laden eines Zertifikats in Ihr Testgerät, um den HTTPS-Verkehr anzuzeigen.

Nicht ganz so GUI-schmackhaft wie Charles, aber es macht alles, was ich brauche und es ist kostenlos und gepflegt. Gutes Zeug und ziemlich unkompliziert, wenn Sie zuvor einige Befehlszeilentools verwendet haben.

UPDATE: Ich habe gerade auf der Website festgestellt, dass Mitmproxy als Homebrew-Installation verfügbar ist. Einfacher geht es nicht.


Haben Sie Glück gehabt, mitm für den iOS-Simulator zu verwenden? Ich habe es eingerichtet, aber der Datenverkehr von meinem Computer außerhalb des Simulators wird ebenfalls abgefangen, was nicht der beste ist. Die Verwendung auf einem tatsächlichen Gerät ist erstaunlich. Ich mache es schon seit Jahren.
Atreat

mitmweb ist die webbasierte Benutzeroberfläche von mitmproxy, mit der der HTTP-Verkehr interaktiv überprüft und geändert werden kann. Wie Mitmproxy unterscheidet es sich von Mitmdump darin, dass alle Flows im Speicher gespeichert werden.
Dies

15

Kürzlich habe ich ein Git Repo gefunden , das es einfach macht.

Du kannst es versuchen.

Dies ist der Screenshot einer App: Geben Sie hier die Bildbeschreibung ein

Freundliche Grüße.


Während Bagel großartig und einfach ist, habe ich kürzlich festgestellt, dass es auch zwischengespeicherte Anfragen anzeigt. Wenn Sie beispielsweise die tatsächlich übertragenen Bytes kennen möchten, ist dies nicht hilfreich.
BlackWolf

10

Xcode bietet CFNetwork Diagnostic Logging. Apple doc

Fügen Sie zum Aktivieren CFNETWORK_DIAGNOSTICS=3im Abschnitt Umgebungsvariable Folgendes hinzu:

Geben Sie hier die Bildbeschreibung ein

Dies zeigt Anfragen von der App mit ihren Headern und ihrem Text an. Beachten Sie, dass OS_ACTIVITY_MODEdies enablewie gezeigt eingestellt sein muss. Andernfalls wird keine Ausgabe in der Konsole angezeigt.


4

Wireshark es

Wählen Sie Ihre Schnittstelle

Geben Sie hier die Bildbeschreibung ein

Hinzufügen filterstarten diecapture

Geben Sie hier die Bildbeschreibung ein


Testen

Klicken Sie auf eine Aktion oder Schaltfläche, die eine GET / POST / PUT / DELETE-Anforderung auslösen würde

Sie werden es im Wireshark sehen

Geben Sie hier die Bildbeschreibung ein

Wenn Sie weitere Details zu einem bestimmten Paket erfahren möchten, wählen Sie es einfach aus und klicken Sie auf Folgen> HTTP-Stream .

Geben Sie hier die Bildbeschreibung ein

hoffe das hilft anderen !!


3

Wenn Sie eine Kabelverbindung und einen Mac haben, gibt es eine einfache und leistungsstarke Methode:

  1. Installieren Sie kostenlos Wireshark, stellen Sie sicher, dass es Geräte mit erfassen kann (und Sie müssen dies nach jedem Neustart des Computers tun !):

    sudo chmod 644 / dev / bpf *

  2. Teilen Sie jetzt Ihr Netzwerk mit WLAN. Systemeinstellungen> Freigabe> Internetfreigabe. Überprüfen Sie, ob Sie "Freigeben Sie Ihre Verbindungen von: Ethernet" haben und verwenden Sie: Wi-Fi. Möglicherweise möchten Sie auch eine WLAN-Sicherheit konfigurieren, die Ihre Datenüberwachung nicht stört.

  3. Verbinden Sie Ihr Telefon mit Ihrem neu erstellten Netzwerk. Ich brauche hier ziemlich oft mehrere Versuche. Wenn das Telefon keine Verbindung herstellen möchte, schalten Sie das WLAN des Mac aus, wiederholen Sie Schritt 2 oben und haben Sie etwas Geduld.

  4. Starten Sie Wireshark erfassen Sie Ihre drahtlose Schnittstelle mit Wireshark, es ist wahrscheinlich "en1". Filtern Sie Ihre benötigten IP-Adressen und / oder Ports. Wenn Sie ein interessantes Paket finden, wählen Sie es aus, klicken Sie mit der rechten Maustaste (Kontextmenü)> TCP-Stream folgen, und Sie sehen eine schöne Textdarstellung der Anforderungen und Antworten.

Und was ist das Beste: Genau der gleiche Trick funktioniert auch für Android!


Können Sie dies mit Ihrem Simulator verwenden? Ich habe die App noch nicht auf meinem Handy.
Joshua Dance

@Joshua Dance Sie können es mit Emulator verwenden, wenn es externe Netzwerkanforderung tut. Verbindungen zu localhost können nicht mit Wireshark zurückverfolgt werden, da sie nicht die "Wire" (Netzwerkkarte)
passieren

1

Wie funktioniert das auf einem OSX-Rechner? Zwei der Tags sind xcode und ios-simulator.
Kevin R

@ KevinR, 1. Telerik hat eine Beta-Version von Fiddler für OS X 2. Nirgendwo in der Frage wird gesagt, dass die Auswahl auf OS X beschränkt ist. Telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov

2
@KonstantinSalavatov, Der Betreff des ursprünglichen Beitrags lautet "Überwachen von Netzwerkanrufen mit iOS Simulator". Die iOS Simulator läuft nur auf OS X, also ja, die Wahl ist begrenzt auf OS X.
ChillyPenguin

1
+1 Ich denke, Sie sollten dies jetzt verbessern, da Mac OS X jetzt unterstützt wird! : D telerik.com/fiddler#SupportedTechnologies und hier telerik.com/download/fiddler/fiddler-osx-beta
David Noreña

1
  1. Installieren Sie WireShark
  2. IP-Adresse vom Xcode-Netzwerkmonitor abrufen
  3. Hören Sie sich die WLAN-Schnittstelle an
  4. Setzen Sie den Filter ip.addr == 192.168.1.122 in WireShark

0

Eine gute Lösung, wenn Sie an die Chrome Inspector-Tools gewöhnt sind, ist der Pony-Debugger: https://github.com/square/PonyDebugger

Das Einrichten ist etwas mühsam, aber wenn Sie es einmal gemacht haben, funktioniert es gut. Stellen Sie jedoch sicher, dass Sie Safari anstelle von Chrome verwenden, um es zu verwenden.


0

Ich benutze Netfox. Es ist sehr einfach zu bedienen und zu integrieren. Sie können es auf Simulator und Gerät verwenden. Es zeigt alle Anfragen und Antworten. Es unterstützt JSON-, XML-, HTML-, Image- und andere Arten von Antworten. Sie können Anfragen, Antworten und das vollständige Protokoll über die Standardfreigabeformate von IOS (Google Mail, WhatsApp, E-Mail, Slack, SMS usw.) freigeben.

Sie können auf GitHub nachsehen: https://github.com/kasketis/netfox

Netfox bietet einen schnellen Überblick über alle ausgeführten Netzwerkanforderungen, die von Ihrer iOS- oder OSX-App ausgeführt werden. Es erfasst alle Anfragen - natürlich Ihre, Anfragen von Bibliotheken von Drittanbietern (wie AFNetworking, Alamofire oder anderen), UIWebViews und mehr

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.