Apple TV のデバッグ
3 つのプラットフォームの中で Apple TV が最も手強いのですが、その理由は Chute とは関係ありません。tvOS にはブラウザも共有シートもファイルブラウザも無く、デバイス上から証明書をインストールする方法も無く、手元にあるのはキーボードではなくリモコンです。Chute tvOS はそのそれぞれに、インターフェイスを別の場所へ移すことで答えています — スマートフォンや Mac のブラウザ、QR コード、Dashboard のウィンドウ。
そのためこのガイドは他の 2 つとかたちが違います。ほとんどすべてがテレビの外で起こります。
1. 設定をテレビに送り込む
リモコンで設定を編集するのは誰も二度とやりたくない作業なので、別の場所で書いて送り込みます。Apple TV の 設定を追加... には 3 つの経路があります:
- Wi-Fi または Chute iOS でファイルをアップロード — テレビがローカルの HTTP リスナーを開き、URL と QR コードを表示します。任意のブラウザでその URL を開いてファイルをアップロードするか、Chute iOS でコードを読み取ります。
chute://tvURL スキームを使えば、スマートフォンのアプリで同じインポート画面を直接開けます。 - URLからダウンロード — テレビ自身が設定を取得します。ファイルがテレビから到達できる場所にあるなら、3 つの中で最も入力が少なくて済みます。
- 空の設定 — 空のものをデバイス上で編集します。
アップロードの経路では、テレビともう一方のデバイスが同じ Wi-Fi にいる必要があり、リスナーはその画面が開いている間だけ存在します — 画面を離れたりデバイスをロックしたりすると転送は中断します。
2. 実際に使う 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
127.0.0.1 ではなく 0.0.0.0 にバインドしてください。ループバックにバインドされたコンソールは他のデバイスから開けませんし、テレビにはそれをローカルで開くブラウザもありません。ループバック以外へのバインドには明示的な external-http-secret が必要で、無ければコントローラーは起動を拒否します。
外部コントローラーアクセス — Chute Dashboard が話すバイナリチャネルです。設定エディタで 外部コントローラー を開きます:
- 外部コントローラーアクセス をオンにします。
- ポート(ここでの既定は
6171)と、自分で決めた パスワード を設定します。空にはできません。 - Wi-Fiからのアクセスを許可 をオンにします。Apple TV ではこれはスマートフォンのように任意ではありません — 代わりに使えるケーブル経路が無いため、オフのままではテレビの外から何も接続できません。
見えるはずのもの:コントロールパネルに HTTP APIポート と Web UI が オン と表示され、外部アクセスポート に設定したポートが出ます。出ないならトンネルは古い設定で動いています — 再起動してください。
3. 別のデバイスからコンソールを開く
コントロールパネルには Web UI スイッチの下に Web UI アドレス の行があります。これを選ぶと:
- リスナーが他のデバイスから到達可能なら、テレビは QR コード を表示します。同じネットワークのスマートフォンで読み取るか、アドレスを任意のブラウザに入力してください。サインイン用のトークンは画面に表示されるのではなくコードの中を通るので、テレビから 16 進数 32 文字を書き写す人は誰もいりません。
- コントローラーがループバックにバインドされている場合、テレビはコードではなく説明を表示します — ステップ 2 を参照。
そこから先、コンソールはどのプラットフォームでも同じです:接続(1 件ずつ展開して調べられ、ボディも見られます)、ルール(この実行で効いた書き換えの一覧)、診断(ping / DNS / 出口 / URL テストのプローブ)、ログ。
4. Chute Dashboard を接続する
Mac で Chute Dashboard を開き、リモート のセクションを使います:ホスト は Apple TV のアドレス — コントロールパネルの LOCAL IP の行がそれです — で、ポートとパスワードはステップ 2 のものです。USB のセクションは iPhone 用で、Apple TV にはネットワーク経由で届きます。
Dashboard がスマートフォンに対して行うことはここでも同じです — アクティブと最近の一覧、DNS と UDP のビュー、MitM ツールのパネル、右クリックでの HAR と curl の書き出し。
5. HTTPS の復号
このプラットフォームでは 2 点が異なり、どちらも意外に思われます。
CA をアプリからインストールできません。 tvOS には Safari もプロファイルインストーラーも無いので、証明書は tvOS が証明書を受け入れる唯一の方法で届ける必要があります:MDM、または Apple Configurator。ホストリストを編集する画面で、アプリ自身がそう表示します。CA はいつも通り設定で生成またはインポートしてエクスポートし、そのどちらかの経路でデバイスに届けてください。
コントロールパネルに MitM のスイッチがありません。 iOS と macOS にはありますが、tvOS にはありません。復号は次のいずれかでオンにします:
- 設定 —
[MITM]のenable = true。残る答えはこれです。 - コンソール、または Chute Dashboard のツールバーのスイッチ。
PUT /api/features/mitmに{"enabled": true}。
後ろの 3 つは動作中のカーネルにだけ作用し、次の再起動で忘れられます。hostname のリストは設定ファイルから読まれますが、コンソールからも Dashboard からもその場で編集できます。
[MITM]
enable = true
hostname = api.example.com, *.example.net
6. 記録と、結果をデバイスの外へ出す方法
コントロールパネルの データダンプ がトラフィックレコーダー — replica 設定 — で、tvOS でライセンスが要る 2 つのスイッチの一方です。これが無くても接続はルール、ポリシー、タイミング付きで現れます。単にペイロードが無いだけです。
そしてここからがこのプラットフォーム固有の部分です:Apple TV にはファイルを置く場所がありません。 共有シートもファイルアプリも無いので、書き出しはすべて HTTP 経由になります:
- HAR — コンソールの接続ページの HAR を書き出し。ダウンロードはブラウザを動かしているマシンに落ちます。
- ランタイム診断バンドル — コンソールの診断ページの 診断バンドルをダウンロード。
- オフライン診断バンドル — トンネルが動いていないときに、設定 → オフライン診断バンドル。テレビがアーカイブを作って QR コードを表示します。リンクはその画面が開いている間だけ有効です。
7. テレビ自身が答えられること
別のデバイスがまったく要らない問いもあります。設定 → 診断 の下:
- セッション — この実行の接続。1 件選ぶと詳細パネルが開き、BASIC(日時、状態、切断理由、継続時間)、POLICY(マッチしたルールとそれが選んだポリシー)、NODES(ローカル、サーバー、リモート、ホスト)、TRAFFIC、TIMING(プロキシ準備、DNS 解決、ルール、リモート準備、総アクティブ時間)、そして効いた書き換えが表示されます。リクエストとレスポンスのボディはありません — それにはコンソールか Dashboard が必要です。
- セッション → ログ画面 — 上部に重大度フィルター(すべて / Notify+ / Warning+ / Fatal)があるので、リモコンだけで実行を警告まで絞り込めます。
- ネットワーク診断、プロキシ診断、ルートテーブル — デバイスから見た到達性、リスナー、経路。
コントロールパネルには DNSキャッシュを消去 もあり、トンネルを再起動せずに [Host] のマッピングを試し直す最速の方法です。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。