Chute Dashboard

Chute Dashboard — бесплатное приложение для macOS, которое подключается к работающему Chute — Chute iOS по Wi-Fi или USB-кабелю, либо Chute Mac на той же машине — и показывает, что делает этот экземпляр: каждое соединение с правилом и политикой, которые его решили, расшифрованные запрос и ответ для хостов под расшифровкой HTTPS, ответы DNS, сессии UDP. Оно же позволяет менять трафик прямо во время наблюдения: список хостов MitM и каждое семейство правил перезаписи и Mock редактируются вживую.

Это не веб-консоль. Консоль отдаётся самим ядром и открывается в браузере; Dashboard — отдельное приложение, которое говорит с ядром по его двоичному каналу управления, поэтому ему нужен на устройстве external-controller-access, а не external-http-controller. Они пересекаются, и у каждого есть то, чего нет у другого — см. До чего Dashboard не дотягивается.

Интерфейс Dashboard локализован на те же языки, что и это руководство, кроме арабского; в арабской системе он показывается по-английски.

Разрешить Dashboard подключаться

Ничто не слушает, пока устройство не разрешит.

Chute iOS — в редакторе конфигурации откройте Внешний контроллер → Доступ внешнего контроллера:

  1. Включите Разрешить подключение Chute Dashboard/Chute CLI.
  2. Задайте Порт и Пароль. Пароль не может быть пустым и должен быть вашим собственным: слушатель, доступный из сети, отказывается запускаться с пустым паролем или паролем по умолчанию.
  3. Оставьте Разрешить доступ по Wi-Fi выключенным, если он не нужен. Выключено — значение по умолчанию: слушатель остаётся на самом телефоне — USB-кабель до него дотягивается, другие устройства в Wi-Fi нет. Включено означает, что любой в сети, знающий пароль, может прочитать всё, что видел этот запуск.
  4. Сохраните и запустите (или перезапустите) туннель. Панель управления теперь показывает Порт внешнего доступа: <порт> — эта строка и есть подтверждение, что слушатель поднят.

Chute Mac — те же три значения живут в [General]:

[General]
external-controller-access = password@127.0.0.1:6170

127.0.0.1 ограничивает его тем Mac, за которым вы сидите, — ровно то, что нужно Dashboard на том же Mac; адрес локальной сети или 0.0.0.0 открывает его другим машинам. В разделе General окна конфигурации есть поля для того же ключа.

Подключение

Dashboard открывается окном Chute — новая панель мониторинга; у каждого подключения своё окно, так что несколько устройств могут быть открыты одновременно. Два пути внутрь:

Поля Когда
Удалённый Хост, Порт, Пароль Wi-Fi-адрес устройства (iPhone: Настройки → Wi-Fi → ⓘ) или 127.0.0.1 для Chute Mac на этой машине. Требует Разрешить доступ по Wi-Fi на телефоне.
USB Порт, Пароль iPhone подключён кабелем и доверяет этому Mac. Введите тот же порт, что настроили, — канал по кабелю Dashboard находит сам. Работает при выключенном Разрешить доступ по Wi-Fi и показывает в том числе сотовый трафик, поскольку телефону вовсе не нужно быть в Wi-Fi.

Машины, к которым вы подключались, запоминаются под Компьютер: на следующий раз.

Если пароль неверен, окно сообщает Неверный пароль. Если устройство пропало — туннель остановлен, кабель выдернут, телефон сменил сеть, — окно Dashboard сообщает Подключение закрыто и предлагает Переподключиться; автоматического переподключения нет.

Окно

Панель инструментов переключает пять представлений — Активно, Недавние, DNS, UDP и MitM, — а Фильтр показывает или скрывает панель фильтров. Панель в левом нижнем углу — текущая скорость загрузки и скачивания; щёлкните её, чтобы развернуть график.

В представлениях Активно и Недавние на панели инструментов есть ещё два переключателя, действующие на работающее ядро, — ровно так же, как переключатели в приложениях:

  • Записывать трафикОтключить запись трафика: включает захват тел запросов и ответов (параметр replica). Без него строки всё равно появляются со своей маршрутизацией, но вкладки данных остаются пустыми.
  • Включить MitM (N правил)Отключить MitM (N правил): включает расшифровку HTTPS для N хостов из списка хостов MitM. Переключатель не делает ничего полезного, пока на устройстве нет доверенного CA и хотя бы одного хоста — см. страницу Расшифровка HTTPS.

Ни один из переключателей не правит файл конфигурации; перезапуск возвращает то, что сказано в файле.

Боковая панель группирует соединения по клиентам: Все клиенты, затем Локальный — клиенты на самом устройстве — и Удалённый — другие машины, использующие этот Chute как прокси. Выбор одного сужает каждый список до него. Когда устройство — Chute Mac, локальные клиенты — это приложения, с именем и значком, и в контекстном меню есть Показать в Finder.

