Déboguer une Apple TV
Des trois plateformes, l'Apple TV est la plus difficile à déboguer, pour des raisons qui n'ont rien à voir avec Chute : tvOS n'a pas de navigateur, pas de feuille de partage, pas d'explorateur de fichiers, aucun moyen d'installer un certificat depuis l'appareil, et vous avez une télécommande au lieu d'un clavier. Chute tvOS répond à chacun de ces points en déplaçant l'interface ailleurs — dans un navigateur sur votre téléphone ou votre Mac, dans un QR code, dans une fenêtre Dashboard.
Ce guide a donc une forme différente des deux autres : presque tout se passe hors du téléviseur.
1. Amener une configuration sur le téléviseur
Personne ne veut modifier une configuration à la télécommande deux fois : écrivez-la ailleurs et envoyez-la. Sur l'Apple TV, Ajouter une configuration depuis… propose trois voies :
- Envoyer un fichier via Wi-Fi ou Chute iOS — le téléviseur ouvre un écouteur HTTP local et affiche une URL et un QR code. Ouvrez cette URL dans n'importe quel navigateur pour téléverser le fichier, ou scannez le code avec Chute iOS. Le schéma d'URL
chute://tvouvre directement le même écran d'import dans l'application du téléphone. - Télécharger depuis une URL — le téléviseur va chercher la configuration lui-même. La voie qui demande le moins de frappe, si le fichier est là où il peut l'atteindre.
- Configuration vierge — une configuration vide à modifier sur l'appareil.
Pour le téléversement, le téléviseur et l'autre appareil doivent être sur le même Wi-Fi, et l'écouteur n'existe que tant que cet écran est ouvert : le quitter ou verrouiller l'appareil annule le transfert.
2. Activer les deux écouteurs dont vous vous servirez vraiment
Les deux sont désactivés par défaut, et sans au moins l'un d'eux une Apple TV est indébogable. Les deux sont gratuits : sur cette plateforme, la licence couvre les lignes du serveur proxy local et l'enregistreur de trafic, pas ceux-ci.
API HTTP + Interface web — c'est-à-dire la Console web, où vivent les corps, les exports HAR et les diagnostics :
[General]
external-http-controller = 0.0.0.0:9090
external-http-secret = your-own-token
external-http-ui = true
Liez-la à 0.0.0.0, pas à 127.0.0.1 : une console liée à la boucle locale ne peut pas être ouverte depuis un autre appareil, et il n'y a pas de navigateur sur le téléviseur pour l'ouvrir localement. Une liaison hors boucle locale exige un external-http-secret explicite, faute de quoi le contrôleur refuse de démarrer.
Accès au contrôleur externe — le canal binaire que parle Chute Dashboard. Dans l'éditeur de configuration, ouvrez Contrôleur externe :
- Activez Accès au contrôleur externe.
- Choisissez un Port (
6171est la valeur par défaut ici) et un Mot de passe à vous ; il ne peut pas être vide. - Activez Autoriser l'accès depuis le Wi-Fi. Sur une Apple TV, ce n'est pas facultatif comme sur un téléphone : il n'y a pas de voie câblée de repli, donc désactivé, rien venant de l'extérieur du téléviseur ne peut se connecter.
Vous devriez voir, dans le panneau de contrôle : Port de l'API HTTP et Interface web sur Activé, et Port d'accès externe affichant votre port. Si ce n'est pas le cas, le tunnel tourne avec une ancienne copie de la configuration — redémarrez-le.
3. Ouvrir la console depuis un autre appareil
Le panneau de contrôle comporte une ligne Adresse de l'interface web sous l'interrupteur de l'interface web. Sélectionnez-la :
- Si l'écouteur est joignable depuis d'autres appareils, le téléviseur affiche un QR code. Scannez-le avec un téléphone sur le même réseau, ou tapez l'adresse dans un navigateur. Le jeton de connexion voyage dans le code plutôt que de s'afficher, si bien que personne n'a à recopier 32 caractères hexadécimaux depuis un téléviseur.
- Si le contrôleur est lié à la boucle locale, le téléviseur affiche une explication au lieu d'un code — voir l'étape 2.
À partir de là, la console est identique sur toutes les plateformes : Connexions avec inspection ligne à ligne et corps, Règles avec la liste des réécritures qui ont agi, Diagnostics avec les sondes ping / DNS / sortie / test d'URL, et Journaux.
4. Connecter Chute Dashboard
Sur un Mac, ouvrez Chute Dashboard et utilisez la section Distant : Hôte est l'adresse de l'Apple TV — le panneau de contrôle l'affiche sous IP LOCALE — avec le port et le mot de passe de l'étape 2. La section USB est destinée aux iPhone ; une Apple TV s'atteint par le réseau.
Tout ce que Dashboard fait pour un téléphone, il le fait ici — les listes Actif et Récent, les vues DNS et UDP, les panneaux d'outils MitM, les exports HAR et curl d'un clic droit.
5. Déchiffrer le HTTPS
Deux choses diffèrent sur cette plateforme, et les deux surprennent.
Le CA ne peut pas être installé depuis l'application. tvOS n'a ni Safari ni installateur de profils : le certificat doit donc arriver par la seule voie que tvOS accepte pour les certificats, MDM ou Apple Configurator. L'application le dit là où se modifie la liste des hôtes. Générez ou importez le CA dans la configuration comme d'habitude, exportez-le, et acheminez-le vers l'appareil par l'une de ces deux voies.
Il n'y a pas d'interrupteur MitM dans le panneau de contrôle. iOS et macOS en ont un, tvOS non. Le déchiffrement s'active par l'un de ces moyens :
- la configuration —
enable = truedans[MITM], la réponse qui dure ; - la console, ou l'interrupteur de la barre d'outils de Chute Dashboard ;
PUT /api/features/mitmavec{"enabled": true}.
Les trois derniers n'agissent que sur le noyau en cours et sont oubliés au redémarrage suivant. La liste hostname est lue depuis la configuration, mais elle se modifie à chaud depuis la console comme depuis Dashboard.
[MITM]
enable = true
hostname = api.example.com, *.example.net
6. Enregistrer, et sortir le résultat de l'appareil
Données de vidage, dans le panneau de contrôle, est l'enregistreur de trafic — le réglage replica — et l'un des deux interrupteurs sous licence sur tvOS. Sans lui, les connexions apparaissent quand même avec leur règle, leur politique et leurs temps ; seules les charges utiles manquent.
Vient ensuite ce qui est propre à cette plateforme : l'Apple TV n'a nulle part où poser un fichier. Pas de feuille de partage, pas d'application Fichiers : tout export sort donc par HTTP.
- HAR — page Connexions de la console, Exporter en HAR. Le téléchargement arrive sur la machine qui fait tourner le navigateur.
- Ensemble de diagnostic d'exécution — page Diagnostics de la console, Télécharger l'ensemble de diagnostic.
- Ensemble de diagnostic hors ligne — Réglages → Ensemble de diagnostic hors ligne, lorsque le tunnel ne tourne pas. Le téléviseur construit l'archive et affiche un QR code ; le lien ne fonctionne que tant que cet écran reste ouvert.
7. Ce que le téléviseur peut encore vous dire lui-même
Certaines questions ne demandent aucun autre appareil. Sous Réglages → DIAGNOSTIC :
- Sessions — les connexions de cette exécution. En sélectionner une ouvre un panneau de détail avec BASIC (date, état, motif de fermeture, durée), POLICY (la règle correspondante et la politique qu'elle a choisie), NODES (local, serveur, distant, hôte), TRAFFIC, TIMING (proxy prêt, résolution DNS, règle, distant prêt, temps actif total) et les réécritures qui ont agi. Pas de corps de requête ni de réponse — cela demande la console ou Dashboard.
- Sessions → l'écran des journaux — avec un filtre de gravité au-dessus (Tout / Notify+ / Warning+ / Fatal), de sorte qu'une télécommande suffit à réduire une exécution à ses avertissements.
- Diagnostic réseau, Diagnostic du proxy, Table de routage — l'accessibilité, les écouteurs et le routage tels que l'appareil les voit.
Le panneau de contrôle propose aussi Purger le cache DNS, le moyen le plus rapide de retester un mappage [Host] sans redémarrer le tunnel.