Ich möchte Https-Anrufe von einem Android-Gerät mit dem Charles-Proxy-Tool testen. Ich muss den Inhalt der unformatierten Anfrage/Antwort für die Debugging-App sehen. Ich habe Charles durch Hinzufügen des Hosts und des Ports unter "Proxy-Einstellungen" -> Registerkarte "SSL" konfiguriert. Wenn ich die App starte, scheinen alle SSL-Anrufe schnell von Charles zu verschwinden. Hat jemand eine Idee, wie Sie dieses Problem beheben können? Charles-Dokumentation scheint keine Informationen für Android-Geräte zu haben.
Ich habe mir das Problem ausgedacht. Es ist, weil Charles 3.7 einige Fehler für Android-Geräte hat. Ich habe ein Update auf die Version Charles 3.8 Beta erhalten und scheint für mich gut zu funktionieren.
siehe: Wie bekomme ich Charles Proxy mit Android 7 Nougat?
Führen Sie auf Ihrem Computer Charles aus:
Öffnen Sie die Proxy-Einstellungen: Proxy -> Proxy-Einstellungen, Registerkarte "Proxies", aktivieren Sie "Transparentes HTTP-Proxy aktivieren", und merken Sie sich "Port" im Herzen.
SSL-Proxy-Einstellungen: Proxy -> SSL-Proxy-Einstellungen, Registerkarte "SSL-Proxying", "SSL-Proxying aktivieren" aktivieren und . Zu Locations hinzufügen:
Öffnen Sie Access Control Settings: Proxy -> Access Control Settings. Fügen Sie Ihr lokales Subnetz hinzu, um Maschinen in Ihrem lokalen Netzwerk zu autorisieren, um den Proxy von einer anderen Maschine/einem anderen Gerät aus zu verwenden .
In Android Phone:
Konfigurieren Sie Ihr Mobiltelefon: Gehen Sie zu Einstellungen -> Drahtlos und Netzwerke -> WLAN -> Verbinden oder ändern Sie Ihr Netzwerk, geben Sie die IP-Adresse und den Port des Computers (8888) ein:
Charles SSL-Zertifikat erhalten Besuchen Sie diese URL in Ihrem mobilen Browser: http://charlesproxy.com/getssl
Geben Sie unter "Name des Zertifikats" ein, was Sie möchten
Akzeptieren Sie die Sicherheitswarnung und installieren Sie das Zertifikat. Wenn Sie es erfolgreich installieren, wird wahrscheinlich Folgendes angezeigt: Auf Ihrem Telefon Einstellungen -> Sicherheit -> Vertrauenswürdige Anmeldeinformationen:
Erledigt.
dann können Sie einige Tests auf Ihrem Mobiltelefon durchführen. Die verschlüsselte https-Anforderung wird in Charles angezeigt:
Bearbeiten - diese Antwort war für eine frühere Version von Charles. Die richtigen Schritte für v3.10.x finden Sie unter @ semicircle21 Antwort - viel einfacher als dieser Ansatz ... :-)
Für was es sich lohnt, sind die Schritt-für-Schritt-Anweisungen dazu. Sie sollten gleichermaßen auch für iOS gelten:
Sie sollten dann die SSL-Dateien in Charles sehen können. Wenn Sie die Werte abfangen und ändern möchten, können Sie das Tool "Map Local" verwenden, das wirklich großartig ist:
Vielen Dank für die Antwort von @bkurzius. Dieses Update ist für Charles 3.10+. (Der Grund ist hier )
Install Charles Root Certificate on a Mobile Device or Remote Browser...
und befolgen Sie die Anweisungen. (Verwenden Sie den Browser des Android, um das Zertifikat herunterzuladen und zu installieren.)Siehe hier:
Sie müssten das charles.crt-Zertifikat auf Ihrem Gerät installieren.
Die am besten bewerteten Antworten funktionieren einwandfrei (ein bisschen alt, aber sie funktionieren immer noch), aber ich möchte nur erwähnen, dass wir seit Android N alle Ihre Apps konfigurieren können, um über unterschiedliche Zertifikate zu verfügen (nur für Debugging, Debugging usw.) , einschließlich des Charles SSL-Proxy-Zertifikats (wenn Sie das Charles-Zertifikat herunterladen und die .pem-Datei in Ihrem Raw-Ordner ablegen). Weitere Informationen finden Sie hier: https://developer.Android.com/training/articles/security-config.html
Auch die offizielle Charles-Dokumentation kann hilfreich sein, um dies einzurichten: https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
Ich hoffe, dies hilft, Charles in Ihrem App-Projekt nicht auf jedem einzelnen Android-Gerät einzurichten.
Für den neueren Emulator kann es hilfreich sein, von der Befehlszeile aus zu starten:
emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888
Stellen Sie sicher, dass Sie den Anweisungen von @ User9527 oben für den Rest des Setups ebenfalls folgen
Für mich war das Problem, dass die IP-Adresse, zu der Charles in meinen Proxy-Einstellungen weitergeleitet wurde, falsch war. Um das Problem zu lösen, bin ich zu ifconfig
im Terminal gegangen und habe die verschiedenen IP-Adressen (neben inet
) am Port 8888
für die derzeit aktiven Verbindungen ausprobiert