web-dev-qa-db-fra.com

Comment surveiller les appels réseau passés depuis le simulateur iOS

J'essaie de surveiller les appels d'une application sur mon serveur, exactement comme le fait Firebug .. Je ne pouvais pas trouver un moyen de voir cela dans iOS Simulator ou xCode.

Y a-t-il un moyen de le faire sans renifler tout le trafic? Si non, quel outil suggéreriez-vous?

91
Mad Echet

Personnellement, j’utilise Charles pour ce genre de choses.
Une fois activé, il surveillera chaque requête réseau, en affichant les détails de la requête étendue, y compris la prise en charge de SSL et divers formats de requête/réponse, tels que JSON, etc.

Vous pouvez également le configurer pour qu'il ne détecte que les demandes adressées à des serveurs spécifiques, pas le trafic en entier.

C'est un logiciel commercial, mais il y a un essai, et IMHO, c'est vraiment un excellent outil.

74
Macmade

Utilisez l’instrument de surveillance de l’activité réseau intégré .

28
Andy

Un proxy intermédiaire, comme le suggèrent d’autres réponses, est une bonne solution si vous souhaitez uniquement voir le trafic HTTP/HTTPS. Burp Suite est assez bon. Cependant, il peut être difficile de configurer. Je ne sais pas comment vous convaincriez le simulateur de lui parler. Vous devrez peut-être définir le proxy de votre Mac local sur votre instance de serveur proxy pour qu'il puisse intercepter, car le simulateur utilisera l'environnement de votre Mac local.

La meilleure solution pour la détection de paquets (bien que cela ne fonctionne que pour réels appareils iOS, et non pour le simulateur) que j'ai trouvée est d'utiliser rvictl. Cet article de blog a une belle rédaction. En gros, vous faites:

rvictl -s <iphone-uid-from-xcode-organizer>

Ensuite, vous détectez l'interface créée avec Wireshark (ou votre outil préféré), puis lorsque vous avez terminé, fermez l'interface avec:

rvictl -x <iphone-uid-from-xcode-organizer>

C’est bien, car si vous voulez renvoyer le simulateur par paquets, vous devez également traîner le trafic sur votre Mac local, mais rvictl crée une interface virtuelle qui vous montre simplement le trafic provenant du périphérique iOS que vous avez branché sur votre ordinateur. Port USB.

24
mpontillo

Un outil proxy gratuit et open source qui s’exécute facilement sur un Mac est mitmproxy .

Le site Web comprend des liens vers un fichier binaire Mac, ainsi que le code source sur Github.

La documentation contient une introduction très utile pour charger un certificat dans votre appareil de test afin de visualiser le trafic HTTPS.

Pas tout à fait aussi graphique que Charles, mais il fait tout ce dont j'ai besoin, c'est gratuit et maintenu . Bon, assez simple si vous avez déjà utilisé des outils en ligne de commande.

MISE À JOUR: Je viens de remarquer sur le site Web que mitmproxy est disponible en tant qu'installation homebrew. Ça ne pourrait pas être plus facile.

18
giff

Si vous avez une connexion par câble et un Mac, il existe une méthode simple et puissante: 

  1. installez gratuitement Wireshark, assurez-vous qu'il peut capturer des périphériques avec (et vous devez le faire après chaque redémarrage de l'ordinateur!):

    Sudo chmod 644/dev/bpf *

  2. Maintenant, partagez votre réseau avec wifi. Préférences système> Partage> Partage Internet. Vérifiez que vous avez "Partager vos connexions à partir de: Ethernet" et utiliser: Wi-Fi. Vous voudrez peut-être aussi configurer une sécurité Wi-Fi, cela ne perturbera pas la surveillance de vos données. 

  3. Connectez votre téléphone à votre réseau nouvellement créé. J'ai souvent besoin de plusieurs tentatives ici. Si le téléphone ne veut pas se connecter, désactivez le wifi du Mac, puis répétez l'étape 2 ci-dessus et soyez patient.

  4. Démarrer Wireshark capturez votre interface sans fil avec Wireshark, il s’agit probablement de "en1". Filtrez vos adresses IP et/ou ports nécessaires. Lorsque vous trouvez un paquet intéressant, sélectionnez-le, cliquez avec le bouton droit de la souris sur (menu contextuel)> Suivre le flux TCP pour afficher la belle représentation textuelle des demandes et des réponses.

Et quel est le meilleur: exactement le même tour fonctionne pour Android aussi!

3
JaakL

Xcode fournit la journalisation des diagnostics CFNetwork. Apple doc

Pour l'activer, ajoutez CFNETWORK_DIAGNOSTICS = 3 dans la variable d'environnement

Cela montrera les demandes de l'App avec ses en-têtes et son corps.

2
Evan
  1. Installer WireShark
  2. obtenir l'adresse IP du moniteur réseau xcode
  3. écoute de l'interface wifi
  4. définir le filtre ip.addr == 192.168.1.122 dans WireShark
1
August Lin

Récemment, j'ai trouvé un git repo qui le rend facile.

Tu peux l'essayer.

Voici la capture d'écran d'une application:  enter image description here

Meilleures salutations.

1
LagMaster

Wireshark c'est

Sélectionnez votre interface

 enter image description here

Ajouter filter démarrer la capture

 enter image description here


Essai

Cliquez sur n'importe quelle action ou bouton qui déclencherait une demande GET/POST/PUT/DELETE

Vous le verrez sur la liste dans le Wirehark 

 enter image description here

Si vous souhaitez en savoir plus sur un paquet spécifique, sélectionnez-le et Suivre> Flux HTTP.

 enter image description here

espérons que cela aide les autres !! 

1
kyo

J'utilise netfox. Il est très facile à utiliser et à intégrer. Vous pouvez l'utiliser sur le simulateur et l'appareil. Il montre toutes les demandes et les réponses. Il prend en charge les types de réponses JSON, XML, HTML, Image et autres. Vous pouvez partager les demandes, les réponses et le journal complet selon IOS les formats de partage par défaut (Gmail, WhatsApp, email, slack, sms, etc.).

Vous pouvez vérifier sur GitHub: https://github.com/kasketis/netfox

Netfox fournit un aperçu rapide de toutes les requêtes réseau exécutées par votre application iOS ou OSX. Il saisit toutes les demandes - bien sûr les vôtres, celles de bibliothèques tierces (telles que AFNetworking, Alamofire ou autre), UIWebViews, etc.

0
Burcu K. Kutluay

Le débogueur Pony est une bonne solution si vous êtes habitué aux outils d’inspecteur Chrome: https://github.com/square/PonyDebugger

C'est un peu pénible à installer, mais une fois que vous le faites, cela fonctionne bien. Assurez-vous d'utiliser Safari au lieu de Chrome pour l'utiliser.

0
Simon Epskamp
0