Comment surveiller les appels réseau effectués à partir du simulateur iOS

113

J'essaie de surveiller les appels d'une application vers mon serveur, tout comme Firebug. Je n'ai pas pu trouver un moyen de voir cela dans iOS Simulator ou dans xCode.

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

Mad Echet
la source

Réponses:

84

Personnellement, j'utilise Charles pour ce genre de choses.
Lorsqu'il est activé, il surveillera chaque demande réseau, affichant les détails de la demande étendue, y compris la prise en charge de SSL et divers formats de demande / réponse, comme JSON, etc.

Vous pouvez également le configurer pour ne renifler que les demandes adressées à des serveurs spécifiques, et non à l'ensemble du trafic.

C'est un logiciel commercial, mais il y a un essai, et à mon humble avis, c'est définitivement un excellent outil.

Macmade
la source
1
Vraiment facile à utiliser et à configurer et fait exactement ce que je voulais, merci!
Mad Echet
3
Ne fonctionne pas facilement lorsque votre serveur est protégé par TLS, ce qu'il devrait être.
carbocation
J'ai essayé Charles mais je n'ai pas pu très bien surveiller le trafic sortant. Par exemple, je ne peux pas changer le formatage de ma requête POST en JSON
Jesus Rodriguez
24

Un proxy man-in-the-middle, comme suggéré par d'autres réponses, est une bonne solution si vous ne voulez voir que le trafic HTTP / HTTPS. Suite Burp est plutôt bien. Cela peut être difficile à configurer cependant. Je ne sais pas comment vous pourriez convaincre 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 intercepte, car le simulateur utilisera l'environnement de votre Mac local.

La meilleure solution pour le reniflement de paquets (bien que cela ne fonctionne que pour les appareils iOS réels , pas le simulateur) que j'ai trouvée est d'utiliser rvictl. Ce billet de blog a une belle rédaction. En gros, vous faites:

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

Ensuite, vous reniflez l'interface avec laquelle il crée avec Wireshark (ou votre outil préféré), et lorsque vous avez terminé, fermez l'interface avec:

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

C'est bien parce que si vous voulez renifler les paquets avec le simulateur, vous devez également parcourir le trafic vers votre Mac local, mais rvictlcrée une interface virtuelle qui vous montre simplement le trafic de l'appareil iOS que vous avez branché sur votre clé USB. Port.

mpontillo
la source
1
+1 pour Burp Suite, et pas de douleur pour le configurer: engadget.com/2011/02/21/… Cela prend moins de 10 min
Vladimir
20

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 binaire Mac, ainsi que le code source sur Github.

La documentation contient une introduction très utile au chargement d'un certificat dans votre appareil de test pour afficher le trafic HTTPS.

Pas tout à fait aussi graphique que Charles, mais il fait tout ce dont j'ai besoin et est gratuit et maintenu. Bon truc, et assez simple si vous avez déjà utilisé des outils de 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.

giff
la source
Avez-vous eu de la chance avec mitm pour le simulateur iOS? Je l'ai configuré mais le trafic de mon ordinateur en dehors du simulateur est également capturé, ce qui n'est pas le meilleur. L'utiliser sur un appareil réel est incroyable. Je le fais depuis des années.
atreat
mitmweb est l'interface utilisateur Web de mitmproxy qui permet un examen et une modification interactifs du trafic HTTP. Comme mitmproxy, il diffère de mitmdump en ce que tous les flux sont conservés en mémoire, ce qui signifie qu'il est destiné à prendre et à manipuler de petits échantillons mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak
15

Récemment, j'ai trouvé un dépôt git qui facilite les choses.

Tu peux l'essayer.

Voici la capture d'écran d'une application: entrez la description de l'image ici

Meilleures salutations.

Andres Paladines
la source
Bien que Bagel soit génial et simple, j'ai récemment remarqué qu'il afficherait également les demandes en cache. Donc, si vous voulez connaître les octets réellement transférés, par exemple, cela n'est pas utile.
BlackWolf
10

Xcode fournit la journalisation des diagnostics CFNetwork. Doc Apple

Pour l'activer, ajoutez CFNETWORK_DIAGNOSTICS=3dans la section Variable d'environnement:

entrez la description de l'image ici

Cela affichera les demandes de l'application avec ses en-têtes et son corps. Notez qu'il OS_ACTIVITY_MODEdoit être défini enablecomme indiqué. Sinon, aucune sortie ne sera affichée sur la console.

Evan
la source
4

Wireshark il

Sélectionnez votre interface

entrez la description de l'image ici

Ajouter filterdémarrer lecapture

entrez la description de l'image ici


Essai

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

Vous le verrez sur la liste dans le wirehark

entrez la description de l'image ici

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

entrez la description de l'image ici

j'espère que cela aidera les autres !!

cyber8200
la source
3

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

  1. installez Wireshark gratuit, 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. Partagez maintenant votre réseau avec le wifi. Préférences système> Partage> Partage Internet. Vérifiez que vous avez "Partager vos connexions depuis: Ethernet" et que vous utilisez: Wi-Fi. Vous voudrez peut-être également configurer une sécurité wifi, cela ne perturbe pas la surveillance de vos données.

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

  4. Démarrez Wireshark capturer votre interface sans fil avec Wireshark, c'est probablement "en1". Filtrez les adresses IP et / ou les ports dont vous avez besoin. Lorsque vous trouvez un package qui est intéressant, sélectionnez-le, faites un clic droit (menu contextuel)> Suivre le flux TCP et vous voyez une belle représentation textuelle des requêtes et des réponses.

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

JaakL
la source
Pouvez-vous l'utiliser avec votre simulateur? Je n'ai pas encore l'application sur mon téléphone.
Joshua Dance
@Joshua Dance vous pouvez l'utiliser avec un émulateur, s'il fait une demande de réseau externe. Les connexions à localhost ne peuvent pas être tracées avec WireShark, car elles ne passent pas le "fil" (carte réseau)
JaakL
1

Telerik Fiddler est un bon choix

http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices

Konstantin Salavatov
la source
Comment cela fonctionnera-t-il sur une machine OSX? Considérant que deux des balises sont xcode et ios-simulator.
Kevin R
@KevinR, 1. Telerik a une version bêta de Fiddler pour OS X 2. Nulle part dans la question n'est dit que le choix est limité à OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov
2
@KonstantinSalavatov, Le sujet du message original est "Comment surveiller les appels réseau effectués à partir du simulateur iOS". Le simulateur iOS ne fonctionne que sur OS X, donc oui, le choix est limité à OS X.
ChillyPenguin
1
+1 Je pense que vous devriez voter pour cela maintenant, car il existe maintenant un support pour Mac OS X! : D telerik.com/fiddler#SupportedTechnologies et ici telerik.com/download/fiddler/fiddler-osx-beta
David Noreña
1
  1. Installez WireShark
  2. obtenir l'adresse IP du moniteur réseau xcode
  3. écouter l'interface wifi
  4. définir le filtre ip.addr == 192.168.1.122 dans WireShark
Août Lin
la source
0

Une bonne solution si vous êtes habitué aux outils d'inspecteur de chrome est le débogueur Pony: https://github.com/square/PonyDebugger

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

Simon Epskamp
la source
0

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 réponses. Il prend en charge les types de réponses JSON, XML, HTML, Image et autres. Vous pouvez partager des demandes, des réponses et un journal complet par les formats de partage par défaut d'IOS (Gmail, WhatsApp, e-mail, 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, les demandes de bibliothèques tierces (telles que AFNetworking, Alamofire ou autre), UIWebViews, etc.

Burcu Kutluay
la source