Je souhaite tester les appels HTTP depuis un appareil Android à l'aide de l'outil de proxy Charles. J'ai besoin de voir le contenu brut de la requête/réponse pour le débogage de l'application. J'ai configuré Charles en ajoutant l'hôte et le port sous "Paramètres du proxy" -> Onglet SSL. Lorsque je lance l'application, tous les appels SSL semblent disparaître rapidement de Charles. Est-ce que quelqu'un a une idée de comment résoudre ce problème? La documentation de Charles ne semble pas avoir d'informations pour les appareils Android.
J'ai compris le problème. C'est parce que Charles 3.7 a quelques bugs pour les appareils Android. J'ai mis à jour la version bêta de Charles 3.8 et semble bien fonctionner pour moi.
se référer à: Comment obtenir le mandataire charles avec Android 7 nougat?
Depuis votre ordinateur, lancez Charles:
Ouvrir les paramètres du proxy: Proxy -> Paramètres du proxy, onglet Proxies, cochez la case "Activer le proxy HTTP transparent" et rappelez-vous le "Port" en cœur.
Paramètres de proxy SSL: Proxy -> Paramètres de proxy SSL, onglet Proxy SSL, cochez la case «Activer SSL Proxying» et ajoutez . À Emplacements:
Ouvrez les paramètres de contrôle d'accès: Proxy -> Paramètres de contrôle d'accès. Ajoutez votre sous-réseau local pour autoriser les machines de votre réseau local à utiliser le proxy depuis une autre machine/mobile .
Dans Android Phone:
Configurez votre mobile: Allez dans Paramètres -> Sans fil et réseaux -> WiFi -> Connectez-vous ou modifiez votre réseau, entrez l'adresse IP de l'ordinateur et le port (8888):
Obtenez le certificat SSL Charles. Visitez cette URL à partir de votre navigateur mobile: http://charlesproxy.com/getssl
Dans «Nommez le certificat», entrez ce que vous voulez
Acceptez l'avertissement de sécurité et installez le certificat. Si vous l'installez correctement, vous verrez probablement sth comme ceci: Sur votre téléphone, Paramètres -> Sécurité -> Informations d'identification approuvées:
Terminé.
alors vous pouvez avoir un test sur votre mobile, la demande cryptée https sera affichée dans Charles:
Modifier - cette réponse concernait une version antérieure de Charles. Voir la réponse @ semicircle21 ci-dessous pour connaître les étapes appropriées pour v3.10.x - beaucoup plus facile que cette approche aussi ...
Pour ce que cela vaut, voici les instructions étape par étape pour cela. Ils devraient également s'appliquer également sur iOS:
Vous devriez alors pouvoir voir les fichiers SSL dans Charles. Si vous voulez intercepter et changer les valeurs, vous pouvez utiliser l'outil "Map Local" qui est vraiment génial:
Merci pour la réponse de @ bkurzius et cette mise à jour est destinée à Charles 3.10+. (La raison est ici )
Install Charles Root Certificate on a Mobile Device or Remote Browser...
et suivez les instructions. (Utilisez le navigateur Android pour télécharger et installer le certificat.)Vois ici:
Vous devez installer le certificat charles.crt sur votre appareil.
Les réponses les mieux notées fonctionnent parfaitement (un peu vieux mais fonctionne toujours), mais je tiens à mentionner que depuis Android N, nous pouvons tous configurer vos applications pour disposer de certificats SSL de confiance diff (pour la publication, le débogage, etc.). , y compris le certificat Charles SSL Proxy (si vous téléchargez le certificat Charles et mettez le fichier .pem dans votre dossier raw). Plus d'informations peuvent être trouvées ici: https://developer.Android.com/training/articles/security-config.html
La documentation officielle de Charles peut également être utile pour configurer ceci: https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
J'espère que cela vous aidera à configurer Charles dans votre projet d'application, pas sur chaque appareil Android.
Pour le nouvel émulateur, il peut être utile de lancer depuis la ligne de commande en utilisant:
emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888
Assurez-vous de suivre les conseils de @ User9527 ci-dessus pour le reste de la configuration.
Pour moi, le problème était que l'adresse IP que Charles m'avait dit de router dans mes paramètres de proxy était incorrecte. Pour résoudre ce problème, j'ai fini par aller à ifconfig
dans le terminal et à essayer les différentes adresses IP (listées à côté de inet
) sur le port 8888
pour les connexions actives en cours.