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 de proxy du 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. (La fenêtre principale est Ouvrir le tableau de bord... (⌘,) dans le menu ; sur un Mac qui avait déjà des configurations avant l'interface actuelle, activez d'abord Utiliser la nouvelle interface principale dans ce même menu.) 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 moteur 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].
Les deux sont réécrits dans le fichier de configuration — replica, et enable sous [MITM] — et survivent donc à un rechargement comme à un redémarrage. Une configuration distante n'a pas de fichier local où écrire : l'interrupteur change quand même le moteur en cours d'exécution, et l'application signale Échec de l'enregistrement de la configuration. La console, Dashboard et l'API basculent les deux mêmes réglages sans écrire le fichier ; après un tel basculement, Recharger la configuration (⌘R) conserve ce que vous avez réglé tant que le fichier n'a pas changé en dessous — replica est réappliqué quand sa propre valeur dans le fichier a changé, [MITM] enable quand une clé quelconque de la section [MITM] a changé ou que la liste d'hôtes a été modifiée depuis la console ou l'API — et un redémarrage repart toujours du fichier.
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
Parmi les plateformes Apple, macOS est celle où Chute sait quelle application a ouvert une connexion, et les règles peuvent s'en servir (Chute Android le sait aussi, par nom de package) :
[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=des règles de réponse simulée. 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 et la base des connexions se trouvent sous
~/Chute/Share/<run id>/, et le marqueur d'exécution à côté, dans~/Chute/Share/; voir Emplacement des fichiers (macOS). Vous pouvez les joindre directement à un rapport de bug, sans passer par une feuille de partage. Les corps capturés s'y trouvent aussi, sousDUMP/, mais seulement pendant que le moteur tourne : son arrêt les supprime, alors exportez d'abord ce dont vous avez besoin — Exporter en HAR dans la console, ou Exporter en bin dans Dashboard. - 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. Sur ce Mac, elle ne demande aucune configuration : Ouvrir Chute Dashboard... (⌘D) dans le menu l'ouvre déjà connectée à ce Mac, et dans sa fenêtre Nouveau tableau de bord, Se connecter à la machine locale fait de même. Cette voie atteint le moteur par un socket local que le tunnel ouvre toujours : il n'y a ni port ni mot de passe à régler. Ce n'est que si Dashboard tourne sur un autre Mac qu'il faut la voie distante —
external-controller-access = <password>@0.0.0.0:6170dans[General], puis Se connecter à une machine distante avec l'adresse de ce Mac, ce port et ce mot de passe. Dans les deux cas, 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.