Отладка Apple TV
Из трёх платформ Apple TV отлаживать труднее всего, и причины к Chute отношения не имеют: в tvOS нет браузера, нет меню «Поделиться», нет файлового менеджера, нет способа установить сертификат с самого устройства, а в руках у вас пульт, а не клавиатура. Chute tvOS отвечает на каждый из этих пунктов тем, что переносит интерфейс в другое место — в браузер на телефоне или Mac, в QR-код, в окно Dashboard.
Поэтому это руководство устроено иначе, чем два других: почти всё происходит вне телевизора.
1. Доставить конфигурацию на телевизор
Править конфигурацию пультом никто не захочет дважды, поэтому напишите её в другом месте и перешлите. На Apple TV пункт Добавить конфигурацию из... предлагает три пути:
- Загрузить файл через Wi-Fi или Chute iOS — телевизор поднимает локальный HTTP-слушатель и показывает URL и QR-код. Откройте этот URL в любом браузере и загрузите файл или отсканируйте код в Chute iOS. URL-схема
chute://tvоткрывает тот же экран импорта прямо в приложении на телефоне. - Загрузить по URL — телевизор забирает конфигурацию сам. Из трёх вариантов требует меньше всего набора текста, если файл лежит там, куда телевизор дотянется.
- Пустая конфигурация — пустая, для правки прямо на устройстве.
Для загрузки телевизор и второе устройство должны быть в одной сети Wi-Fi, а слушатель существует только пока открыт этот экран: уйти с него или заблокировать устройство — значит прервать передачу.
2. Включить два слушателя, которыми вы действительно будете пользоваться
Оба по умолчанию выключены, и без хотя бы одного из них отлаживать Apple TV нечем. Оба бесплатны: лицензия на этой платформе покрывает строки локального прокси-сервера и запись трафика, а не их.
HTTP API + Web UI — то есть Веб-консоль, где живут тела, экспорт 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 Порт и Веб-интерфейс со значением Вкл, а Порт внешнего доступа — с вашим портом. Если этого нет, туннель работает со старой копией конфигурации — перезапустите его.
3. Открыть консоль с другого устройства
На панели управления под переключателем веб-интерфейса есть строка Адрес веб-интерфейса. Выберите её:
- Если слушатель доступен с других устройств, телевизор покажет QR-код. Отсканируйте его телефоном в той же сети или наберите адрес в любом браузере. Токен входа едет внутри кода, а не выводится на экран, так что никому не придётся переписывать с телевизора 32 шестнадцатеричных символа.
- Если контроллер привязан к петлевому адресу, вместо кода телевизор покажет пояснение — см. шаг 2.
Дальше консоль одинакова на всех платформах: Соединения с разбором каждого и с телами, Правила со списком сработавших перезаписей, Диагностика с пробами 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
На этой платформе отличаются две вещи, и обе застают врасплох.
CA нельзя установить из приложения. В tvOS нет ни Safari, ни установщика профилей, поэтому сертификат должен прийти единственным способом, каким tvOS вообще принимает сертификаты: через MDM или Apple Configurator. Приложение так и пишет там, где правится список хостов. Создайте или импортируйте CA в конфигурации как обычно, экспортируйте его и доставьте на устройство одним из этих двух путей.
На панели управления нет переключателя MitM. В iOS и macOS он есть, в tvOS — нет. Расшифровка включается одним из способов:
- конфигурацией —
enable = trueв[MITM]; это ответ, который сохраняется; - из консоли или переключателем на панели инструментов Chute Dashboard;
- запросом
PUT /api/features/mitmс{"enabled": true}.
Последние три действуют только на работающее ядро и забываются при следующем перезапуске. Список hostname читается из конфигурации, но его можно править на ходу и из консоли, и из Dashboard.
[MITM]
enable = true
hostname = api.example.com, *.example.net
6. Запись — и как забрать результат с устройства
Сохранение данных на панели управления — это запись трафика, то есть параметр replica, и один из двух переключателей на tvOS, требующих лицензии. Без него соединения всё равно появляются со своим правилом, политикой и таймингами; отсутствует только полезная нагрузка.
Дальше начинается то, что свойственно только этой платформе: на Apple TV некуда положить файл. Здесь нет ни меню «Поделиться», ни приложения «Файлы», поэтому любой экспорт уходит по HTTP:
- HAR — страница соединений консоли, Экспорт HAR. Загрузка попадёт на машину с браузером.
- Диагностический пакет времени выполнения — страница диагностики консоли, Скачать диагностический пакет.
- Офлайн-диагностический пакет — «Настройки» → Офлайн-диагностический пакет, когда туннель не запущен. Телевизор соберёт архив и покажет QR-код; ссылка работает, только пока открыт этот экран.
7. Что телевизор всё-таки может рассказать сам
Некоторым вопросам второе устройство вовсе не нужно. В разделе «Настройки» → ДИАГНОСТИКА:
- Сессии — соединения этого запуска. Выбор одного открывает панель сведений с BASIC (дата, состояние, причина закрытия, длительность), POLICY (совпавшее правило и выбранная им политика), NODES (локальный адрес, сервер, удалённая сторона, хост), TRAFFIC, TIMING (готовность прокси, разрешение DNS, правило, готовность удалённой стороны, общее время активности) и сработавшими перезаписями. Тел запросов и ответов здесь нет — для них нужна консоль или Dashboard.
- Сессии → экран журнала — с фильтром по важности сверху (Все / Notify+ / Warning+ / Fatal), так что одного пульта хватает, чтобы сузить запуск до его предупреждений.
- Диагностика сети, Диагностика прокси, Таблица маршрутизации — достижимость, слушатели и маршрутизация такими, какими их видит устройство.
На панели управления есть ещё Очистить кэш DNS — самый быстрый способ перепроверить сопоставление [Host], не перезапуская туннель.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.