2015-10-03 16 views
15

Nella mia app, sto usando vari SDK di terze parti che effettuano chiamate di rete (richieste HTTP) in una forma o nell'altra. Senza modificare questo codice, posso scrivere codice separatamente all'interno dell'applicazione per intercettare tutte le richieste GET e POST che sta facendo la mia app?Come monitorare le richieste HTTP (get, post etc) che la mia app sta facendo in Android

voglio registrare queste chiamate HTTP nella mia app

Sono consapevole di usare Fiddler e Charles proxy tools ma che è al di fuori della app, ma questo non funzionerà perché non riesco a registrare queste chiamate HTTP nella mia app .

C'è un modo per farlo?

EDIT: Sto utilizzando Google Analytics SDK e Facebook SDK nel mio codice. Voglio monitorare tutte le chiamate di rete che questi SDK stanno facendo dalla mia app

+0

Vuoi intercettare la richiesta o la risposta? –

+0

Pubblica alcuni dettagli del tuo codice di prova corrente o esempi di ciò che hai provato. Inoltre, spiega perché è necessario utilizzare SDK di terze parti anziché i metodi incorporati. – Tigger

+0

@Tigger - Sto utilizzando l'SDK di Google Analytics e l'SDK di Facebook nel mio codice. Voglio monitorare tutte le chiamate di rete che questi SDK stanno facendo dalla mia app e possibilmente essere in grado di registrare/modificare le richieste/risposte. – atmaish

risposta

6

On non radicato telefono è possibile utilizzare il proxy del sistema operativo Android e reindirizzare il traffico. Ma alcune app non lo rispettano. Fa collegamenti diretti Qualche ritocco potrebbe essere fatto. Usa Drony con la modalità VPN per reindirizzare tutto il traffico verso SandroProxy. Ecco il video su come catturare il traffico con SandroProxy SandroProxy with Chrome devtools SandroProxy può anche catturare i pcapfile. Può anche fare ssl mitm sul flusso di pcap. dal supporto SandroProxy

+0

Buono. sta funzionando –

2

Charles proxy è un buon modo.

Altri includono se l'app utilizza la classe di rete singleton (che dovrebbe idealmente), creare una funzione per get e una per post. Chiama queste funzioni dalle tue classi e usa log.d per emettere i dati sulla console. È possibile tenere traccia della risposta richiesta o del tempo impiegato.

+1

Come ho già detto, non posso usare il proxy Charles perché ho bisogno di farlo dall'app. Inoltre, non ci può essere una classe singleton dato che queste chiamate saranno effettuate dal rispettivo SDK. Il proxy di – atmaish

+0

Charles è configurabile per l'app – Kay

+0

Sono d'accordo, ma quello che mi serve qui è qualche versione del proxy Charles (qualche sdk forse?) Che io posso inserire nella mia app e spedire. Possibile? – atmaish

0

Se sradicare il dispositivo o in esecuzione su di debug (ADB), allora forse questo aiuterà: http://code.tutsplus.com/tutorials/analyzing-android-network-traffic--mobile-10663

Altrimenti non credo che la sua possibile fare ciò che si vuole fare. Ma è possibile monitorare roba rete generale come:

Per tutte le statistiche di traffico vedi:
https://developer.android.com/reference/android/net/TrafficStats.html (basta passare nella tua app id utente)

Per lo stato della rete di monitoraggio:
https://developer.android.com/reference/android/net/ConnectivityManager.html

1

Se si è specificamente alla ricerca di un'app in grado di registrare le chiamate HTTP. Android Snooper libreria può essere la soluzione che stai cercando.

0

https://github.com/jgilfelt/chuck/

si aggiunge una nuova applicazione che invia le notifiche ogni volta che una richiesta di rete è fatto, e si possono vedere i dettagli della richiesta.

https://github.com/facebook/stetho

che consente di utilizzare gli strumenti di Chrome dev per monitorare le richieste create da un app Android.(tra le altre caratteristiche interessanti)

Problemi correlati