Come configurare le impostazioni proxy dell'emulatore Android


110

Voglio usare il browser all'interno dell'emulatore Android e voglio usare le impostazioni proxy sulla mia macchina. Come posso configurarlo?

Leggendo gli ottimi manuali di Android, mi dicono che dovrei avviare Android utilizzando il seguente comando:

emulator -avd myavd -http-proxy http://168.192.1.2:3300

Ma non sono ancora in grado di utilizzare il browser dell'emulatore. Tieni presente che sto utilizzando l'indirizzo IP per il mio server proxy.

Che cosa sto facendo di sbagliato?

Risposte:


147

Il modo più semplice e migliore è fare quanto segue: Questo è stato fatto per Android Emulator 2.2

  1. Fare clic su Menu
  2. Fare clic su Impostazioni
  3. Fare clic su Wireless e reti
  4. Vai a Reti mobili
  5. Vai a Nomi punti di accesso
  6. Qui troverai Telkila Internet, fai clic su di esso.
  7. Nella sezione Modifica punto di accesso, inserisci "proxy" e "porta"
  8. Fornisci anche il nome utente e la password, gli altri campi lasciali vuoti.

Non funziona con il caso d'uso più comune di esecuzione di Fiddler2 o altro proxy su localhost ... probabilmente aggiungendo il port forwarding, ma anche questo è un
problema

1
Non funziona sull'emulatore Android 2.3.3, ma per me funziona sull'emulatore 4.1.2.
azgolfer

24
Questo non funziona più su immagini Android 5 (api 21)
neomega

questa risposta dovrebbe essere quella accettata! Funziona con Burpsuite su Mac!
alchimista

questo ha funzionato anche con Volley! aggiunto nel caso qualcuno lo stesse cercando di convincere.
computingfreak

58

-http-proxy su Android Emulator

On Run Configuration> Android Application> App> Target> Additional Emulator Command Line Options: -http-proxy http: //xx.xxx.xx.xx: 8080


