Прочие параметры
[General]
ipv6 = true
loglevel = notify
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
tun-included-routes = 192.168.1.12/32
Общие параметры
Включить полную поддержку IPv6 (По умолчанию: true)
ipv6 = true
loglevel (По умолчанию: warning)
loglevel = notify
Одно из: none, fatal, warning, notify, info или verbose. Не рекомендуется включать verbose при повседневном использовании, так как это значительно замедлит производительность.
skip-proxy
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
В версии iOS этот параметр заставляет соединения с этими диапазонами доменов/IP обрабатываться Chute TUN, а не Chute прокси. В версии macOS эти настройки будут применены к системе, когда включен "Set as System Proxy". Этот параметр используется для устранения проблем совместимости с некоторыми приложениями.
- Чтобы указать один домен, введите доменное имя - например, apple.com.
- Чтобы указать все веб-сайты в домене, используйте звездочку перед доменным именем - например, *apple.com.
- Чтобы указать конкретную часть домена, укажите каждую часть - например, store.apple.com.
- Чтобы указать хосты или сети по IP-адресам, введите конкретный IP-адрес, например 192.168.2.11, или диапазон адресов, например 192.168.2.* или 192.168.2.0/24.
Примечание: Если вы вводите IP-адрес или диапазон адресов, вы сможете обойти прокси только при подключении к этому хосту по этому адресу, но не при подключении к хосту по доменному имени, которое разрешается в этот адрес.
Прослушивание прокси-сервера
interface = 127.0.0.1
port = 8118
socks-interface = 127.0.0.1
socks-port = 8119
interface / port управляют адресом и портом прослушивания HTTP-прокси-сервера (по умолчанию 127.0.0.1:8118). socks-interface / socks-port управляют SOCKS5-прокси-сервером (по умолчанию 127.0.0.1:8119).
Псевдонимы совместимости:
doh-serverпринимается как псевдонимdoh;http-listen/socks5-listen(например,0.0.0.0:6152,[::]:6153или просто порт) отображаются на указанные выше настройки interface/port. Хост прослушивания с подстановочным значением (0.0.0.0,::или*) также устанавливаетallow-wifi-access = true.
Аутентификация входящих прокси-соединений
http-auth = username:password
Требует от клиентов аутентификации перед использованием HTTP- и SOCKS5-прокси-серверов Chute. Строку можно повторять, чтобы разрешить несколько учетных данных.
Обход системных запросов
bypass-system = true
Если включено, запросы, отправляемые системными процессами, обходят обработку Chute.
По умолчанию:
true.
Всегда реальный IP
always-real-ip = *.example.com, tracker.example.org
Когда Chute выдает поддельные IP-адреса для перехваченных DNS-запросов (см. hijack-dns), имена хостов, совпадающие с этим списком, разделенным запятыми, всегда получают в ответ свои реальные разрешенные IP-адреса. Поддерживаются подстановочные знаки.
Прерывание существующих соединений
interrupt-exist-connections = true
Если включено, изменение выбранной политики в любой группе политик (через URL Test, Fallback, Load Balance, SSID или ручной выбор) приведет к корректному завершению существующих соединений, использовавших старую политику. Это гарантирует, что соединения немедленно начнут использовать новый выбранный прокси, а не останутся на старом.
Каждое затронутое соединение закрывается корректно с 3-секундным тайм-аутом перед принудительным закрытием.
По умолчанию:
false. Это глобальная настройка — она влияет на все группы политик.
Network Framework (macOS / tvOS)
network-framework = true
Включает Apple Network.framework для исходящих соединений. Использование Network.framework может обеспечить лучшую производительность и современную интеграцию стека TLS на поддерживаемых платформах.
По умолчанию:
trueна macOS,falseна iOS и tvOS.
Исключение простых имен хостов
exclude-simple-hostnames = true
Если включено, запросы к простым именам хостов (однокомпонентные имена без точки, например, localhost) обходят правила прокси и разрешаются локально. Это помогает избежать ненужных DNS-запросов для имен локальной сети.
На Chute Mac одноразовая миграция включает эту опцию по умолчанию при первом запуске; явное отключение пользователем учитывается.
По умолчанию:
false.
Отключение записи в базу данных
disable-db-record = true
Если включено, Chute прекращает запись записей трафика в локальную базу данных. Это может улучшить производительность и уменьшить использование хранилища, но история трафика не будет доступна в Chute Dashboard.
По умолчанию:
false.
Отображение скорости в строке меню (только Mac)
menu-bar-show-speed = true
Если включено, Chute Mac показывает текущую скорость загрузки и отправки в строке меню.
По умолчанию:
false.
Перехват других DNS-серверов
hijack-dns = 8.8.8.8:53
По умолчанию Chute возвращает поддельные IP-адреса только для DNS-запросов, отправленных на адрес DNS Chute (198.18.0.2). Запросы, отправленные на стандартный DNS, просто пересылаются.
Некоторые устройства или программы всегда используют жестко заданный DNS-сервер. (Например, Google Speakers всегда используют 8.8.8.8). Вы можете использовать этот параметр для перехвата запроса и получения поддельного адреса.
Вы можете использовать hijack-dns = *:53 для перехвата всех DNS-запросов.
Исключенные маршруты
tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
Chute VIF может обрабатывать только протоколы TCP и UDP. Используйте этот параметр для обхода определенных диапазонов IP, чтобы разрешить прохождение всего трафика.
Примечание: Этот параметр работает только для типа Расширенного режима VIF (utun) — он не действует при использовании типа PacketTunnel VPN. Запросы, обрабатываемые прокси-сервером Chute, не будут затронуты. Комбинируйте 'skip-proxy' и 'tun-excluded-routes', чтобы гарантировать, что определенный HTTP-трафик обходит Chute.
Этот параметр может вызвать системную ошибку ENOMEM (невозможно выделить память). Похоже, это ошибка в системе iOS. Пожалуйста, не используйте этот параметр, если это возможно.
Включенные маршруты
tun-included-routes = 192.168.1.12/32
По умолчанию интерфейс Chute VIF объявляет себя как маршрут по умолчанию. Но поскольку интерфейс Wi-Fi имеет меньший маршрут, некоторый трафик может не проходить через интерфейс Chute VIF. Используйте этот параметр для добавления меньшего маршрута.
Примечание: Этот параметр работает только для типа Расширенного режима VIF (utun) — он не действует при использовании типа PacketTunnel VPN.
Анализ протоколов
sniffing-enabled = true
sniffing-timeout = 100
Chute может определить фактический протокол соединения, проверяя начальные байты. Это позволяет правилам, таким как PROTOCOL,TLS,Proxy, работать корректно даже для входящих соединений не HTTP.
sniffing-enabled (По умолчанию: false)
sniffing-enabled = true
Включает определение протокола для TCP-соединений.
sniffing-timeout (По умолчанию: 100 мс)
sniffing-timeout = 200
Максимальное время в миллисекундах для ожидания начальных данных для определения протокола. Увеличьте это значение, если определение протокола не удается на медленных соединениях.
Блокировка QUIC
block-quic = auto
Определяет, должен ли Chute отклонять обнаруженный трафик QUIC, включая HTTP/3. QUIC работает поверх UDP и не может быть расшифрован механизмом HTTP MitM в Chute. Отклонение QUIC может заставить совместимые клиенты повторить соединение по TCP, после чего становятся доступны обработка TCP-трафика прокси и, если настроено, расшифрование HTTPS.
| Значение | Поведение |
|---|---|
off |
Не применять глобальную блокировку QUIC (по умолчанию). Обнаруженный трафик QUIC обрабатывается обычными правилами маршрутизации. |
on |
Отклонять каждый обнаруженный поток QUIC, включая трафик, направленный в DIRECT. |
auto |
Отклонять обнаруженный QUIC, только если итоговая исходящая политика является прокси. Трафик, направленный в DIRECT, разрешается; трафик, направленный в REJECT, по-прежнему отклоняется соответствующим правилом. |
Для трафика, поступающего через TUN, Chute отвечает на отклоненный поток QUIC сообщением ICMP/ICMPv6 Port Unreachable. Благодаря этому совместимые клиенты могут перейти на TCP, не дожидаясь тайм-аута QUIC.
Обнаружение QUIC для
block-quicвыполняется автоматически и не требуетsniffing-enabled; параметрsniffing-enabledуправляет определением протоколов TCP. Для обработки отдельных потоков QUIC правилами используйте правилоPROTOCOL,QUIC,....
Обход TUN
bypass-tun = 192.168.0.0/16, 10.0.0.0/8
Аналогично skip-proxy, но работает на уровне маршрутизации TUN/VIF. Соединения с этими диапазонами IP будут полностью обходить интерфейс TUN и проходить напрямую через системный сетевой стек.
Примечание: Этот параметр работает только для типа Расширенного режима VIF (utun). Он не действует при использовании типа PacketTunnel VPN.
Отображение страницы ошибки для Reject
show-error-page-for-reject = true
Если включено, Chute возвращает удобную страницу ошибки для отклоненных запросов вместо простого разрыва соединения.
Оптимистичный DNS
optimistic-dns = false
Если включено, Chute немедленно возвращает кэшированный результат DNS, обновляя запись в фоновом режиме. Это уменьшает задержку соединения ценой возможного возврата устаревших DNS-записей.
По умолчанию:
true. Установитеoptimistic-dns = false, чтобы отключить.
Разрешить доступ по Wi-Fi
allow-wifi-access = true
Позволяет другим устройствам в той же сети обращаться к портам HTTP- и SOCKS5-прокси Chute, расширяя адрес привязки обоих слушателей до 0.0.0.0. Конфигурации в стиле Surge — и сопоставление allow-lan при импорте из sing-box — несут только этот флаг и оставляют interface со значением по умолчанию 127.0.0.1, поэтому расширять адрес привязки должен сам флаг.
Флаг и явный шаблонный
interface— две записи одного намерения, и Chute берёт их объединение: конфигурация, где уже написано0.0.0.0, ведёт себя точно так же, как раньше. Изменение флага перепривязывает оба слушателя, поэтому отзыв доступа действует при перезагрузке конфигурации, а не при следующем запуске.Это порты прокси, и без
http-authу них нет никакой аутентификации. В сети, которую вы не контролируете, задайте также учётные данные.
Управляемая конфигурация
#!MANAGED-CONFIG https://example.com/config.conf interval=86400 strict=false
Конфигурация, первая строка которой — заголовок #!MANAGED-CONFIG, автоматически повторно загружается с указанного URL. Параметры заголовка и поведение обновления описаны в разделе Управляемая конфигурация.
Реплика / Запись трафика
replica = true
Ключ replica в [General] (replica = true) включает запись трафика; секция [Replica] фильтрует то, что отображает Chute Dashboard — её ключи описаны в разделе Replica.
Внешний доступ контроллера (Chute Dashboard)
external-controller-access = password@0.0.0.0:6155
Запускает сервер удаленного управления, используемый Chute Dashboard. Значение имеет вид password@host:port; перед паролем может опционально указываться имя пользователя (user:password@host:port). На iOS сопутствующий USB-канал открывается на порту port + 1 (не на macOS). Как подключить его, описано на странице Chute Dashboard.
HTTP Control API и веб-интерфейс
[General]
external-http-controller = 127.0.0.1:9090
external-http-secret = your-secret-token
external-http-ui = true
external-http-cors = false
Chute предоставляет встроенный HTTP API управления и веб-интерфейс управления, аналогичный панелям Clash и Surge. API предоставляет статус ядра, трафик, соединения, DNS, управление политиками и управление конфигурацией через конечные точки REST.
external-http-controller (По умолчанию: отключено)
external-http-controller = 127.0.0.1:9090
Адрес и порт HTTP-сервера управления. Для доступа только с этой машины используйте 127.0.0.1. Привязка к любому адресу вне петли (например, 192.168.1.5:9090) требует явно заданного external-http-secret — без него сервер откажется запускаться и запишет в журнал, чего не хватает.
Шаблонный адрес (0.0.0.0, ::, *) в этой проверке считается не-петлевым: он слушает все интерфейсы, то есть противоположность «только локально». Допустимые написания — 0.0.0.0:9090, *:9090 (то же самое) и для IPv6 [::]:9090; голое :::9090 берётся в скобки автоматически, а адрес, который не удаётся разобрать, сообщается как ошибка конфигурации, вместо того чтобы молча оставить контроллер выключенным. Петлевым считается весь диапазон 127.0.0.0/8, а не только 127.0.0.1.
external-http-secret (По умолчанию: сгенерированный токен)
external-http-secret = your-secret-token
Bearer-токен для аутентификации API. Запросы должны содержать заголовок Authorization: Bearer <secret> — токен принимается только в этом заголовке, никогда как параметр запроса, и сравнивается за постоянное время. При неудачной аутентификации возвращается 401 с {"ok": false, "error": {"code": "unauthorized", "message": "missing or invalid token"}}. Защищены только пути /api/* и Clash-совместимые псевдонимы; статическим файлам веб-интерфейса токен не нужен (при external-http-ui = false их нет вовсе — страница отвечает 404).
Если ключ отсутствует, Chute генерирует токен, а не отдаёт API без аутентификации. Сгенерированный токен записывается в файл control-token в общей папке Chute — не рядом с конфигурацией: в контейнер группы приложений на iOS и tvOS, в закрытый каталог данных приложения на Android — с правами только для владельца, переиспользуется после перезапуска, и приложения показывают его — см. Открытие веб-консоли. Управляющий API может выдать базу соединений, записи которой содержат каждый URL, заголовок и имя процесса, встреченные за этот запуск; открытая панель управления — неразумное значение по умолчанию.
Если всё же нужно отдавать API без аутентификации, скажите это в конфигурации явно:
external-http-secret = none
Это принимается только при привязке к петле. Вне петли не хватит ни none, ни отсутствия ключа: сервер управления откажется запускаться и скажет, что ему нужно.
При обновлении: если вы полагались на то, что отсутствие
external-http-secretозначает «без аутентификации», локальные скрипты начнут получать401. Либо прочитайте сгенерированный токен в приложении, либо напишитеexternal-http-secret = none, чтобы намеренно сохранить прежнее поведение.
external-http-ui (По умолчанию: true)
external-http-ui = true
Если включено, Chute предоставляет встроенный веб-интерфейс по адресу контроллера. Веб-интерфейс предоставляет обзорную панель, управление соединениями, проверку DNS, мониторинг трафика, управление политиками и редактирование конфигурации. Установите false, чтобы сохранить API включенным, отключив интерфейс.
Открытие веб-консоли
Консоль отдаётся по адресу сервера управления, и каждое приложение может передать вам адрес и токен — включая сгенерированный, прочитать который иначе негде:
- Chute Mac: строка меню → Открыть веб-консоль и Копировать токен веб-консоли. В окне сведений о соединении также есть Запросы и история, открывающая консоль — её главную страницу, а не это соединение.
- Chute iOS: панель управления → строка Web UI → Открыть, Копировать адрес или Копировать токен доступа.
- Chute tvOS: в панели управления под переключателем Web UI есть отдельная строка Адрес веб-интерфейса, показывающая хост и порт. При её выборе показывается QR-код, если слушатель доступен с других устройств — токен входа спрятан внутри кода, а не на экране, — а если контроллер привязан к петлевому адресу, вместо него выводится объяснение: петлевую консоль с телефона не открыть.
- Chute Android: панель управления показывает адрес как подзаголовок переключателя HTTP API, а отдельная строка Сгенерированный токен доступа копирует его по нажатию — эта строка появляется только когда токен сгенерировало ядро; заданный вами секрет никогда не показывается.
Полученный адрес несёт токен в параметре запроса. Страница использует его при загрузке и убирает из адресной строки, так что открытие ссылки — это законченный вход, и никому не приходится переписывать 32 шестнадцатеричных знака.
external-http-cors (По умолчанию: false)
external-http-cors = true
Включает заголовки CORS (Cross-Origin Resource Sharing) в ответах API. Полезно, когда веб-интерфейс или сторонние инструменты должны получать доступ к API из другого источника.
Конечные точки API:
| Метод | Конечная точка | Описание |
|---|---|---|
GET |
/api/status |
Статус выполнения, порты, время работы |
GET |
/api/traffic |
Глобальные счетчики трафика и счетчики по каждой политике |
GET |
/api/connections |
Текущие активные соединения |
DELETE |
/api/connections/:id |
Закрыть соединение |
GET |
/api/connections/history |
История записей соединений |
GET |
/api/connections/processes |
Статистика соединений по процессам |
GET |
/api/connections/:id/request |
Захваченные данные запроса для соединения |
GET |
/api/connections/:id/response |
Захваченные данные ответа для соединения |
GET |
/api/dns |
Записи кэша DNS |
DELETE |
/api/dns/cache |
Очистить кэш DNS |
DELETE |
/api/dns/records/:domain |
Удалить одну DNS-запись |
GET |
/api/config |
Текущая конфигурация |
PUT |
/api/config |
Перезагрузить конфигурацию |
POST |
/api/config/validate |
Разобрать конфигурацию и сообщить об ошибках, не загружая её |
GET |
/api/policies |
Группы политик и текущий выбор |
PUT |
/api/policies/:group |
Изменить выбор группы политик |
PUT |
/api/mode |
Установить режим исходящих соединений |
GET |
/api/features |
Состояния переключателей функций |
PUT |
/api/features/mitm |
Переключить MitM |
PUT |
/api/features/record-traffic |
Переключить запись трафика |
GET |
/api/rules |
Загруженные правила и то, какие правила перезаписи срабатывали |
POST |
/api/rules/match |
Куда был бы смаршрутизирован запрос, не отправляя его |
GET |
/api/logs |
Последние записи журнала |
GET |
/api/loglevel |
Текущий уровень журнала и записываемые разделы |
PUT |
/api/loglevel |
Сменить уровень журнала или разделы без перезапуска |
GET |
/api/health |
Здоровье движка: отказы, поколения, потребление памяти, прошлое завершение |
GET |
/api/events |
Заметные события этого запуска |
GET |
/api/tailscale |
Текущее состояние движка Tailscale |
POST |
/api/diagnostics/ping |
Проверка доступности по ICMP или TCP |
POST |
/api/diagnostics/dns-query |
Разрешить домен через работающий резолвер |
POST |
/api/diagnostics/egress-probe |
Определить текущий исходящий IP |
POST |
/api/diagnostics/url-test/:policy |
Запустить тест задержки политики |
POST |
/api/diagnostics/bundle |
Собрать очищенный диагностический архив |
GET |
/api/connections/export |
Экспорт соединений в HAR 1.2 |
GET |
/api/rewrites |
Все семейства перезаписи/Mock и список хостов MitM |
GET |
/api/rewrites/:family |
Правила одного семейства |
POST |
/api/rewrites/:family |
Добавить правило |
DELETE |
/api/rewrites/:family/:id |
Удалить правило |
DELETE |
/api/rewrites/:family |
Очистить семейство |
GET |
/api/mitm/hosts |
Хосты, которые сейчас расшифровываются |
POST |
/api/mitm/hosts |
Добавить хост |
DELETE |
/api/mitm/hosts/:host |
Удалить хост |
DELETE |
/api/mitm/hosts |
Очистить список |
Примечания к конечным точкам:
GET /api/connectionsпринимаетlimit(положительное целое, по умолчанию и максимум 1000) иcursor(возвращает только соединения сidбольше курсора). Полеdataответа содержитconnections,total,page_size,has_moreи — когда есть ещё страницы —next_cursor.GET /api/connections/historyпринимаетlimit(по умолчанию 100, максимум 1000) иcursor/before(синонимы; передача обоих отклоняется).GET /api/connections/:id/requestи.../responseвозвращают{"connection_id": <id>, "data": "<base64>"}. Захваты больше 2 МиБ возвращают413.GET /api/configвозвращает конфигурацию, в которой чувствительные значения (http-auth,external-http-secret,ca-p12,ca-passphrase, ключи WireGuard и подобные) заменены на<redacted>— не передавайте результат обратно вPUT /api/configкак есть, иначе эти заполнители будут буквально записаны в конфигурацию.PUT /api/configпринимает либо JSON{"configuration": "<full text>"}, либо сырой текст конфигурации в теле запроса (лимит 1 МБ). При успехе ядро перезагружается — или запускается, если оно не работало.PUT /api/policies/:groupберёт выбор из первого из ключей телаpolicy,name,selected,select; значением может быть имя политики или числовой индекс в виде строки. Специальное имя группыGLOBALустанавливает глобально выбранную политику.PUT /api/modeтребует число JSON:{"mode": 0}—0правила,1напрямую,2прокси.PUT /api/features/mitmиPUT /api/features/record-trafficпринимают{"enabled": true}.GET /api/logsпринимаетsince(секунды Unix); буфер в памяти хранит последние 1000 записей, каждая —{timestamp, level, section, message}.GET /api/healthсообщает, что движок сейчас удерживает и почему в последний раз что-то отклонил, а также как завершился предыдущий запуск (clean,uncleanилиsuspected_memory— см. Устранение неполадок).GET /api/eventsотдаёт кольцевой буфер в памяти;?persisted=1читает сохранённую историю этого запуска и отвечаетavailable: false, если запись выключена.- Без секции
[Tailscale]GET /api/tailscaleотвечаетstate: "idle"— это нормальный ответ, а не ошибка. - Проверки
POST /api/diagnostics/*берут аргументы из строки запроса или JSON-тела, ограничены десятью секундами и отвечают ровно один раз.url-test/:policyотклоняет имя несуществующей политики, а не измеряетREJECT. POST /api/rules/matchотвечает, куда пошёл бы запрос, не открывая соединения. Он принимаетhost(илиurl, из которого берутся хост и порт),port(по умолчанию 443), а также необязательныеip,protocol,process,process_path,src_ip,src_port,in_port,in_type,in_user,in_name,network,ssid,bssid,from_tun,user_agent— незнакомое поле не игнорируется, а отклоняется вместе со списком допустимых. В ответе есть правилоmatched(его строка, тип, названная им политика иresolved_policy, на которую в данный момент указывает группа),policy,need_resolve, а такжеrule_countиmatch_generation, относительно которых считался ответ. Поскольку домен сопоставляется дважды — сначала по имени, затем ещё раз, когда известен адрес, — вpassesпо одной записи на проход; безipсуществует только проход до разрешения имени, и ответ говорит об этом вnote. Добавьтеexplain=true, чтобы получить правила-кандидаты, которые тоже могли совпасть, до 50 штук, вместе с числом нераскрытых наборов правил.POST /api/config/validateразбирает конфигурацию и выбрасывает её: работающее ядро не принимает из неё ничего. Отправьте её как{"configuration": "<full text>"}или сырым текстом. В ответе —valid,error_count,advisory_count,rule_count,policy_countи списокerrorsиз{line, severity, content, error};severityотделяет отвергнутую строку от принятой с оговоркой, аcontent— это сама проблемная строка в отредактированном виде, потому что плохая строка[Proxy]обычно несёт тот самый пароль, который её и испортил. Пользуйтесь этим передPUT /api/config, который перезапускает тот самый запуск, который вы отлаживаете.GET /api/loglevelсообщает текущийlevel,nslog_level, записываемые в файлsections, а такжеavailable_levels/available_sections, которые можно задать.PUT(илиPATCH) принимаетlevel,sectionsлибо и то и другое:sections— это массив имён разделов или строка"all", а пустой массив отклоняется; чтобы прекратить запись, используйтеlevelсо значениемnone. Смена уровня таким способом не перезапускает работающий процесс, и в этом весь смысл:loglevel = verboseв файле требует перезагрузки, а перезагрузка теряет как раз то, что вы пытались увидеть.GET /api/rulesдополнительно сообщаетrewrite_hits— каждое правило перезаписи или Mock, сработавшее за этот запуск, со счётчиком. Правило, которого там нет, ни разу не совпало — это обычное объяснение перезаписи, которая как будто ничего не делает. Таблица отслеживает до 512 различных правил, а всё сверх этого сообщает вrewrite_hit_dropped_rules.POST /api/rewrites/:familyпринимает{"rule": "<configuration line>"}— тот же текст, что вы написали бы в файле. Строка, которая не разбирается, отклоняется с400, а не сохраняется как правило, которое никогда не совпадёт.:family— одно изurl-rewrite,header-rewrite,body-rewrite,mock. Добавленные так правила живут только в работающем ядре и не записываются обратно в файл конфигурации.GET /api/connections/export?format=harвозвращает документ HAR 1.2, аPOST /api/diagnostics/bundle— zip. Оба являются файлами, поэтому, в отличие от остальных точек, не заворачиваются в{"ok": ..., "data": ...}.exportпринимаетsource(currentпо умолчанию илиhistory),limit(по умолчанию 100, максимум 300),idsиbodies=1для включения захваченных тел. Каждая запись несёт объект_klс тем, для чего в HAR нет полей: выбранная политика, совпавшее правило и сработавшие перезаписи.
Пример — прочитать статус, затем переключить группу политик:
curl -H "Authorization: Bearer your-secret-token" http://127.0.0.1:9090/api/status
{"ok":true,"data":{"running":true,"outbound_mode":0,"mitm":false, ...}}
curl -X PUT -H "Authorization: Bearer your-secret-token" \
-d '{"policy": "ProxyB"}' http://127.0.0.1:9090/api/policies/MainGroup
{"ok":true,"data":{"outbound_mode":0,"selectable_groups":[...], ...}}
Пример — спросить, куда пойдёт запрос, прежде чем его отправлять:
curl -X POST -H "Authorization: Bearer your-secret-token" \
-d '{"url": "https://api.example.com/v1/orders", "explain": true}' \
http://127.0.0.1:9090/api/rules/match
{"ok":true,"data":{"policy":"MainGroup","matched":{"rule":"DOMAIN-SUFFIX,example.com,MainGroup", ...}, ...}}
Сузить журнал до одной подсистемы во время воспроизведения, не перезапуская процесс:
curl -X PUT -H "Authorization: Bearer your-secret-token" \
-d '{"level": "verbose", "sections": ["MitM", "DNS"]}' \
http://127.0.0.1:9090/api/loglevel
Примечание: Эта функция отключена по умолчанию. Каждый ответ использует конверт
{"ok": true, "data": {...}}при успехе и{"ok": false, "error": {"code": "...", "message": "..."}}при ошибках; тела запросов ограничены 1 МБ.Конечные точки
PUTтакже принимаютPATCH. Для сторонних панелей доступны Clash-совместимые псевдонимы путей:/version,/traffic,/connections,/configs,/proxies,/rules— пути доступны, но ответы используют конверт и имена полей Chute, а не схему Clash (/versionвозвращает только{"name", "run_id"}), поэтому панели Clash не заработают «из коробки».
Отпечаток клиента
global-client-fingerprint = chrome
Задает отпечаток TLS-клиента для каждой политики, у которой нет собственного fingerprint. Значение самой политики всегда имеет приоритет, поэтому это значение по умолчанию, а не принудительная замена.
Поддерживаемые значения: chrome, firefox, safari и ios, а также edge, 360,
qq, android и random — все они обрабатываются как Chrome.
Нераспознанное значение игнорируется, и используется TLS-стек платформы.
По умолчанию: пусто, то есть TLS-стек платформы. Его читают только политики Trojan, VMess, VLESS и ShadowTLS.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.