Come monitorare le chiamate di rete effettuate da iOS Simulator


113

Sto cercando di monitorare le chiamate da un'app al mio server proprio come fa Firebug. Non sono riuscito a trovare un modo per vederlo in iOS Simulator o in xCode.

C'è un modo per farlo senza annusare tutto il traffico? Se no, quale strumento suggeriresti?

Risposte:


84

Personalmente, uso Charles per quel genere di cose.
Se abilitato, monitorerà ogni richiesta di rete, visualizzando i dettagli della richiesta estesa, incluso il supporto per SSL e vari formati di richiesta / risposta, come JSON, ecc ...

È inoltre possibile configurarlo per rilevare solo le richieste a server specifici, non l'intero traffico.

È un software commerciale, ma c'è una prova e IMHO è decisamente un ottimo strumento.


1
Davvero facile da usare e configurare e fa esattamente quello che volevo, grazie!
Mad Echet,

3
Non funziona facilmente quando il tuo server è protetto da TLS, come dovrebbe essere.
carbocationio

Ho provato Charles ma non sono riuscito a monitorare molto bene il traffico in uscita. Ad esempio, non potrei modificare la formattazione della mia richiesta POST in JSON
Jesus Rodriguez

24

Un proxy man-in-the-middle, come suggerito da altre risposte, è una buona soluzione se vuoi vedere solo il traffico HTTP / HTTPS. Burp Suite è abbastanza buono. Potrebbe essere difficile da configurare. Non sono sicuro di come convinceresti il ​​simulatore a parlargli. Potrebbe essere necessario impostare il proxy sul tuo Mac locale sulla tua istanza di un server proxy in modo che possa intercettare, poiché il simulatore utilizzerà l'ambiente del tuo Mac locale.

La migliore soluzione per lo sniffing dei pacchetti (sebbene funzioni solo per i dispositivi iOS effettivi , non per il simulatore) che ho trovato è quella di utilizzare rvictl. Questo post del blog ha una bella recensione. Fondamentalmente fai:

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

Quindi annusi l'interfaccia che crea con Wireshark (o il tuo strumento preferito) e quando hai finito chiudi l'interfaccia con:

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

Questo è bello perché se vuoi analizzare i pacchetti del simulatore, devi guadare il traffico anche sul tuo Mac locale, ma rvictlcrea un'interfaccia virtuale che ti mostra solo il traffico dal dispositivo iOS che hai collegato alla tua USB porta.


1
+1 per Burp Suite, e nessun problema per configurarlo: engadget.com/2011/02/21/… Ci vogliono meno di 10 min
Vladimir

20

Uno strumento proxy gratuito e open source che funziona facilmente su un Mac è mitmproxy .

Il sito Web include collegamenti a un file binario Mac, nonché il codice sorgente su Github.

I documenti contengono un'introduzione molto utile al caricamento di un certificato nel dispositivo di prova per visualizzare il traffico HTTPS.

Non abbastanza GUI-tastic come Charles, ma fa tutto ciò di cui ho bisogno ed è gratuito e mantenuto. Roba buona e piuttosto semplice se hai già utilizzato alcuni strumenti a riga di comando.

AGGIORNAMENTO: Ho appena notato sul sito Web che mitmproxy è disponibile come installazione homebrew. Non potrebbe essere più facile.


Hai avuto fortuna con mitm per il simulatore iOS? L'ho configurato ma viene catturato anche il traffico dal mio computer al di fuori del simulatore, il che non è il massimo. Usarlo su un dispositivo reale è sorprendente. L'ho fatto per anni.
atreat

mitmweb è l'interfaccia utente basata sul web di mitmproxy che consente l'esame interattivo e la modifica del traffico HTTP. Come mitmproxy, differisce da mitmdump in quanto tutti i flussi sono conservati in memoria, il che significa che è inteso per prendere e manipolare campioni di piccole
Raunak

15

Recentemente ho trovato un repository git che lo rende facile.

Puoi provarlo.

Questo è lo screenshot di un'app: inserisci qui la descrizione dell'immagine

I migliori saluti.


Sebbene Bagel sia fantastico e semplice, di recente ho notato che mostrerà anche le richieste memorizzate nella cache. Quindi, ad esempio, se vuoi conoscere gli effettivi byte trasferiti, questo non è utile.
BlackWolf

10

Xcode fornisce la registrazione diagnostica CFNetwork. Doc di Apple

Per abilitarlo, aggiungi CFNETWORK_DIAGNOSTICS=3nella sezione Variabile d'ambiente:

inserisci qui la descrizione dell'immagine

