Веб-консоль

Chute отдаёт консоль управления по HTTP прямо из работающего ядра. Это единственный интерфейс, одинаковый на всех платформах, поэтому руководство указывает сюда всякий раз, когда на что-то нужно посмотреть, а не настроить его: маршрут запроса, перезапись, которая не срабатывает, причина отказа в соединении.

Это не Chute Dashboard. Dashboard — отдельное приложение для macOS, подключающееся к экземпляру Chute; описанная здесь консоль отдаётся самим ядром и открывается браузером.

Включение и вход

Консоли нужен external-http-controller в секции [General]. По умолчанию она выключена:

[General]
external-http-controller = 127.0.0.1:9090
external-http-ui = true

Доступ аутентифицируется. Если вы не задали external-http-secret, Chute генерирует токен и хранит его в файле control-token, так что после перезапуска используется тот же токен — поэтому практический способ войти состоит в том, чтобы приложение выдало вам адрес с уже прикреплённым токеном. Страница при загрузке забирает токен из этого адреса и сохраняет его в localStorage браузера, так что браузер входит один раз. Такая точка входа есть на каждой платформе; см. Открытие веб-консоли.

Overview (обзор)

Работает ли служба, сколько времени, сколько памяти занимает, адреса и порты слушателей HTTP и SOCKS, а также пути к файлам этого запуска. Когда непонятно, на какой экземпляр смотрит вкладка браузера, эта страница его опознаёт.

Traffic (трафик)

Накопленные байты и текущая скорость по всему движку, график истории скорости и разбивка по адаптерам. Отвечает на вопрос «вообще хоть что-то идёт» и показывает, какой выход несёт нагрузку, когда группа политик выбирает между несколькими.

Connections (соединения)

Страница, на которой вы проведёте больше всего времени. Две вкладки:

  • Current (Текущие) — соединения, открытые прямо сейчас.
  • History (История) — закрытые соединения, новые сверху, прочитанные из записей этого запуска.

В каждой строке есть хост, порт, тип, выбранная политика, совпавшее правило, длительность и счётчики байтов. Длительность отсчитывается с момента, когда эта вкладка браузера впервые увидела соединение, а не с его открытия, поэтому она осмысленна только на вкладке Current (Текущие). Inspect (Подробнее) разворачивает строку на месте и отвечает, почему этот запрос пошёл именно туда:

Поле О чём говорит
Сработавшее правило / Источник правила Строка правила, решившая судьбу соединения, и из какой она секции
Выбранная политика / Адаптер Политика, выбранная правилом, и выход, который её фактически нёс
Источник DNS Какой резолвер ответил и было ли это попаданием в кэш
Применённые перезаписи Правила перезаписи или Mock, изменившие это сообщение, — их собственным текстом; на соединение хранится не более 16 срабатываний, дальше строка сообщает, сколько ещё не показано
Причина закрытия / Примечание Почему оно завершилось и что ядро хотело об этом сказать

Под таблицей развёрнутая строка показывает захваченные запрос и ответ — заголовки и тело, в том виде, в каком они шли по каналу (в расшифрованном, для хостов, охваченных расшифровкой HTTPS).

Для тел нужна запись трафика

Тела есть только там, где Chute их захватил. Включите запись до того, как воспроизводить проблему:

  • replica = true в [General], или
  • Chute Mac: строка меню → Запись трафика, или
  • через API: PUT /api/features/record-traffic с {"enabled": true}.

Без неё соединения всё равно появляются со всей маршрутной атрибуцией и таймингами — не хватает только полезной нагрузки. Секция [Replica] дополнительно ограничивает захват — каждый её фильтр, включая hide-crashlytics-request, соблюдается, — поэтому у отфильтрованного там запроса тела тоже не будет.

Экспорт в HAR

Кнопка Export HAR (Экспорт HAR) на странице Connections скачивает текущую вкладку в виде файла HAR 1.2 — не более 100 записей, это значение по умолчанию у точки API (limit на ней поднимает предел максимум до 300), тогда как сама вкладка History показывает до 200. HAR — стандартный формат: откройте его в инструментах разработчика браузера (панель «Сеть» → импорт) или в программах вроде Charles и Proxyman.

Экспорт несёт то, чего эти инструменты ждут — заголовки запроса и ответа, тайминги и тела, если запись была включена, — плюс объект _kl в каждой записи с тем, для чего в HAR нет полей: выбранная политика, совпавшее правило и сработавшие перезаписи. Времена отправки и приёма берутся из отметок самого захвата, а не выводятся, поэтому они что-то значат. У приложений есть и свои выходы: Dashboard в Chute iOS предлагает Экспорт как HAR и Экспортировать всё как HAR (их формирует ядро в том же формате), а в окне сведений о соединении в Chute Mac есть кнопка Запросы и история, открывающая консоль — её главную страницу, а не это конкретное соединение. Запись — это соединение: для соединения keep-alive, пронёсшего несколько запросов, экспорт описывает первое сообщение и отмечает, сколько байт последующих сообщений он опустил.

DNS

Кэш резолвера с сервером, ответившим по каждой записи, записи из [Host] и системный файл hosts. Clear Cache (Очистить кэш) очищает динамические записи; удаления отдельной записи здесь нет — оно есть только в API как DELETE /api/dns/records/:domain.