Активно и Недавние

Активно — то, что открыто прямо сейчас; Недавние — история устройства, новые сверху, прочитанная из записей этого запуска. У обоих один набор столбцов:

Столбец
ID Номер соединения в ядре — тот же номер, что показывают консоль и приложения
Дата, Длительность Когда началось и сколько длится или длилось
Клиент Процесс (Chute Mac) или локальный адрес
Метод, Сервер, Статус Строка запроса и ответ, разобранные из захваченного запроса
Политика Политика, выбранная правилом
Загрузка, Скачивание Байты в каждую сторону
Флаги Что Chute сделал с соединением — см. легенду ниже

Столбец Флаги — самый быстрый способ понять, применяется ли написанное вами правило:

Флаг Значение
M Расшифровано (перехвачено MitM)
H Изменён заголовок
B Изменено тело
R Сработало правило перезаписи
K Ответил макет Map Local, а не сервер

Недавние хранят до 5 000 строк; Загрузить более ранние внизу списка запрашивает у устройства следующую страницу, а сам список обновляется раз в несколько секунд. Когда активный список длиннее, чем вмещает один пакет управления, заметка под таблицей говорит, что ядро его сократило, — строки есть на устройстве, и Недавние покажут их, когда они закроются.

Щелчок правой кнопкой по строке даёт Копировать команду curl, Экспортировать выбранное как HAR… / CSV… и Экспортировать всё как HAR… / CSV…; у активной строки есть ещё Разорвать подключение, закрывающее её на устройстве.

Внимание: Строка — это соединение, а не запрос. Соединение keep-alive, пронёсшее несколько запросов, остаётся одной строкой, а захваченные данные содержат все эти сообщения подряд; показанные заголовки принадлежат одному из запросов. Поэтому браузер, открывающий страницу, порождает меньше строк, чем у страницы ресурсов.

Панель фильтров

Панель фильтров сужает то, что показано. Она не меняет того, что записывает устройство — для этого служит [Replica] на устройстве.

Элемент Варианты
Фильтр по хосту/URL… Текст, сопоставляемый с хостом и URL
Метод GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT
Статус 1xx – 5xx
Трафик Активно, Завершено, Прервано
Тип JSON, HTML, XML, Изображение, Текст, Двоичный — по типу содержимого ответа
Длительность < 100ms, 100ms–1s, 1s–5s, > 5s
Размер < 1 KB, 1–100 KB, 100 KB–1 MB, > 1 MB
Только MitM Только расшифрованные соединения
Изменённые Соединения, которые изменило правило — любой из H, B, R, K

Сбросить фильтры возвращает всё.

Сведения о соединении

Откройте строку, чтобы получить окно сведений. Вкладки слева направо:

Общее — то, что показывает список, но с простором: строка запроса и код состояния; исходящий режим, политика и сработавшее правило; объём данных и пиковые скорости; локальный и удалённый адреса; время запуска; состояние SSL/MitM (Перехвачено, Заголовок изменён, Тело изменено, Макет); и Сработавшие правила — каждое правило перезаписи или Mock, изменившее это соединение, процитированное собственным текстом. Правило, которого здесь нет, этого соединения не касалось.

Тайминг — на что ушло установление соединения, как измерило ядро:

Строка Считается от → до
Подготовка прокси Соединение клиента пришло → Chute готов его обрабатывать
Разрешение DNS → имя разрешено (ноль, если правилу адрес не понадобился)
Подбор правила → таблица правил решила
Подготовка удалённого узла → выбранный выход подключён и готов
Активно Всё после этого, до закрытия соединения

Медленный запрос обычно медленный ровно в одной из этих строк, и какая именно — подсказывает, куда смотреть: DNS — в раздел DNS, подготовка удалённого узла — в политику или сервер за ней, Активно — в само приложение.

Заголовки запроса / Заголовки ответа — заголовки таблицей, с отдельными Параметры запроса и Cookies для запроса и Cookies для ответа. Заголовок, изменённый правилом, подсвечен. Копировать выбранное копирует выделенные строки.

Данные запроса / Данные ответа — захваченное тело как Hex, Текст, JSON (раскрываемое дерево с поиском) или Изображение (По размеру / Реальный размер); тела multipart разбираются на части. Экспортировать как bin сохраняет сырые байты. Данные есть только если запись была включена, когда шло соединение, и только для хостов, которые пропускают фильтры [Replica].

Внимание: Тела показываются в том виде, в каком захвачены. Сжатый ответ — Content-Encoding: gzip — здесь не распаковывается, так что его вид Текст и JSON — шум; вид Hex и Экспортировать как bin дают байты, чтобы распаковать их где-то ещё. Устройство отказывается отдавать тело больше 2 МиБ, а вид Hex показывает первый МиБ.