Questo mostrerà le richieste dall'app con le sue intestazioni e il corpo. Notare che OS_ACTIVITY_MODEdeve essere impostato enablecome mostrato. In caso contrario, nessun output verrà visualizzato sulla console.


4

Wireshark it

Seleziona la tua interfaccia

inserisci qui la descrizione dell'immagine

Aggiungi filteravvia il filecapture

inserisci qui la descrizione dell'immagine


analisi

Fare clic su qualsiasi azione o pulsante che attiverà una richiesta GET / POST / PUT / DELETE

Lo vedrai elencato in WireShark

inserisci qui la descrizione dell'immagine

Se vuoi conoscere maggiori dettagli su un pacchetto specifico, selezionalo e Segui> HTTP Stream .

inserisci qui la descrizione dell'immagine

spero che questo aiuti gli altri !!


3

Se hai una connessione via cavo e un Mac, esiste un metodo semplice e potente:

  1. installa Wireshark gratuito, assicurati che possa catturare dispositivi con (e devi farlo dopo ogni riavvio del computer !):

    sudo chmod 644 / dev / bpf *

  2. Ora condividi la tua rete con Wi-Fi. Preferenze di sistema> Condivisione> Condivisione Internet. Verificare di disporre di "Condividi le connessioni da: Ethernet" e di utilizzare: Wi-Fi. Potresti voler configurare anche un po 'di sicurezza wifi, non disturba il monitoraggio dei dati.

  3. Collega il telefono alla rete appena creata. Ho bisogno abbastanza spesso di diversi tentativi qui. Se il telefono non vuole connettersi, disattivare il wifi del Mac, quindi ripetere il passaggio 2 sopra e sii paziente.

  4. Avvia Wireshark e acquisisci la tua interfaccia wireless con Wireshark, probabilmente è "en1". Filtra gli indirizzi IP e / o le porte necessari. Quando trovi un pacchetto interessante, selezionalo, fai clic con il pulsante destro del mouse (menu contestuale)> Segui flusso TCP e vedrai una bella rappresentazione testuale delle richieste e delle risposte.

E qual è il migliore: esattamente lo stesso trucco funziona anche per Android!


Puoi usarlo con il tuo simulatore? Non ho ancora l'app sul telefono.
Joshua Dance

@ Joshua Dance puoi usarlo con l'emulatore, se fa richiesta di rete esterna. Le connessioni a localhost non possono essere tracciate con WireShark, in quanto non passano il "filo" (scheda di rete)
JaakL

1

Come funzionerà su una macchina OSX? Considerando due dei tag sono xcode e ios-simulator.
Kevin R

@KevinR, 1. Telerik ha la versione beta di Fiddler per OS X 2. Da nessuna parte nella domanda si dice che la scelta è limitata a OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov

2
@KonstantinSalavatov, L'oggetto del post originale è "Come monitorare le chiamate di rete effettuate da iOS Simulator". Il simulatore iOS funziona solo su OS X, quindi sì, la scelta è limitata a OS X.
ChillyPenguin

1
+1 Penso che dovresti votare a favore di questo ora, perché ora c'è il supporto per Mac OS X! : D telerik.com/fiddler#SupportedTechnologies e qui telerik.com/download/fiddler/fiddler-osx-beta
David Noreña

1
  1. Installa WireShark
  2. ottenere l'indirizzo ip dal monitor di rete xcode
  3. ascolta l'interfaccia wifi
  4. imposta il filtro ip.addr == 192.168.1.122 in WireShark

0

Una buona soluzione se sei abituato agli strumenti di Chrome Inspector è il debugger di Pony: https://github.com/square/PonyDebugger

È un po 'una seccatura da configurare, ma una volta che lo fai funziona bene. Assicurati di utilizzare Safari invece di Chrome per usarlo.


0

Uso netfox. È molto facile da usare e integrare. Puoi usarlo su simulatore e dispositivo. Mostra tutte le richieste e le risposte. Supporta JSON, XML, HTML, immagine e altri tipi di risposte. Puoi condividere richieste, risposte e log completo tramite i formati di condivisione predefiniti di IOS (Gmail, WhatsApp, e-mail, Slack, sms, ecc.)

Puoi controllare su GitHub: https://github.com/kasketis/netfox

Netfox fornisce una rapida occhiata a tutte le richieste di rete eseguite eseguite dalla tua app iOS o OSX. Afferra tutte le richieste, ovviamente le tue, le richieste da librerie di terze parti (come AFNetworking, Alamofire o altro), UIWebViews e altro

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.