2012-06-20 5 views

risposta

64

Personalmente, io uso Charles per quel genere di cose.
Quando è abilitata, sarà monitorare ogni richiesta di rete, visualizzando estesi dettagli della richiesta, incluso il supporto per SSL e vari formati di richiesta/reponse, come JSON, ecc ...

È anche possibile configurarlo per fiutare le richieste solo per specifiche server, non tutto il traffico.

È un software commerciale, ma esiste una versione di prova e IMHO è sicuramente un ottimo strumento.

+1

Davvero facile da usare e configurare e fa esattamente quello che volevo, grazie! –

+1

Non funziona facilmente quando il tuo server è protetto da TLS, che dovrebbe essere. – carbocation

+0

Ho provato Charles ma non sono stato in grado di monitorare molto bene il traffico in uscita. Ad esempio, non posso modificare la formattazione della mia richiesta POST in JSON –

24

Utilizzare lo network activity monitor instrument integrato.

+3

Grazie, sembra fantastico ma non riesco a trovarlo dov'è (mi dispiace per essere un principiante, ma ho ottenuto il mio primo Mac due giorni fa ...) . –

+11

Grazie! Giocherò con questo, ma a prima vista non riuscivo a trovare il modo di vedere il contenuto di ciò che esce e torna (intestazione della richiesta + contenuto e risposta come in Firebug o l'equivalente su Chrome/Safari). Forse è da qualche parte però, continuerò a scavare. –

+0

Ragazzi, avete qualche consiglio su come farlo usando questo strumento? –

23

Un proxy man-in-the-middle, come suggerito da altre risposte, è una buona soluzione se si desidera vedere solo il traffico HTTP/HTTPS. Burp Suite è abbastanza buono. Tuttavia, potrebbe essere un problema configurare Non sono sicuro di come convincere il simulatore a parlarne. Potrebbe essere necessario impostare il proxy sul tuo Mac locale sull'istanza di un server proxy per poterlo intercettare, poiché il simulatore utilizzerà l'ambiente del tuo Mac locale.

La soluzione migliore per lo sniffing dei pacchetti (sebbene funzioni solo per i dispositivi iOS e non per il simulatore) rvictl. This blog post ha una bella recensione. In sostanza si fa:

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

Poi si annusare l'interfaccia che crea con con Wireshark (o il vostro strumento preferito), e quando hai finito spegnere l'interfaccia con:

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

questo è bello perché se vuoi sniffare il simulatore di pacchetti, devi passare il traffico al tuo Mac locale, ma lo standard rvictl crea un'interfaccia virtuale che ti mostra solo il traffico dal dispositivo iOS che hai collegato alla porta USB.

+1

+1 per Burp Suite, e nessun problema per configurarlo: https: //www.engadget.com/2011/02/21/how-to-inspect-ioss-http-traffic-without-spend-a-dime/Ci vuole meno di 10 minuti – Vladimir

3

Se si dispone di connessione via cavo e Mac, allora non è semplice e potente metodo:

  1. installare gratis Wireshark, assicurarsi che sia in grado di catturare i dispositivi con (e avete bisogno di fare questo dopo ogni computer riavviare):!

    sudo chmod 644/dev/BPF *

  2. Ora condividere la rete con wifi. Preferenze di sistema> Condivisione> Condivisione Internet. Verifica di avere "Condividi le tue connessioni da: Ethernet" e utilizza: Wi-Fi. Potresti voler configurare anche la sicurezza wifi, non disturba il monitoraggio dei dati.

  3. Collegare il telefono alla rete appena creata. Ho bisogno di diversi tentativi qui. Se il telefono non desidera connettersi, attiva il Wi-Fi di Mac, quindi ripeti il ​​passaggio 2 e sii paziente.

  4. Start Wireshark acquisisce l'interfaccia wireless con Wireshark, probabilmente è "en1". Filtra gli indirizzi IP e/o le porte necessari. Quando trovi un pacchetto che è interessante, selezionalo, fai clic con il tasto destro del mouse (menu di scelta rapida)> Segui Stream TCP e vedi una bella rappresentazione testuale delle richieste e delle risposte.

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

+0

Puoi usare questo con il tuo simulatore? Non ho ancora l'app sul mio telefono. –

+0

@Joshua Dance puoi usarlo con l'emulatore, se richiede la rete esterna. Le connessioni a localhost non possono essere tracciate con wireshark, poiché non passano il "filo" (scheda di rete) – JaakL

16

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

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

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

Non proprio come GUI-tastic come Charles, ma fa tutto ciò di cui ho bisogno, è gratuito e gestito. Roba buona, e abbastanza semplice se hai già usato alcuni strumenti da riga di comando.

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

+0

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

0

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

E 'un po' di dolore per l'installazione, ma una volta che lo si fa funzionare bene. Assicurati di utilizzare Safari invece di Chrome per utilizzarlo però.

-2
+0

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

+0

@KevinR, 1. Telerik ha la versione beta di Fiddler per OS X 2. In nessuna parte della domanda viene detto che la scelta è limitata a OS X http://www.telerik.com/blogs/using-fiddler -with-apple-ios-devices –

+1

@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. Installare WireShark
  2. ottenere l'indirizzo IP dal monitor di rete Xcode
  3. ascoltare interfaccia wifi
  4. filtro set ip.addr == 192.168.1.122 in WireShark