DNS и UDP

DNS — кэш резолвера устройства: каждый домен с адресами, в которые он разрешился, сервер, ответивший первым (Chute опрашивает все настроенные серверы сразу — см. DNS), TTL и тип записи. Правая кнопка — Копировать домен, Копировать IP-адреса и Копировать DNS-сервер.

UDP перечисляет сессии UDP — хост, сервер, политику и состояние. Тел у UDP нет.

Инструменты MitM

Представление MitM управляет пятью семействами правил на устройстве в пяти панелях: Правила MitM, Перезапись заголовков, Перезапись тела, Map Local и Map Remote. Что верно для всех:

  • Список — это копия правил работающего ядра, которая начинается с того, что объявил файл конфигурации.
  • Добавление правила отправляет его на устройство, которое разбирает его так же, как строку конфигурации; строка, которая не разбирается, отвергается с ошибкой, а не сохраняется.
  • Изменения живут только в работающем ядре. В файл конфигурации они не записываются, а перезагрузка или перезапуск возвращает то, что сказано в файле. Найдите с помощью панелей правило, которое работает, и запишите его в конфигурацию.
  • Применяется ли правило, видно в столбце Флаги списка (R, K) и в Сработавшие правила окна сведений.

Правила MitM — один шаблон хоста на правило, host[:port][/path], с префиксом - для исключения: *.google.com, api.example.com:8443, api.example.com/v2/*, -*.apple.com. Та же грамматика, что у ключа hostname на странице Расшифровка HTTPS. Число на переключателе MitM панели инструментов — длина этого списка.

Перезапись заголовков — форма: Регулярное выражение URL, Запрос или Ответ, Добавить / Заменить / Удалить, Имя заголовка, Значение заголовка. Строку конфигурации Dashboard составляет за вас; грамматика — на странице Перезапись заголовков.

Перезапись тела — одна строка конфигурации, введённая так, как вы написали бы её в файле: url-regex type pattern replacement, где тип — response, request, jsonpath-response или jsonpath-request. См. Перезапись тела.

Map LocalРегулярное выражение URL, Путь к файлу (Обзор…) и необязательные Заголовки ответа, по одному Имя: Значение на строку.

Внимание: Путь к файлу читает устройство, на котором работает Chute, в момент запроса. Путь на вашем Mac имеет смысл, когда Dashboard подключён к Chute Mac на той же машине, и не имеет, когда он подключён к iPhone — у телефона нет /Users/…. Для удалённого устройства вложите содержимое прямо в правило формой base64= (см. Имитация ответов) через редактор устройства или веб-консоль, либо отдавайте файл по URL и используйте Map Remote.

Map RemoteРегулярное выражение URL, Цель и Тип: header перезаписывает запрос на месте (Map Remote из Surge), 302 и 307 перенаправляют клиента, а reject, reject-200, reject-img, reject-dict отвечают, не обращаясь к серверу. См. Перезапись URL.

Экспорт

  • HAR — правая кнопка на списке: выбранные строки или все, файлом HAR 1.2, который открывается в инструментах разработчика браузера (Сеть → импорт), Charles или Proxyman. Одна запись на строку; тела включены, если была включена запись.
  • CSV — столбцы списка, для электронной таблицы.
  • Копировать команду curl — вызов curl, повторяющий запрос с вашего Mac вместе с его заголовками.
  • Экспортировать как bin — одно тело, как захвачено.

Dashboard строит свой HAR из того, что получил. Ядро умеет строить свой — со сработавшим правилом, политикой и сработавшими перезаписями в объекте _kl каждой записи и временами отправки и приёма, взятыми из захвата, — через Export HAR (Экспорт HAR) в консоли или GET /api/connections/export?format=har.

До чего Dashboard не дотягивается

Dashboard говорит по двоичному каналу управления ядра, а часть того, что умеет ядро, есть только в HTTP-API управления. Для этого используйте веб-консоль или API:

  • диагностический пакет, здоровье, счётчики отказов и события;
  • итоги срабатываний по правилам на странице Rules консоли и ответ, который они дают: срабатывало ли это правило хоть раз;
  • собственный HAR ядра, см. выше;
  • журнал.

Ещё две вещи, которые стоит знать, прежде чем на него полагаться:

  • Chute Android не предлагает двоичного канала, поэтому Dashboard к нему подключиться не может. Собственная удалённая панель Android и веб-консоль покрывают то же самое.
  • На iPhone и Apple TV расшифровка HTTPS и захват тел — лицензируемые функции. Без лицензии Dashboard всё равно подключается и показывает каждое соединение с правилом и политикой, но строки HTTPS остаются непрозрачными туннелями CONNECT, вкладки данных — пустыми, а переключатель MitM ничего не делает. См. Лицензия и активация.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-01 12:20:57

Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.

results matching ""

    No results matching ""