Console web
Chute sert une console d'administration en HTTP depuis le noyau en cours d'exécution. C'est la seule interface identique sur toutes les plateformes, et c'est donc là que ce manuel renvoie chaque fois qu'il faut regarder quelque chose plutôt que le configurer — le routage d'une requête, une réécriture qui n'agit pas, la raison d'un refus de connexion.
Ce n'est pas Chute Dashboard. Dashboard est une application macOS distincte qui se connecte à une instance de Chute ; la console décrite ici est servie par le noyau lui-même et s'ouvre dans un navigateur.
Activation et accès
La console requiert external-http-controller dans la section [General]. Elle est désactivée par défaut :
[General]
external-http-controller = 127.0.0.1:9090
external-http-ui = true
L'accès est authentifié. Si vous ne définissez pas external-http-secret, Chute génère un jeton et le conserve dans un fichier control-token, de sorte que le même jeton est réutilisé d'un redémarrage à l'autre — la façon pratique d'entrer est donc de laisser l'application vous donner l'adresse avec le jeton déjà attaché. La page consomme le jeton depuis cette adresse au chargement et le garde dans le localStorage du navigateur : un navigateur ne se connecte qu'une fois. Chaque plateforme a un point d'entrée pour cela ; voir Ouvrir la console web.
Overview (vue d'ensemble)
Si le service tourne, depuis combien de temps, sa consommation mémoire, les adresses et ports des écouteurs HTTP et SOCKS, et les chemins de fichiers utilisés par cette exécution. Quand vous ne savez plus quelle instance un onglet vise, cette page l'identifie.
Traffic (trafic)
Octets cumulés et débit courant pour l'ensemble du moteur, un graphique d'historique, et une répartition par adaptateur. Sert à répondre à « est-ce que quelque chose circule », et à voir quelle sortie porte la charge quand un groupe de politiques choisit entre plusieurs.
Connections (connexions)
La page où vous passerez le plus de temps. Deux onglets :
- Current (Actuelles) — les connexions ouvertes en ce moment.
- History (Historique) — les connexions fermées, les plus récentes d'abord, relues depuis les enregistrements de cette exécution.
Chaque ligne porte l'hôte, le port, le type, la politique choisie, la règle correspondante, la durée et les compteurs d'octets. La durée est comptée depuis le moment où cet onglet du navigateur a vu la connexion pour la première fois, pas depuis son ouverture : elle n'a donc de sens que dans l'onglet Current (Actuelles). Inspect (Inspecter) déplie la ligne sur place et répond à pourquoi cette requête est partie là :
| Champ | Ce qu'il indique |
|---|---|
| Règle correspondante / Origine de la règle | La ligne de règle qui a décidé de cette connexion, et de quelle section elle vient |
| Politique choisie / Adaptateur | La politique retenue par la règle, et la sortie qui l'a réellement portée |
| Origine DNS | Quel résolveur a répondu, et s'il s'agissait d'un succès de cache |
| Réécritures appliquées | Les règles de réécriture ou de Mock qui ont modifié ce message — dans les termes de la règle ; au plus 16 correspondances sont conservées par connexion, au-delà la ligne indique combien d'autres ne sont pas affichées |
| Raison de fermeture / Note | Pourquoi elle s'est terminée, et ce que le noyau avait à en dire |
Sous le tableau, la ligne dépliée montre la requête et la réponse capturées — en-têtes et corps, tels qu'ils sont passés sur le lien (déchiffrés pour les hôtes couverts par le déchiffrement HTTPS).
Les corps supposent l'enregistrement du trafic
Les corps ne sont là que si Chute les a capturés. Activez l'enregistrement avant de reproduire le problème :
replica = truedans[General], ou- Chute Mac : barre des menus → Capture du trafic, ou
- l'API :
PUT /api/features/record-trafficavec{"enabled": true}.
Sans lui, les connexions apparaissent toujours avec toute leur attribution de routage et leurs mesures de temps — seules les charges utiles manquent. La section [Replica] restreint encore ce qui est capturé — chacun de ses filtres, hide-crashlytics-request compris, est respecté — : une requête écartée là n'aura pas de corps non plus.
Exporter en HAR
Export HAR (Exporter en HAR), sur la page Connections, télécharge l'onglet courant sous forme de fichier HAR 1.2 — plafonné à 100 entrées, la valeur par défaut du point d'accès (limit sur celui-ci monte au plus à 300), alors que l'onglet History lui-même en affiche jusqu'à 200. HAR est un format standard : ouvrez-le dans les outils de développement d'un navigateur (panneau Réseau → importer), ou dans des outils comme Charles ou Proxyman.
L'export contient ce que ces outils attendent — en-têtes de requête et de réponse, mesures de temps, et les corps si l'enregistrement était actif — plus, pour chaque entrée, un objet _kl portant ce dont HAR n'a pas de champ : la politique choisie, la règle correspondante et les réécritures qui ont agi. Les temps d'envoi et de réception proviennent des horodatages de la capture elle-même plutôt que d'une déduction : ils veulent donc dire quelque chose. Les applications ont leurs propres sorties : le Dashboard de Chute iOS propose Exporter en HAR et Tout exporter en HAR (générés par le noyau dans le même format), et la fenêtre de détail d'une connexion dans Chute Mac a un bouton Requêtes et historique qui ouvre la console — sa page d'accueil, pas cette connexion en particulier. Une entrée est une connexion : sur une connexion keep-alive ayant porté plusieurs requêtes, l'export décrit le premier message et note combien d'octets des messages suivants il a laissés de côté.
DNS
Le cache du résolveur avec le serveur ayant répondu pour chaque entrée, les entrées venues de [Host], et le fichier hosts du système. Clear Cache (Vider le cache) purge les entrées dynamiques ; il n'y a pas de suppression entrée par entrée ici — cela n'existe que sous la forme DELETE /api/dns/records/:domain dans l'API.
Policies (politiques)
Le mode de sortie (Rule / Global / Direct — Règles / Global / Direct) et chaque groupe de politiques avec sa sélection courante. Un changement ici prend effet immédiatement sur le noyau en cours — c'est la même action que basculer un groupe dans les applications.
Rules (règles)
Deux choses différentes partagent cette page, et elles ne se comportent pas pareil.
Règles de routage — la section [Rule], dans l'ordre d'évaluation. En lecture seule : elles viennent du fichier de configuration.
Règles de réécriture et Mock — réécriture d'URL, d'en-tête, de corps et Mock, plus la liste des hôtes MitM. Celles-ci peuvent être ajoutées et supprimées ici :
- Collez une règle exactement comme vous l'écririez dans le fichier de configuration, puis appuyez sur Add (Ajouter). Une ligne qui ne s'analyse pas est refusée avec la remarque de l'analyseur au lieu d'être stockée — une règle qui ne peut jamais correspondre n'a aucun symptôme, mieux vaut donc l'apprendre tout de suite.
- Remove (Supprimer) supprime une règle ; Clear (Vider) vide une famille.
- Les modifications vivent uniquement dans le noyau en cours. Elles ne sont pas réécrites dans le fichier de configuration, et un rechargement ou un redémarrage rétablit ce que dit le fichier. Servez-vous-en pour essayer une règle, puis écrivez dans le fichier celle qui a marché.
Correspondances de réécriture et Mock — chaque règle de réécriture ou de Mock qui a agi pendant cette exécution, avec un compteur et l'heure de la dernière correspondance ; le tableau suit jusqu'à 512 règles distinctes et indique combien d'autres se sont déclenchées au-delà. Ce tableau est la réponse à « ma réécriture ne fait rien » : une règle qui n'y apparaît jamais n'a jamais correspondu, ce qui est un problème différent d'une règle qui a correspondu sans effet visible. Pour les distinguer, voir Pourquoi ma réécriture ne fait-elle rien ?.
Diagnostics (diagnostic)
Ce que le moteur retient, comment la dernière exécution s'est terminée, et une série de sondes que vous pouvez lui envoyer.
- Footprint / CPU / Uptime / Live flows / Superseded flows / Engine generation (Empreinte mémoire / CPU / Durée de fonctionnement / Flux actifs / Flux de génération antérieure / Génération du moteur) — la forme actuelle de l'exécution. Une empreinte qui grimpe alors que le nombre de flux reste stable mérite un examen ; sur iOS et tvOS, c'est aussi ce que le système surveille avant de reprendre l'extension.
- Previous exit (Sortie précédente) —
Clean(Normale),Terminated unexpectedly(Arrêt inattendu) ouKilled for memory(Arrêté pour cause de mémoire), avec l'identifiant, la durée et l'empreinte maximale de l'exécution précédente. À lire en premier quand Chute a « planté » : Killed for memory (Arrêté pour cause de mémoire) signifie que le système a repris Chute plutôt que Chute n'ait échoué, et cela change ce qu'il faut chercher. - Refusals (Refus) — un tableau de ce que le moteur a décliné et pourquoi, compté par ressource et par motif. Quand une connexion a été abandonnée et que rien d'autre ne l'explique, la raison est généralement ici.
- Run a probe (Lancer une sonde) — accessibilité (ICMP, ou TCP si vous donnez un port), une requête DNS via le résolveur en cours, une vérification de l'IP de sortie, et le test de latence d'une politique. Chacune est bornée et répond une seule fois. Un nom de politique inexistant est refusé plutôt que mesuré : une faute de frappe revient donc comme une faute de frappe.
- Events (Événements) — les moments notables de cette exécution : échecs massifs, changements de sortie, et similaires.
- Tailscale — l'état courant du moteur quand une section
[Tailscale]est configurée ;idles'il n'y en a pas, ce qui est une réponse normale. - Download diagnostic bundle (Télécharger l'ensemble de diagnostic) — une archive expurgée à joindre à un message de support. Ce qu'elle contient est décrit dans Envoyer un ensemble de diagnostic.
Config (configuration)
La configuration en cours, affichée dans une zone éditable, avec Reload (Recharger) pour appliquer ce qui s'y trouve.
La configuration affichée ici est expurgée de ses secrets. Mots de passe, secret de contrôle, phrase secrète de l'autorité, clés WireGuard et similaires apparaissent comme
<redacted>. Or Reload (Recharger) applique exactement ce qui est dans la zone : recharger le texte tel qu'affiché remplace donc ces secrets par le mot<redacted>littéral dans le noyau en cours, et les politiques qui en ont besoin se mettent à échouer. Le fichier de configuration n'est pas touché : resélectionner la configuration la rétablit.Utilisez cette page pour lire la configuration et pour appliquer une modification que vous avez saisie entièrement. Pour modifier le fichier lui-même, servez-vous de l'éditeur des applications.
Logs (journal)
Un suivi en direct du journal du noyau, coloré par niveau, avec Pause le temps de lire. La verbosité est fixée par loglevel, pas par cette page — si les lignes qu'il vous faut n'y sont pas, augmentez-le et reproduisez.
Ce que la console peut livrer
Considérez l'accès à la console comme un accès à tout ce que l'exécution a vu. Elle peut servir les enregistrements de connexions portant URL, en-têtes et noms de processus, les corps de requête et de réponse capturés, la configuration, et le journal. C'est pourquoi une console non authentifiée n'est pas la valeur par défaut, et pourquoi la lier ailleurs qu'en boucle locale exige un secret que vous définissez vous-même — voir external-http-secret.