Débogage réseau
Chute est un proxy, mais la raison d'en faire tourner un sur ses propres appareils tient rarement au routage. Elle tient à ceci : chaque requête passe désormais par un endroit que vous contrôlez. Vous pouvez donc observer ce qu'une application envoie réellement, conserver les corps pour les lire plus tard, modifier une requête ou une réponse en vol, et faire passer un backend en bonne santé pour un backend cassé afin de voir comment votre application réagit.
Les pages de référence de chaque mécanisme se trouvent ailleurs dans ce manuel : Déchiffrement HTTPS, Réponse simulée, Réécriture d'URL, Scripts JS. Cette section les remet dans l'ordre où on s'en sert vraiment, et dit ce qui change d'une plateforme à l'autre.
Quatre fenêtres sur le même moteur
Un seul Chute en cours d'exécution, quatre façons de le regarder. Se tromper de fenêtre est la raison habituelle pour laquelle quelque chose « n'y est pas ».
| S'exécute sur | Corps de requête et de réponse | Modifie le moteur en cours | Nécessite | |
|---|---|---|---|---|
| L'application elle-même | L'appareil | iOS et Android oui ; macOS et tvOS non | Les interrupteurs seulement — Chute Mac les enregistre aussi dans le fichier de configuration | Rien |
| Console web | Un navigateur, sur n'importe quel appareil | Oui | Hôtes MitM, toutes les familles de réécriture, politiques, configuration | external-http-controller |
| Chute Dashboard | Un Mac | Oui | Hôtes MitM, toutes les familles de réécriture, les deux interrupteurs | Rien pour Chute Mac sur ce même Mac ; external-controller-access pour tout autre appareil |
| API de contrôle HTTP | Tout ce qui parle HTTP | Oui, en base64 | Tout ce que fait la console | external-http-controller |
La console et Dashboard se recouvrent largement mais s'atteignent différemment : la console est servie par le moteur lui-même et s'ouvre dans un navigateur, Dashboard est une application Mac qui parle un canal binaire. Aucune n'est un sur-ensemble de l'autre ; Ce que Dashboard n'atteint pas énumère les différences.
D'abord, quatre interrupteurs à régler
Presque tous les « je vois la connexion mais pas la requête » se terminent sur l'un de ces quatre points, dans cet ordre :
- Le trafic atteint Chute, tout simplement. Une ligne dans la vue du trafic en est la preuve. Rien du tout est un problème d'interception du trafic (le trafic n'arrive pas jusqu'à Chute), pas de débogage — voir Dépannage.
- Le CA est installé et approuvé. Deux étapes distinctes sur iOS, une seule sur macOS, et aucune des deux dans l'application sur tvOS — voir Installer le certificat CA et l'approuver.
- L'hôte figure dans la liste MitM. Chute déchiffre les hôtes déclarés et rien d'autre. Dans Dashboard, une ligne sans l'indicateur
Mn'a jamais été déchiffrée. - L'enregistrement est actif.
replica = true, ou l'interrupteur (Capture du trafic dans l'application). Sur iPhone, Apple TV et Android, le moteur exige en plus une licence : la clé seule n'y capture rien. Sans enregistrement, chaque ligne porte toujours sa règle, sa politique et ses temps — seules les charges utiles manquent.[Replica]restreint ensuite ce qui est conservé, et ce qui est conservé ne dure que le temps de l'exécution : Chute supprime les corps enregistrés à son arrêt.
Les points 3 et 4 se basculent aussi à chaud depuis la console, depuis Dashboard et via l'API, et aucun de ces moyens n'écrit dans le fichier de configuration : après un redémarrage, c'est le fichier qui gagne.
Ce que chaque plateforme permet
| Chute iOS | Chute Mac | Chute tvOS | Chute Android | |
|---|---|---|---|---|
| Inspecter dans l'application | Écran Tableau de bord — Vue d'ensemble, Requête, Réponse, avec les corps | Onglet Trafic — routage seulement, pas de corps | DIAGNOSTIC → Tableau de bord — routage seulement, pas de corps | Tableau de bord — tunnels, avec les corps |
| Basculer MitM dans l'application | Interrupteur du panneau de configuration (sous licence) | Barre des menus → Activer le MitM (⌘M) | Pas d'interrupteur sur cette plateforme | Panneau de configuration → MitM (sous licence) |
| Basculer l'enregistrement dans l'application | Panneau de configuration → Capture du trafic (sous licence) | Barre des menus → Capture du trafic (⌘B) | Panneau de configuration → Capture du trafic (sous licence) | Panneau de configuration → Capture du trafic (sous licence) |
| Installer le CA | Dans l'application, puis l'approuver dans les réglages | Dans l'application, en une étape | MDM ou Apple Configurator uniquement | Importer un P12 dans l'application, puis Installer le CA ouvre le programme d'installation d'Android |
| Comment Chute Dashboard y accède | Câble USB ou Wi-Fi | Se connecter à la machine locale, sur ce Mac | Wi-Fi | Câble USB (adb) ou le réseau |
| Sortir un fichier de l'appareil | Feuille de partage | Le système de fichiers | La console, par QR code | Feuille de partage |
Où aller ensuite
- Déboguer un iPhone depuis un Mac — tout le trajet, d'un téléphone tout neuf à un corps déchiffré à l'écran d'un Mac.
- Déboguer sur un Mac — le trafic du Mac lui-même, y compris les outils en ligne de commande et l'isolement par processus.
- Déboguer une Apple TV — un appareil sans navigateur, sans feuille de partage et incapable d'installer un certificat par lui-même.
- Réplique — quelles connexions gardent leurs corps, et comment cesser de tout capturer.
- Simulation et injection de pannes — réponses toutes faites, codes d'erreur, latence injectée, et ce que Chute ne sait vraiment pas faire.
Si la question est « ça ne marche pas » plutôt que « qu'est-ce que ça fait », commencez plutôt par le Dépannage — en particulier Pourquoi ma réécriture ne fait-elle rien ?, la question que cette section engendre le plus souvent.