che versione di eclissi è quella? non vedo questa interfaccia :(
Salman von Abbas

1
Hai fatto scorrere verso il basso?
Darpan

configura anche il tuo emulatore
Badre

3
per proxy con nome utente e password utilizzare questo formato:-http-proxy http://username:password@host:port
ashakirov

errore emulator is not recognized as a commandnel mio caso .. devo aggiungere qualcosa nella variabile PATH ??. Sto utilizzando Android Studio 1.0.1 e ho un proxy nel sistema del mio ufficio.
Anil Bhaskar

40

Ora c'è un'impostazione nell'emulatore Android inserisci qui la descrizione dell'immagine



Ha funzionato per me. Il mio ambiente: ambiente MAC OS + emulatore Android e paralleli Windows 7 con proxy fiddler
Arthur Menezes

7
Questa impostazione non ha mai funzionato per me. Devo sempre avviare l'emulatore con il comando -http-proxy per farlo funzionare.
gsingh2011

2
Questo menu ha un bug ricorrente che mi sta facendo impazzire dalla metà del 2017. A volte funziona, a volte non sullo stesso AVD. Solo ricreare l'AVD potrebbe aiutare in modo affidabile. A volte il proxy cade nel bel mezzo di una sessione! Nell'ambiente aziendale ciò significa che sto per essere bloccato dal mio account a causa di quella merda.
halxinate

Tuttavia, sembra che per ora abbia trovato la soluzione: configurare quel falso hotspot wifi come sopra per utilizzare il proxy aiuta anche se il mio proxy richiede l'autenticazione, che la configurazione dell'hotspot non ha affatto. Solo l'URL e la porta hanno aiutato a ripristinare immediatamente la connettività persa.
halxinate

20

Ho provato dopo aver rimosso http nel nome del server e ha funzionato per me.

emulator -avd myavd -http-proxy 168.192.1.2:3300


Funziona solo per il browser, ma nessuna richiesta di app passa attraverso il proxy :(
Felipe Sabino

14

Ciò non aiuterà il browser, ma puoi anche definire un proxy nel codice da utilizzare con un client HTTP:

// proxy
private static final String PROXY = "123.123.123.123";
// proxy host
private static final HttpHost PROXY_HOST = new HttpHost(PROXY, 8080);
HttpParams httpParameters = new BasicHttpParams();
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, PROXY_HOST);

1
Non dovresti mettere "127.0.0.1" per String PROXY.
Michaël

kuester2000 dare un'occhiata alla mia domanda qui stackoverflow.com/questions/31723494/...
Zar E Ahmer

9

Su Android Studio:

Fare clic su Modifica configurazione nel menu App

inserisci qui la descrizione dell'immagine

  1. Vai su App o App Android (come impostazioni predefinite)
  2. tocca Debugger
  3. Tocca il comando di avvio di LLDB
  4. Tocca +
  5. Aggiungi il tuo comando -http-proxy http://168.192.1.2:3300

inserisci qui la descrizione dell'immagine

questo è tutto.

Altre cose interessanti se vuoi usare l'IP del tuo PC, usa questo comando:

  • -http-proxy "$(ipconfig getifaddr en0)":8888 su MacOS
  • -http-proxy "$(hostname -i)":8888 su Linux

4

Per impostare il server proxy dobbiamo impostare l' APNSimpostazione. Per fare questo:

  1. Vai a Impostazioni

  2. Vai a wireless e reti

  3. Vai alle reti mobili

  4. Vai ai nomi dei punti di accesso. Usa il menu per aggiungere nuovi APN

    Imposta Proxy = localhost

    Imposta Port = porta che stai utilizzando per creare un server proxy, nel mio caso è 8989

    Per impostare Nome e apn ecco il link:

    In base alla tua simcarta puoi vedere la tabella


"l'autenticazione tramite il server proxy non è riuscita" il proxy non richiede l'autenticazione e non ha mai visto alcuna richiesta in base al dump tcp.
gcb



2

niente di tutto ciò ha funzionato sto usando eclipse su Windows a 64 bit: esegui i seguenti passaggi ... ha funzionato per me: Finestra -> Preferenze -> Android -> Avvia -> Opzioni emulatore predefinito -http-proxy = "http: / /10.1.8.30:8080"

nella tua finestra di eclissi


2

A volte, anche dopo aver impostato tutto, potrebbe non funzionare. Ho provato tutti i metodi come

  1. Impostazione del proxy nell'APN dell'emulatore
  2. Impostandolo tramite le preferenze di eclissi -> Android -> Avvia

Niente ha funzionato. Poi ho fatto quanto segue che ha funzionato immediatamente.

Goto eclipse Esegui -> esegui configurazioni. Sotto Applicazioni Android puoi vedere la tua applicazione. Ora, sul lato destro, fai clic sulla scheda Target. Sotto le "Opzioni aggiuntive della riga di comando dell'emulatore" aggiungi quanto segue.

-dns-server <server DNS dalla tua macchina locale fino a tre > -http-proxy http: // < tuo proxy >: < tua porta proxy >

Il problema qui è che l'impostazione del server DNS dovrebbe provenire dal tuo sistema locale. Vai al prompt di cmd ed esegui ipconfig per controllare i tuoi server DNS. Lo stesso vale per il server proxy e la porta. Qualunque cosa funzioni per il tuo browser dovrebbe essere inserita qui.


2

Il modo più semplice è eliminare l'APN predefinito dall'emulatore (nel mio caso è T-mobile) e creare un nuovo APN con le impostazioni del proxy.

Nota: ho provato tutte le opzioni della riga di comando e ho anche provato a impostare il proxy per l'APN predefinito degli emulatori ma non ha funzionato.


stavo lottando per questo più di un mese ma finalmente ha funzionato ... Grazie a @usergo la sua risposta mi ha dato questo indizio
Mahesh

2

A seconda dell'ambiente che stai utilizzando per eseguire l'emulatore, controlla i log per vedere come viene avviato l'emulatore. Il mio è iniziato come:

C: \ Users \ johan \ AppData \ Local \ Android \ Sdk \ tools \ emulator.exe -netdelay nessuno -netspeed full -avd Nexus_5X_API_23

Quindi aggiungi l'opzione -http-proxy, nel mio caso:

C: \ Users \ johan \ AppData \ Local \ Android \ Sdk \ tools \ emulator.exe -netdelay nessuno -netspeed full -avd Nexus_5X_API_23 -http-proxy 192.168.0.22:8888


1

Nel caso in cui ti trovi in ​​un ambiente proxy e Internet non è in esecuzione nel tuo emulatore, non modificare alcuna impostazione nell'emulatore. Vai al tuo progetto eclipse, fai clic con il tasto destro, fai clic su "Esegui come" quindi fai clic su "Esegui configurazione". Nella finestra pop-up scegli "Target" e scorri un po 'verso il basso, troverai "Opzioni aggiuntive della riga di comando dell'emulatore" Inserisci le impostazioni del proxy qui in "Opzioni aggiuntive della riga di comando dell'emulatore" come ho inserito

-http-proxy http: // ee11s040: Om1l2ng3d4n2! 08@hproxy.iitm.ac.in: 3128

inserisci qui la descrizione dell'immagine

Quindi avvia un nuovo emulatore.


1

il modo migliore per impostare il proxy aziendale con l'autenticazione ntlm è usare cntlm:

http://cntlm.sourceforge.net/

Installa e configura in C: \ Programmi \ Cntlm \ cntlm.ini Per impostazione predefinita, cntlm, ascolta 127.0.0.1:3128

Nel dispositivo Android impostare un nuovo APN con proxy host 10.0.2.2 e la porta 3128 10.0.2.2 è un alias speciale per l'interfaccia di loopback dell'host (127.0.0.1 sulla macchina di sviluppo)

vedi anche http://developer.android.com/tools/devices/emulator.html#emulatornetworking

Saluti


1

Sei sicuro che il tuo indirizzo sia 168.192.1.2 e non 192.168.1.2?

Notare i primi due numeri scambiati.


1

In console avvia il comando successivo:

emulator -avd emulator_name -http-proxy you_proxy_ip_address:8080

0

Avere l'emulatore Android AVD:

  1. Apri il simulatore (".. \ android-sdk \ AVD Manager.exe")
  2. Vai a Strumenti
  3. Vai a Opzioni
  4. Nelle impostazioni proxy:

Sul primo campo (HTTP Proxy Server) imposta solo l'indirizzo IP dove si trova il tuo proxy (XXX.XXX.XXX.XXX) sul secondo campo imposta la porta del tuo proxy (esempio: 8080)

Quindi, fai clic su Chiudi nella finestra e avvia l'emulatore

---- Aggiunto ... Quindi i passaggi alex funzionano sul mio caso:

Click on Menu
Click on Settings
Click on Wireless & Networks
Go to Mobile Networks
Go to Access Point Names
Here you will Telkila Internet (or other name), click on it.
In the Edit access point section, input the "proxy" and "port"

Questo imposta solo le impostazioni proxy per il gestore SDK, per il download dei file SDK.
Brad

0

Puoi impostare il proxy nella tua app. Questo può essere fatto usando la classe Impostazioni. Ad esempio, puoi aggiungere la seguente riga al tuo metodo "onCreate".

 Settings.System.putString(getContentResolver(), Settings.System.HTTP_PROXY, "myproxy:8080"); 

Per modificare le impostazioni del proxy devi disporre dell'autorizzazione android.permission.WRITE_SETTINGS nel tuo file AndroidManifest.xml.


0

Per alcuni leanbackemulatori (TV) puoi usare cmd:

adb shell settings put global http_proxy 10.0.2.2:8888

  • 8888 - è una porta del proxy su una macchina locale (host), quindi su una macchina locale il proxy http sarà 127.0.0.1:8888

Per rimuovere il proxy (eseguito in sequenza nella riga cmd):

adb shell settings delete global http_proxy

adb shell settings put global global_http_proxy_host ""

adb shell settings put global global_http_proxy_port ""

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.