Déboguer sur un Mac
Sur un Mac, Chute et le trafic que vous voulez examiner sont sur la même machine : l'essentiel de ce à quoi le guide iPhone consacre des étapes — un câble, un écouteur, un mot de passe — devient inutile. À la place surgit une autre question : le trafic atteint-il seulement Chute ? Car sous macOS, une application peut tout simplement refuser d'utiliser le proxy.
1. Faire passer le trafic par Chute
Deux mécanismes, indépendants l'un de l'autre — le menu affiche les deux :
- Proxy système — l'interrupteur tout en haut du menu. Enregistre Chute comme proxy HTTP/SOCKS du système. Les applications qui lisent les réglages système (navigateurs, la plupart des applications à interface) passent par Chute ; les autres ne sont pas concernées.
- Mode amélioré (⌘E) — capture le trafic au niveau réseau, si bien que l'avis d'une application sur les proxys cesse de compter. C'est ce qu'il vous faut quand une application ne gère pas du tout les proxys. Pour la procédure d'autorisation et les deux types d'implémentation, voir Mode amélioré.
Les outils du terminal sont la surprise habituelle : curl, git, npm et compagnie lisent HTTP_PROXY/HTTPS_PROXY dans l'environnement, pas les réglages système. Copier la commande d'export shell (⌘C) dans le menu place la bonne ligne dans le presse-papiers —
export HTTPS_PROXY=http://127.0.0.1:8118;export HTTP_PROXY=http://127.0.0.1:8118;export NO_PROXY=127.0.0.1,localhost,.example.com
— avec votre véritable port d'écoute HTTP et un NO_PROXY construit à partir de votre liste skip-proxy, de sorte que les outils en ligne de commande contournent exactement ce que contourne le proxy système. Collez-la dans le shell depuis lequel vous testez ; elle ne vaut que pour ce shell.
Vous devriez voir : l'onglet Trafic de la fenêtre principale se remplit de lignes à mesure que vous utilisez l'application. Aucune ligne signifie que le trafic n'a jamais atteint Chute — revenez à cette étape au lieu de chercher un problème de déchiffrement.
2. Lire l'onglet Trafic
Trafic liste les connexions en cours avec un champ de recherche et un compteur (N active). Afficher les colonnes ▾ change la disposition :
- Double ligne (par défaut) — deux lignes par connexion, confortable pour parcourir.
- Tableau large — une ligne par connexion sur toutes les colonnes : Hôte, Processus, Règle, Politique, Proto, Envoyer, Télécharger, Totaux, État. Un clic sur un en-tête trie.
- Grouper par application — les connexions rassemblées sous l'application qui les a ouvertes, avec son nom et son icône. C'est la façon la plus rapide de répondre à « avec qui ce processus parle-t-il ».
Un clic droit sur une ligne propose Afficher les détails, Copier l'hôte, Copier les détails, Filtrer les journaux (bascule vers l'onglet Journal déjà filtré sur cette connexion) et Fermer la connexion.
Afficher les détails ouvre une fenêtre avec l'hôte, le processus, le protocole, la partie distante, la règle, la politique, les réécritures, l'envoi, le téléchargement et l'état de la connexion — tout ce qui concerne la façon dont elle a été routée.
L'onglet Trafic n'affiche pas les corps de requête et de réponse. C'est le rôle du bouton Requêtes et historique de la fenêtre de détail : il ouvre la Console web, qui les affiche. C'est la page d'accueil de la console qui s'ouvre, pas cette connexion précise.
3. Tester une règle sans émettre de requête
L'onglet Règles comporte un bouton Tester la règle…. Saisissez une URL ou simplement un domaine, appuyez sur Tester, et Chute répond avec l'hôte et le port qu'il a analysés, le résultat DNS, la règle correspondante, la politique que cette règle a choisie, et des notes.
Servez-vous-en quand la question est « pourquoi est-ce parti en direct » ou « laquelle de mes deux règles l'emporte » : elle consulte le jeu de règles en cours d'exécution, et vous dit donc du même coup si la configuration que vous avez modifiée est bien celle qui est chargée. Si la réponse semble périmée, rechargez la configuration (⌘R). La même question via l'API, c'est POST /api/rules/match.
4. Activer l'enregistrement et le déchiffrement
Les deux sont dans le menu, et les deux agissent sur le noyau en cours d'exécution :
- Capture du trafic (⌘B) — conserve les corps de requête et de réponse, autrement dit le réglage
replica. Désactivée par défaut : tant qu'elle l'est, rien n'a de corps. - Activer le MitM (⌘M) — active le déchiffrement pour les hôtes de la liste
hostnamede[MITM].
Aucun des deux n'est réécrit dans le fichier de configuration : après Recharger la configuration ou un redémarrage, ce sont replica et [MITM] enable du fichier qui gagnent.
Le CA tient en une étape sous macOS. Dans la fenêtre de configuration, ouvrez MitM :
- Générer un nouveau certificat (ou Importer un certificat depuis un fichier PKCS#12).
- Installer le certificat dans le système — macOS demande un mot de passe administrateur et l'ajoute au trousseau Système en tant que racine approuvée. Il n'y a pas d'étape « approuver » séparée comme sur iOS.
- Exporter le certificat écrit une copie
.pem: c'est ainsi que le même CA arrive sur un téléphone, une Apple TV ou dans un conteneur.
5. Restreindre à un seul processus
macOS est la plateforme où Chute sait quelle application a ouvert une connexion, et les règles peuvent s'en servir :
[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy
Pour PROCESS-NAME, PROCESS-PATH et PROCESS-NAME-REGEX, voir Règle de processus. Combiné à Grouper par application dans l'onglet Trafic, cela permet de faire passer une seule application par un proxy — ou par une simulation — pendant que le reste de la machine continue normalement.
6. Ce qui ne marche que sur un Mac
- Les chemins de fichier
data=de Map Local. Le fichier est lu par l'appareil qui exécute Chute, au moment de la requête. Sur un Mac, c'est la machine sur laquelle vous éditez : un vrai chemin fonctionne, et modifier le fichier change la réponse suivante sans rechargement. Sur un téléphone, le même chemin ne veut rien dire — c'est pourquoi le guide iPhone utilisebase64=. - Les fichiers sur le disque. Les fragments de journal, le marqueur d'exécution et les captures se trouvent sous
~/Chute/Share/<run id>/; voir Emplacement des fichiers (macOS). Vous pouvez les joindre directement à un rapport de bug, sans passer par une feuille de partage. - Servir d'autres appareils. Avec
allow-wifi-accessactivé, d'autres machines du réseau peuvent pointer leurs réglages proxy vers ce Mac. Leur trafic apparaît alors dans les mêmes vues, sous Distant dans la barre latérale des clients de Dashboard — c'est ainsi qu'on inspecte un appareil sur lequel Chute ne tourne pas du tout, portable Windows ou téléviseur connecté compris.
7. Quand l'onglet Trafic ne suffit plus
- Console web — barre des menus → Ouvrir la console web. Les corps, l'export HAR, la page des règles qui dit quelles réécritures ont agi, et les sondes de diagnostic. Nécessite
external-http-controllerdans[General]. - Chute Dashboard — une application gratuite distincte. Pour le noyau local, écrivez
external-controller-access = <mot de passe>@127.0.0.1:6170dans[General], puis connectez l'onglet Distant de Dashboard à127.0.0.1avec ce port et ce mot de passe. Cela en vaut la peine pour les panneaux d'outils MitM et les exports HAR / curl accessibles d'un clic droit. - L'onglet Journal — montez d'abord le niveau avec
loglevel = verbose, puis remettez-le ensuite. Filtrer les journaux sur une ligne de connexion restreint l'onglet à cette seule connexion.