Policies (политики)

Режим исхода (Rule / Global / Direct — Правила / Глобальный / Напрямую) и каждая группа политик с текущим выбором. Изменение здесь действует на работающее ядро немедленно — это то же действие, что и переключение группы в приложениях.

Rules (правила)

На этой странице соседствуют две разные вещи, и ведут они себя по-разному.

Правила маршрутизации — секция [Rule] в порядке вычисления. Только для чтения: они приходят из файла конфигурации.

Правила перезаписи и Mock — перезапись URL, заголовков, тела и Mock, плюс список хостов MitM. Их можно добавлять и удалять прямо здесь:

  • Вставьте правило ровно так, как написали бы его в файле конфигурации, и нажмите Add (Добавить). Строка, которая не разбирается, отклоняется вместе с замечанием разборщика, а не сохраняется: у правила, которое никогда не совпадёт, нет симптомов, так что лучше узнать сразу.
  • Remove (Удалить) удаляет одно правило, Clear (Очистить) очищает семейство.
  • Изменения живут только в работающем ядре. Они не записываются обратно в файл конфигурации, а перезагрузка или перезапуск возвращают то, что написано в файле. Пользуйтесь этим, чтобы попробовать правило, а сработавшую строку впишите в файл.

Срабатывания перезаписей и Mock — каждое правило перезаписи или Mock, сработавшее за этот запуск, со счётчиком и временем последнего совпадения; таблица отслеживает до 512 различных правил и сообщает, сколько ещё сработало сверх этого. Эта таблица и есть ответ на «моя перезапись ничего не делает»: правило, которого здесь нет, ни разу не совпало — а это другая задача, нежели правило, которое совпало и не дало видимого эффекта. Как их различить, см. Почему моя перезапись ничего не делает?.

Diagnostics (диагностика)

Что удерживает движок, как завершился прошлый запуск, и набор проб, которые можно по нему выпустить.

  • Footprint / CPU / Uptime / Live flows / Superseded flows / Engine generation (Потребление памяти / CPU / Время работы / Активные потоки / Потоки прежних поколений / Поколение движка) — текущая форма запуска. Память, которая растёт при неизменном числе потоков, стоит внимания; на iOS и tvOS это же значение система наблюдает перед тем, как забрать расширение.
  • Previous exit (Предыдущее завершение)Clean (Штатное), Terminated unexpectedly (Аварийное завершение) или Killed for memory (Завершён из-за нехватки памяти), вместе с идентификатором, временем работы и пиковой памятью прошлого запуска. Читайте это первым, когда Chute «упал»: Killed for memory (Завершён из-за нехватки памяти) значит, что Chute забрала ОС, а не что Chute дал сбой, и это меняет направление поиска.
  • Refusals (Отказы) — таблица того, что движок отклонил и почему, с подсчётом по ресурсу и причине. Если соединение было сброшено и больше ничто этого не объясняет, причина обычно здесь.
  • Run a probe (Запустить проверку) — доступность (ICMP, либо TCP, если указан порт), DNS-запрос через работающий резолвер, проверка исходящего IP и тест задержки политики. Каждая ограничена по времени и отвечает ровно один раз. Несуществующее имя политики отклоняется, а не измеряется, так что опечатка возвращается опечаткой.
  • Events (События) — заметные моменты этого запуска: массовые отказы, смена исходящего адреса и подобное.
  • Tailscale — текущее состояние движка, если настроена секция [Tailscale]; idle, если её нет, и это нормальный ответ.
  • Download diagnostic bundle (Скачать диагностический пакет) — один очищенный архив, который можно приложить к обращению в поддержку. Что внутри, описано в разделе Отправка диагностического пакета.

Config (конфигурация)

Работающая конфигурация в редактируемом поле и кнопка Reload (Перезагрузить), применяющая то, что в поле находится.

Показанная здесь конфигурация лишена секретов. Пароли, секрет управления, парольная фраза CA, ключи WireGuard и подобное отображаются как <redacted>. При этом Reload (Перезагрузить) применяет ровно то, что в поле, — так что перезагрузка показанного текста как есть заменит эти секреты буквальным словом <redacted> в работающем ядре, и политики, которым они нужны, начнут отказывать. Файл конфигурации не затрагивается, поэтому повторный выбор конфигурации всё восстановит.

Пользуйтесь этой страницей, чтобы читать конфигурацию и применять изменение, которое вы набрали целиком. Для правки самого файла есть редактор в приложениях.

Logs (журнал)

Живое слежение за журналом ядра с раскраской по уровням и кнопкой Pause (Пауза), пока вы читаете. Подробность задаёт loglevel, а не эта страница — если нужных строк нет, поднимите его и воспроизведите заново.

Что консоль способна выдать

Считайте доступ к консоли доступом ко всему, что видел запуск. Она может отдать записи соединений с URL, заголовками и именами процессов, захваченные тела запросов и ответов, конфигурацию и журнал. Именно поэтому панель без аутентификации не является значением по умолчанию, и поэтому привязка вне петли требует секрета, который вы задаёте сами — см. external-http-secret.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-01 13:16:36

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

results matching ""

    No results matching ""