2015-12-23 13 views
27

Così ho impostato charles proxy per monitorare il traffico che esce dall'emulatore Android.config rete di emulazione Android

Ora quando apro un sito Web nel browser Android Ad esempio: - google.com vedo google.com nel proxy di charles.

Ma quando apro un'app (ad esempio l'app di instagram) nell'emulatore e se l'app effettua alcune chiamate di rete, vedo gli indirizzi IP sul proxy di charles e non i nomi di dominio.

a causa del quale l'applicazione mi dà un errore di qualcosa che è andato storto ecc

Qualcuno può dirmi come modificare il file di configurazione DNS del emulatore di Android in modo che invii i nomi degli host invece di indirizzi IP?

O qualsiasi altra soluzione a questo problema.

Grazie

+0

È il vostro emulatore di Android in esecuzione su Linux o Windows? Guarda /etc/resolv.conf su linux, puoi anche usare -dns-server xx.xx.xx.xx sulla riga di comando per impostarlo manualmente. Emette un messaggio di avviso che non riesce a trovare un server DNS? Sono sicuro che i pacchetti con indirizzi IP provengano da app come Instagram o altro? – ozborn

+0

@ozborn Sto usando mac. Sono sicuro che i pacchetti provengono da instagram e ho anche provato a configurare altri server DNS (8.8.8.8) senza alcun successo. Ti capita per caso come funzionano esattamente le reti nell'emulatore Android? Perché quando provo ad accedere ai siti dal browser Android sono in grado di vedere i nomi degli host sul monitoraggio del proxy di charles. Ma quando uso gli indirizzi IP delle app vengono fuori. – azero0

+0

So come funzionano il DNS e il networking, ma non ho ancora fatto casino con l'emulatore di Android. Non sono sicuro che il DNS sia anche il problema o che ci si aspetterebbe di vedere il traffico DNS con il tuo proxy charles, se la tua rete è configurata correttamente e tu riavrai gli indirizzi router ragionevoli dal tuo server DNS, la tua app dovrebbe funzionare. Se esegui "nslookup google.com 10.0.2.3" sulla tua console di emulazione, cosa ottieni? – ozborn

risposta

0

non c'è modo di cambiare le configurazioni DNS del emulatore di Android che può ottenere i nomi degli host invece di indirizzi IP, l'unica possibilità di utilizzare proxy è spiegare in altri thread SO here.

Sono sicuro che i pacchetti provengono da instagram e/o forse usano un firewall per motivi di sicurezza.

0

Non è possibile con l'emulatore ma è possibile utilizzare GENYMOTION per quello. Genymotion è un ottimo strumento per usare l'emulatore online.

enter image description here

È possibile impostare proxy> Impostazioni- rete.

enter image description here

prova che .hope questo vi aiuterà.

+0

So che funziona con genymotion Volevo farlo funzionare con l'emulatore Android regolare .. – azero0

0

Per Linux User

Non possiamo in grado di utilizzare l'emulatore iniziato da Android Studio Dobbiamo cominciare emulatore di terminale utilizzando questo 2 comandi

prima mossa per strumenti SDK Android dir

$ cd /home/..../Android/Sdk/tools 

Secondo avviare l'emulatore utilizzando questo cmd

./ Emulatore -avd Emulator_name -http-proxy http: // Ur indirizzo IP: porta/

Emulator_name: aperto AVD Direttore seconda colonna otterrete nomi Emulator, accanto è necessario sostituire gli spazi in tra il nome con sottolineatura

come Nexus 5 API 22 ->Nexus_5_API_22

esempio: $ ./emulator -avd Nexus_5_API_22 -http-proxy http://12.1.0.222:8888/

-2

È possibile utilizzare il comando "ping" per ottenere l'indirizzo IP.

1

All'interno dell'emulatore - vai alle impostazioni -> rete & internet -> rete mobile -> AccessPointNames. e poi scegli la tua rete per modificarla e inserisci l'IP e la porta del computer di Charles.

Ricordarsi di aprire l'emulatore con poxy. emulator with proxy

1

è possibile configurare un proxy dalla riga di comando con l'opzione -http-proxy all'avvio dell'emulatore. In questo caso, è necessario specificare le informazioni proxy in in uno dei seguenti formati:

http://<machineName>:<port> 

o

http://<username>:<password>@<machineName>:<port> 

L'opzione -http-proxy costringe l'emulatore di utilizzare la specifica HTTP/HTTPS proxy per tutti in uscita Connessioni TCP. Il reindirizzamento per UDP non è attualmente supportato.

In alternativa, è possibile definire la variabile di ambiente http_proxy sul valore che si desidera utilizzare. In questo caso, non è necessario specificare un valore per il comando -http-proxy - l'emulatore controlla il valore della variabile d'ambiente http_proxy all'avvio e ne utilizza automaticamente il valore, se definito.

È possibile utilizzare l'opzione -debug-proxy per diagnosticare problemi di connessione proxy.

È possibile ottenere ulteriori dettagli su questo argomento qui:

https://developer.android.com/studio/run/emulator-networking.html