调试 Apple TV
三个平台里 Apple TV 最难调,原因和 Chute 无关:tvOS 没有浏览器、没有分享面板、没有文件浏览器、没法在设备上自己装证书,而且你手里是一只遥控器而不是键盘。Chute tvOS 对每一条的回答都是把界面搬到别处——你手机或 Mac 上的浏览器、一个二维码、一个 Dashboard 窗口。
所以这篇指南的形状和另外两篇不同:几乎所有事情都发生在电视之外。
1. 把配置弄到电视上
拿遥控器编辑配置这种事没人愿意做第二次,所以在别处写好再传过去。Apple TV 上的 从...添加配置 给了三条路:
- 通过 Wi-Fi 或 Chute iOS 上传文件 —— 电视开一个本地 HTTP 监听器,屏幕上显示一个网址和一个二维码。用任意浏览器打开那个网址上传文件,或者用 Chute iOS 扫码。
chute://tvURL Scheme 可以直接在手机 App 里打开同一个导入界面。 - 从 URL 下载 —— 电视自己去取配置。三条里打字最少的一条,前提是文件放在它够得着的地方。
- 空白配置 —— 一份空的,在设备上编辑。
走上传这条路时,电视和另一台设备要在同一个 Wi-Fi 下,而且监听器只在那个界面开着的时候存在——离开界面或锁屏都会中断传输。
2. 打开你真正会用到的两个监听器
两个默认都是关的,而且不开其中至少一个,Apple TV 根本没法调。两个都是免费的——这个平台上许可证管的是本地代理服务器那几行和流量记录器,不是这两个。
HTTP API + Web UI —— 也就是 Web 控制台,正文、HAR 导出和诊断都在那里:
[General]
external-http-controller = 0.0.0.0:9090
external-http-secret = your-own-token
external-http-ui = true
要绑 0.0.0.0 而不是 127.0.0.1:绑在回环上的控制台没法从别的设备打开,而电视上又没有浏览器可以在本地打开它。非回环绑定必须显式写 external-http-secret,否则控制器拒绝启动。
外部控制器访问 —— Chute Dashboard 说的那条二进制通道。在配置编辑器里打开 外部控制器:
- 打开 外部控制器访问。
- 填一个 端口(这里默认是
6171)和一个你自己的 密码,密码不能为空。 - 打开 允许通过 Wi-Fi 访问。在 Apple TV 上这一项不像手机上那样可选——这里没有可以退而求其次的线缆通路,关着的话电视之外的任何东西都连不进来。
你应该看到控制面板上:HTTP API 端口 和 Web UI 显示 开,外部访问端口 显示你填的端口。没有就说明隧道跑的还是旧的配置——重启它。
3. 从别的设备打开控制台
控制面板上,Web UI 开关下面单独有一行 Web UI 地址。选中它:
- 如果监听器能被别的设备访问到,电视会显示一个二维码。用同一网络上的手机扫它,或者把地址敲进任意浏览器。登录令牌藏在码里而不是显示在屏幕上,所以没人需要从电视上抄 32 个十六进制字符。
- 如果控制器绑在回环上,电视显示的是一段说明而不是二维码——见第 2 步。
从那里开始,控制台在每个平台上都一样:连接(可逐条展开查看,含正文)、规则(列出本次运行中生效过的改写)、诊断(ping / DNS / 出口 / URL 测试探针)和日志。
4. 连上 Chute Dashboard
在 Mac 上打开 Chute Dashboard,用 远程 分区:主机 填 Apple TV 的地址——控制面板的 本地 IP 那一行就是——端口和密码用第 2 步的。USB 分区是给 iPhone 的;Apple TV 走网络。
Dashboard 为手机做的事这里一样做:活跃与最近列表、DNS 与 UDP 视图、MitM 工具面板、右键的 HAR 与 curl 导出。
5. 解密 HTTPS
这个平台上有两处不同,两处都会让人意外。
CA 没法从 App 里安装。 tvOS 没有 Safari 也没有描述文件安装器,所以证书只能按 tvOS 接受证书的唯一方式送进去:MDM,或者 Apple Configurator。App 在编辑主机列表的地方就是这么写的。照常在配置里生成或导入 CA、导出它,然后用这两条路之一送到设备上。
控制面板上没有 MitM 开关。 iOS 和 macOS 都有一个,tvOS 没有。解密由下面之一打开:
- 配置文件——
[MITM]段里enable = true,这是能留下来的那个答案; - 控制台,或者 Chute Dashboard 工具栏上的开关;
PUT /api/features/mitm,带{"enabled": true}。
后三种只作用于运行中的内核,下次重启就忘了。hostname 列表读自配置文件,也可以从控制台或 Dashboard 在线改。
[MITM]
enable = true
hostname = api.example.com, *.example.net
6. 录制,以及把结果弄出设备
控制面板上的 转储数据 就是流量记录器——replica 设置——也是 tvOS 上两个需要许可证的开关之一。不开的话,连接照样带着规则、策略和时序出现,只是没有正文。
接下来是这个平台独有的部分:Apple TV 没有地方放文件。 没有分享面板也没有「文件」App,所以每一次导出都走 HTTP:
- HAR —— 控制台连接页的 导出 HAR。下载落在跑浏览器的那台机器上。
- 运行时诊断包 —— 控制台诊断页的 下载诊断包。
- 离线诊断包 —— 隧道没在跑时,走 设置 → 离线诊断包。电视打好包并显示一个二维码;链接只在那个界面开着时有效。
7. 电视自己还能告诉你什么
有些问题根本不需要另一台设备。在 设置 → 诊断 下:
- 会话 —— 本次运行的连接。选中一条会打开详情面板:BASIC(日期、状态、关闭原因、时长)、POLICY(命中的规则和它选的策略)、NODES(本地、服务器、远端、主机)、TRAFFIC、TIMING(代理就绪、DNS 解析、规则、远端就绪、总活跃时长),以及生效过的改写。没有请求与响应正文——那要控制台或 Dashboard。
- 会话 → 日志界面 —— 上方有一个严重度过滤器(全部 / Notify+ / Warning+ / Fatal),所以一只遥控器就够把一次运行收窄到它的警告。
- 网络诊断、代理诊断、路由表 —— 设备眼中的可达性、监听器和选路。
控制面板上还有 清除 DNS 缓存,这是不重启隧道就重测一条 [Host] 映射的最快办法。
本页为英文版的翻译。如内容有出入,以英文版为准。