Proxy mit dem Android-Emulator einrichten

Im Android-Emulator können Sie einen Proxy verwenden, um Anwendungs-Traffic zu debuggen oder über eine Unternehmensfirewall auf das Internet zuzugreifen. Der Emulator bietet zwei unterschiedliche Proxymechanismen zur Unterstützung dieser verschiedenen Anwendungsfälle: den Android-Systemproxy und den Emulator-Proxy.

Den richtigen Proxy auswählen

Bevor Sie einen Proxy konfigurieren, sollten Sie die beiden Anwendungsfälle kennen. Der Android-Systemproxy dient zur Überprüfung des Anwendungs-Traffics, während der Emulator-Proxy zur Umgehung von Netzwerkeinschränkungen verwendet wird. Diese beiden Proxys schließen sich gegenseitig aus. Es kann immer nur einer aktiviert sein.

Funktion Android-Systemproxy Emulator-Proxy
Primärer Anwendungsfall App-Debugging Firewall-Umgehung
Betriebsebene Netzwerkschicht Anwendungsschicht
Konfiguration Benutzeroberfläche für die WLAN-Einstellungen des Android-Systems Benutzeroberfläche für erweiterte Emulator-Steuerelemente oder das Flag
-http-proxy.
HTTPS-Debugging Ja: Ermöglicht Tools wie Charles Proxy, den Traffic abzufangen, wenn ein Zertifikat installiert ist.

Nein: Es wird ein TCP-Tunnel erstellt, der die
-SSL-Prüfung verhindert.
Nicht-HTTP/HTTPS-Traffic
verarbeiten
Nein: Es werden hauptsächlich nur HTTP- und
HTTPS-Traffic verarbeitet.
Ja: Leitet den gesamten TCP-Traffic weiter.

Anwendungsfall 1: Anwendungsdebugging mit dem Android-Systemproxy

Wenn Sie den Netzwerkverkehr Ihrer Anwendung debuggen möchten, z. B. HTTPS-Anfragen mit einem Tool wie Charles Proxy untersuchen, sollten Sie den Android-Systemproxy verwenden.

Dieser Proxy wird auf der Anwendungsebene im Android-Betriebssystem ausgeführt. Dadurch können Debugging-Tools Traffic abfangen und untersuchen. Dazu müssen jedoch die erforderlichen Sicherheitszertifikate auf dem emulierten Gerät installiert werden.

Android-Systemproxy einrichten

Konfiguration

Sie haben zwei Möglichkeiten, das Android-Systemproxy zu konfigurieren:

  1. Manuelle Konfiguration: Rufen Sie im Emulator Einstellungen > Netzwerk & Internet > WLAN auf, wählen Sie Ihr Netzwerk aus und geben Sie die Proxyeinstellungen manuell ein.
  2. Automatisierte Konfiguration: Sie können den Android-Systemproxy programmatisch konfigurieren. Dazu wird ein Instrumentierungstest erstellt, der ein UI-Automatisierungs-Framework wie UI Automator verwendet, um die Android-Einstellungen zu öffnen und die Proxykonfiguration ohne manuellen Eingriff anzuwenden.

Anwendungsfall 2: Umgehen von Unternehmensfirewalls mit Emulator Proxy

In vielen Unternehmensnetzwerken werden direkte Verbindungen zum Internet von Netzwerkadministratoren abgelehnt und müssen stattdessen über einen bestimmten Proxy erfolgen. Wenn Sie von einem solchen eingeschränkten Netzwerk aus auf externe Ressourcen zugreifen möchten, sollten Sie den Emulator-Proxy verwenden.

Dieser Mechanismus arbeitet auf einer niedrigeren Netzwerkebene und leitet den gesamten TCP-Traffic des emulierten Geräts über den angegebenen Proxy weiter. Er eignet sich daher ideal für die Firewall-Traversal. Sie schreibt HTTP-Anfragen vom virtuellen Gerät transparent um, bevor sie an den Proxy gesendet werden, damit sie korrekt funktionieren.

Konfiguration

Wenn Sie den Emulator in Android Studio verwenden, können Sie einen Proxy über die Einstellungen im Android Studio-Menü (Settings > Appearance & Behavior > System Settings > HTTP Proxy) konfigurieren. Weitere Informationen finden Sie in der Android Studio-Dokumentation unter Android Studio-Proxy einrichten.

Wenn Sie den Emulator als eigenständige Anwendung (außerhalb von Android Studio) verwenden, können Sie den Emulator-Proxy mit einer der folgenden Methoden konfigurieren:

  1. Befehlszeilenflag: Starten Sie den Emulator über die Befehlszeile mit dem Flag -http-proxy <proxy>. Die <proxy>-Informationen können im Format http://<machineName>:<port> oder http://<username>:<password>@<machineName>:<port> angegeben werden.

    emulator -http-proxy http://<machineName>:<port>
    

    oder

    emulator @MyAvd -http-proxy http://<username>:<password>@<machineName>:<port>
    
  2. Umgebungsvariable: Definieren Sie die Umgebungsvariable http_proxy mit Ihren Proxyeinstellungen. Der Emulator prüft beim Start, ob diese Variable vorhanden ist, und verwendet ihren Wert automatisch, wenn sie definiert ist.

  3. Erweiterte Steuerelemente: Öffnen Sie die Erweiterten Steuerelemente des Emulators, rufen Sie Einstellungen > Proxy auf und geben Sie die HTTP-Proxykonfiguration manuell ein. Der Emulator speichert diese Einstellungen für das Gerät und stellt sie beim Neustart wieder her.

    Emulator-Proxy einrichten

Der Emulator-Proxy arbeitet auf der Netzwerkschicht. HTTPS-Traffic wird über TCP getunnelt, aber dieser Traffic wird ohne Entschlüsselung weitergeleitet, was die HTTPS-Prüfung verhindert. Der Emulator-Proxy unterstützt keine UDP-Umleitung.

Interaktion mit Android Studio

Android Studio hat ein eigenes Dialogfeld für die Proxykonfiguration zum Herunterladen von Updates und Bibliotheken. Wenn Sie einen Emulator über Android Studio starten, werden die Proxy-Einstellungen der IDE einmal gelesen, um die Konfiguration Emulator Proxy zu füllen. Diese Einstellungen wirken sich jedoch nicht auf den Android-Systemproxy aus.