Console web

Chute sert une console d'administration en HTTP depuis le moteur 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 moteur 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

Les requêtes que la console garde résidentes pendant le service sont plafonnées à 4 Mo sous macOS et 1 Mo sous iOS, tvOS et Android.

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.

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.

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.

Connexions

La page où vous passerez le plus de temps. Deux onglets :

  • Actuelles — les connexions ouvertes en ce moment.
  • 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 Actuelles. 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
Chaîne de proxys Pour une connexion chaînée, le chemin de cet appareil jusqu'à la sortie, comme Airport/HK-01 → Landing : chaque saut dans l'ordre, un groupe suivi de son choix actuel après une barre oblique. - quand la connexion n'a utilisé qu'une politique
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 réponse simulée 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
Motif de fermeture / Note Pourquoi elle s'est terminée, et ce que le moteur 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 = true dans [General], ou
  • Chute Mac : barre des menus → Capture du trafic, ou
  • l'API : PUT /api/features/record-traffic avec {"enabled": true}.

Sans lui, les connexions apparaissent toujours avec toute leur attribution de routage et leurs mesures de temps — seules les charges utiles manquent. Sur iOS, tvOS et Android, l'enregistrement exige en outre une licence active : sans elle, rien n'est capturé, quel que soit l'interrupteur activé. 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

Exporter en HAR, sur la page Connexions, télécharge l'onglet courant sous forme de fichier HAR 1.2 — plafonné à 100 entrées, la valeur par défaut du point de terminaison (limit sur celui-ci monte au plus à 300), alors que l'onglet Historique 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 Tableau de bord de Chute iOS propose Exporter en HAR et Tout exporter en HAR (générés par le moteur 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. 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.

Politiques

Le mode de sortie (Règle / Global / Direct) et chaque groupe de politiques avec sa sélection courante, sauf les groupes marqués hidden=true. Un changement ici prend effet immédiatement sur le moteur en cours — c'est la même action que basculer un groupe dans les applications.

Règles

Deux choses différentes partagent cette page, et elles ne se comportent pas pareil.

Règles de routage — chaque règle que parcourt le moteur de correspondance, dans l'ordre d'évaluation : les règles Tailscale automatiques, puis celles des modules, puis la section [Rule] de la configuration, et enfin FINAL. En lecture seule : elles viennent de la configuration et de ses modules.

Règles de réécriture et de réponse simulée — réécriture d'URL, d'en-tête, de corps et réponse simulée, 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 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.
  • Supprimer supprime une règle ; Vider vide une famille.
  • Les modifications vivent uniquement dans le moteur 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 de réponse simulée — chaque règle de réécriture ou de réponse simulée 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 ?.

Jeux de règles — chaque fournisseur de règles et chaque jeu de règles référencé par la configuration, avec son état : le nombre de règles apportées une fois chargé, ou la raison du non-chargement. Une charge utile au-delà du plafond de la plateforme, une URL sans réponse et un corps illisible apparaissent ici au lieu de ne rien filtrer en silence ; la même liste est servie par GET /api/rules/providers.

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.

  • 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.
  • Sortie précédente — Normale, Arrêt inattendu ou 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é » : 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.
  • 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.
  • Lancer une sonde — accessibilité (ICMP, ou TCP si vous donnez un port), une requête DNS via le résolveur en cours, un test Internet direct sans proxy, une vérification d'adresse — Adresse réseau sur les moteurs Apple, qui indique les adresses propres de l'appareil, et IP de sortie sur Android, qui indique l'adresse publique par laquelle le trafic sort — 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.
  • Événements — les moments notables de cette exécution : échecs massifs, changements d'adresse, et similaires.
  • Tailscale — l'état courant du moteur quand une section [Tailscale] est configurée ; Aucune section [Tailscale] configurée s'il n'y en a pas, ce qui est une réponse normale.
  • 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

La configuration en cours, affichée dans une zone éditable, avec 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 du CA, clés WireGuard et similaires apparaissent comme <redacted>. Or 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 moteur 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.

Journal

Un suivi en direct du journal du moteur, 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. Pour le modifier sans redémarrer l'exécution, utilisez PUT /api/loglevel de l'API de contrôle HTTP.

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.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

results matching ""

    No results matching ""