Примечания к выпуску Chute Mac
Версия 1.1.5 (233)
Новые возможности:
- Добавлены цепочки прокси: политика может указать «Вышестоящий прокси» (
underlying-proxy) и выходить к своему серверу через этот прокси, группа политик может направить всех своих участников через один вышестоящий узел, а новая настройка «Фронтальный прокси» в разделе «Общие» → «Дополнительно» (global-underlying-proxy) делает то же самое для всех узлов, у которых нет собственного вышестоящего узла. В цепочку можно включить любой транспорт, кроме Tailscale: потоковые протоколы идут внутри потока вышестоящего узла; Hysteria2, TUIC, MASQUE и XHTTP поверх HTTP/3 — через его UDP-ретрансляцию пакетами фиксированного размера 1280 байт; туннели WireGuard и AmneziaWG проходят через него с внутренним MTU 1280 байт; сеансы SSH и AnyTLS открываются поверх него, — и редактор политик предлагает это поле для каждого из них. Цепочка, которая замыкается в цикл, вложена глубже 16 уровней или ссылается на несуществующую политику, отклоняется и никогда не отправляется напрямую - Добавлены группы ретрансляции (
relay, как в Clash и mihomo): участники выстраиваются в цепочку в том порядке, в каком записаны, — к первому подключение идёт напрямую, к каждому следующему — через предыдущих, а последний подключается к цели. В редакторе групп появился тип Relay; редактор хранит участников в этом порядке и требует не менее двух - Добавлены случайные группы (
random, как в Shadowrocket): для каждого соединения участник выбирается случайно, а для UDP — только среди участников, которые передают UDP. Переключать в такой группе нечего, поэтому её нет ни в строке меню, ни на вкладке «Прокси», а редактор групп сохраняет её именно как случайную группу - В окно сведений о соединении и в веб-консоль добавлена цепочка прокси: указан каждый переход (
Airport/HK-01 → Landing), «Копировать подробности» включает её, поиск по соединениям находит по ней, а экспорт HAR сохраняет этот путь - Для провайдеров правил и прокси добавлен
policy=: список загружается через эту политику, а если политики с таким именем нет, загрузка завершается ошибкой, а не идёт напрямую. В редакторах на Mac поля для него пока нет, но при сохранении он не теряется - В редактор Shadowsocks добавлен UDP поверх TCP —
udp-over-tcp, версия 1 или 2, — так что UDP прокси идёт внутри его TCP-соединений и работает даже в цепочке, вышестоящий узел которой не передаёт UDP - Добавлен UDP для VMess и VLESS: раньше отправленный в них UDP сразу отклонялся (срабатывал
udp-policy-not-supported-behaviour, по умолчанию REJECT); теперь он идёт по отдельному соединению на каждый адрес назначения, как в mihomo, sing-box и Shadowrocket - В «Перезапись тела» добавлен jq:
http-request-jqиhttp-response-jqвыполняют полноценную программу jq над JSON-телом, а редактор предлагает типы «Запрос jq» и «Ответ jq» с полем «ПРОГРАММА JQ»; о недопустимой программе сообщается, и её правило пропускается, а если тело не в формате JSON, программа завершается ошибкой или её вывод пуст, тело остаётся без изменений - Добавлены общие скрипты: у скрипта
type=genericнет автоматического триггера, и он запускается только по требованию — кнопкой «Запустить» в редакторе скриптов или черезGET /api/scriptsиPOST /api/scripts/run. В редакторе скриптов также появилось поле «Имя события»: скрипты событий получаютnetwork-changed,engine-startedиprofile-reloaded, а скрипт, указавший любое другое событие, отмечается в журнале и никогда не запускается - Добавлены отдельные пулы DNS:
direct-dns-serverразрешает домены, которые правило направляет в DIRECT,proxy-dns-serverразрешает имена хостов самих ваших прокси-серверов, а кfallback-dns-serverобращаются, когда основные серверы не дают ответа; для каждого пула резервом служат глобальные серверы, и в настройках DNS у каждого есть своё поле - Для вышестоящих DNS-серверов, включая DoQ и DoH3, добавлены
#proxy/#proxy=<policy>: QUIC-резолвер работает через UDP-ретрансляцию политики; если политика не может передавать UDP, этот сервер пропускается, а не опрашивается напрямую; обычный резолвер, направленный через политику, переходит на DNS поверх TCP; а для путей, где DNS поверх UDP отбрасывается, принимаются простые серверыtcp:// - Добавлены
encrypted-dns-follow-outbound-mode,allow-dns-svcb— пока он выключен, на запросы HTTPS и SVCB приходит пустой ответ, — и параметры отдельных серверов#h3,#skip-cert-verify,#disable-ipv4,#disable-ipv6и#disable-qtype= - Расширено «Локальное сопоставление DNS»: запись
[Host]сохраняет все перечисленные в ней серверы и опрашивает их параллельно, сопоставляет одному домену несколько адресов, может использовать в качестве ключа набор правил (RULE-SET:<url>), запускает для этого домена скриптtype=dns(script:<name>) и принимаетssid:<name>, чтобы сопоставление действовало в определённой сети; редактор позволяет привязать скрипт и сохраняет все адреса и серверы записи - В раздел «Общие» добавлен параметр «Читать системный файл hosts» (
read-etc-hosts, импортируется изuse-system-hostsmihomo): на имена из/etc/hostsотвечает DNS Chute - Добавлены уведомления правил: любое правило, включая FINAL, принимает
notification-text=иnotification-interval=и при совпадении показывает уведомление — не чаще одного раза за интервал для каждого правила; оба параметра задаются в редакторе правил, а уведомления подчиняются переключателю уведомлений Chute - Добавлено
FINAL,<policy>,dns-failed: если имя не удаётся разрешить, соединение не закрывается, а открывается через политику FINAL с разрешением имени на удалённой стороне; этот вариант есть в редакторе правил - Семейство REJECT стало полноценными политиками — REJECT-DROP, REJECT-NO-DROP, REJECT-TINYGIF, REJECT-IMG, REJECT-DICT, REJECT-ARRAY, REJECT-200 и REJECT-VIDEO: каждая отвечает на HTTP-запрос телом, описанным в документации, а хост, отклонённый более 50 раз за 30 секунд, переводится на REJECT-DROP; они перечислены в меню политик редактора правил вместе с PROXY
- Добавлены встроенные наборы правил: на разделы
[Ruleset Name]можно ссылаться какRULE-SET,<name>, в том числе друг из друга — до восьми уровней вложенности, циклы отклоняются - Добавлено семейство SSID: переопределения DNS из
[SSID Setting]применяются в зависимости от сети — имена,BSSID:,TYPE:WIFI/CELLULAR/WIRED(на Mac — Ethernet),ROUTER:, имена в кавычках и с подстановочными знаками — и при смене сети очищают кэш предыдущего резолвера; группы политикssidиsubnetвыбирают участников по текущей сети, а правила SUBNET проверяют её.suspend=trueтеперь действует на Mac: в такой сети Chute снимает системный прокси и отключает расширенный режим, строка меню сообщает об этом, оба перехода отмечаются уведомлением, а ручное переключение прокси прекращает приостановку. В редакторах групп и [SSID Setting] появилось меню «Сопоставлять по» (SSID, BSSID, TYPE, ROUTER); они сохраняют записи в том порядке, в каком они записаны, и показывают переопределение DNS каждой записи. Смена сети теперь доходит до движка сразу, а не раз в 60 секунд, и Chute один раз запрашивает разрешение на геолокацию, когда конфигурация называет сеть Wi-Fi, — без него macOS 14 и новее не раскрывают имя сети - Добавлены диапазоны и сравнения для DEST-PORT, SRC-PORT и IN-PORT (
80-81,>=50000, списки через/), значенияHOSTNAME-TYPE—IPv4,IPv6,DOMAINиSIMPLE, — а также рабочие правила IN-TYPE и IN-USER: теперь они срабатывают на реальном трафике, а не только при пробном прогоне - Добавлены средства управления MitM: расшифровка HTTP/2 (
h2), блокировка QUIC к расшифровываемым хостам, чтобы HTTP/3 не обходил расшифровку (auto-quic-block), исключение хостов из расшифровки и ключевые слова списка хостов<ipv4-address>,<ipv6-address>и<simple-hostname>; первые три доступны в настройках MitM - Добавлена маршрутизация QUIC по домену в расширенном режиме: при включённом определении протокола имя берётся из QUIC Initial клиента, ClientHello, разбитый на несколько пакетов Initial, собирается заново, а поток придерживается, пока имя не станет известно, — поэтому правила DOMAIN работают и для соединений HTTP/3, открытых по адресу без доменного имени
- Добавлен
icmp-auto-reply, включённый по умолчанию: в расширенном режиме на ping приходит локальный ответ — по IPv4 и IPv6 — вместо тайм-аута - Расширен импорт: правила GEOSITE и категорийные правила GEOIP из mihomo разворачиваются в работающие наборы правил, провайдеры
.mrsи.srsперенаправляются на опубликованные исходные списки, группыpolicy-pathсоздают провайдера сupdate-interval, фильтрами и списками включения,SUB-RULEиз mihomo разворачивается в правила AND,detourиз sing-box иdialer-proxyиз mihomo импортируются как цепочки, аallowed-ipsWireGuard компилируется и соблюдается — в редакторе WireGuard появилось поле «Разрешённые IP», — поэтому раздельный туннель больше не забирает себе все адреса назначения - Добавлены директивы конфигурации и транспорты:
#!includeиinclude =подключают другие файлы,#!MACOS-ONLY,#!IOS-ONLYи#!TVOS-ONLYограничивают строки одной платформой, и те и другие не теряются при сохранении; у Shadowsocks появился транспорт WebSocket из v2ray-plugin; а id VLESS или VMess, не являющийся UUID, преобразуется в UUID через UUIDv5, как это делают Xray и mihomo, вместо того чтобы обрушить движок - В редактор политик добавлены «Исходный интерфейс» и «Разрешить другой интерфейс» (
interface=,allow-other-interface=), которые привязывают TCP-соединения политики к одному сетевому интерфейсу. Они действуют приnetwork-framework = false; при Network.framework, который в macOS используется по умолчанию, они пока не применяются - Расширен API скриптов:
$httpAPIобращается к собственным маршрутам движка без открытия сокета,$httpClientучитываетpolicy, а$event.nameсообщает, какое событие сработало на самом деле - Расширены параметры перезаписи: Map Local принимает
data-type,status-codeи заголовки, перезапись заголовков получилаheader-replace-regex, перезапись URL —reject-arrayиreject-tinygif, а одна строка перезаписи тела может содержать несколько пар regex/замена; редакторы предлагают новые типы и поля - В строку меню добавлены «Открыть веб-консоль» и «Копировать токен веб-консоли» — они показываются, когда конфигурация обслуживает консоль: «Открыть» выполняет вход с токеном, «Копировать» нужен для браузера на другом компьютере, а неактивный пункт объясняет причину, если слушатель не запущен или
external-http-uiвыключен. В консоли появились вкладки «Текущие» и «История», вид подробностей (совпавшее правило, источник правила, политика, адаптер, источник DNS, процесс, причина закрытия, тела запроса и ответа), страница «Правила», показывающая, какие правила перезаписи срабатывали, страница «Диагностика» и список наборов правил, которые не удалось загрузить; консоль теперь полностью переведена на все девять языков - Добавлены точки входа HTTP-API управления:
/api/health,/api/events,/api/tailscale, пробы под/api/diagnostics/,/api/connections/export?format=har,/api/diagnostics/bundle,/api/scripts, управление правилами перезаписи и хостами MitM через/api/rewritesи/api/mitm/hosts,POST /api/rules/matchдля пробного прогона запроса по таблице правил,GET|PUT /api/loglevelдля смены уровня журнала без перезагрузки иPOST /api/config/validateдля проверки профиля без его применения - В строку меню добавлен пункт «Сохранить диагностический пакет…»: очищенный архив с конфигурацией, состоянием, событиями этого запуска, загруженными правилами и политиками, DNS, трафиком и частями журнала, который собирается внутри Chute без API управления, — и предлагается даже после остановки Chute, когда нужны журналы последнего запуска
- Добавлен экспорт HAR, который движок собирает из записанных кадров: коды состояния, метки времени и тайминги реальны, а каждая запись несёт под
_klвыбранную политику, совпавшее правило и срабатывания перезаписи; он доступен в веб-консоли и по адресу/api/connections/export?format=har - В окно сведений о соединении добавлена атрибуция перезаписи: оно называет первое правило перезаписи URL, заголовков или тела либо имитации ответов, изменившее запрос, и сколько правил сработало, «Копировать подробности» включает их все, а «Запросы и история» открывает веб-консоль с телами и закрытыми соединениями
- Добавлено уведомление «Изменение сетевого адреса», заменяющее «Изменение выходного IP»: оно показывает собственные адреса IPv4 и IPv6 этого Mac, по строке на семейство, и помечает IPv4 за NAT; только IPv4 за NAT требует одного STUN-запроса
- Добавлено уведомление «Сеть не передаёт трафик» с собственным переключателем, включённым по умолчанию: оно сообщает о канале, который принимает соединения, но не передаёт данные, и молчит, пока сама macOS сообщает, что сеть недоступна
- Добавлен французский как встроенный язык, а в меню языков рядом с каждым языком появился флаг
Улучшения:
- HTTP-API управления больше не открыт без аутентификации, когда в конфигурации нет
external-http-secret: движок генерирует токен, который копируется из строки меню;external-http-secret = noneсохраняет анонимный доступ только на loopback-адресе, а адрес прослушивания с подстановкой больше не считается loopback - Сопоставление правил на больших списках стало значительно быстрее: таблица правил, состоящая только из доменных правил, сопоставляется по хешированному плану, а содержимое RULE-SET и DOMAIN-SET, не загруженное заранее, индексируется при загрузке, а не читается заново на каждое соединение
- UDP-потоки сопоставляются один раз: решение по потоку запоминается на 60 секунд, так что последующие датаграммы пропускают оба прохода сопоставления и DNS-запрос между ними
- Лучшее восстановление после смены сети: туннели, исходный адрес которых больше не существует ни на одном интерфейсе, закрываются, а не держат приложения до тайм-аута простоя
- Провайдеры правил загружаются по очереди, а не отклоняются, когда очередь загрузки заполнена, а их преобразование требует гораздо меньше памяти
- Журналы записываются частями по 8 МБ (до восьми на запуск, самые старые удаляются), каждая начинается с заголовка с именем запуска, а вкладка «Лог» следит за всеми частями по порядку; движок также отмечает, завершился ли предыдущий запуск штатно или был убит, — в заголовке журнала, в
/api/statusи в диагностическом пакете, — а приloglevel = infoобъёмный поток, передавший не менее 1 МиБ, при закрытии пишет одну строку о том, где он ждал - Все структурированные редакторы теперь сохраняют то, чего не показывают: группы политик сохраняют свои провайдеры,
policy-path,include-*, фильтры и неизвестные параметры и оставляют пустымиurl=/timeout=со значением по умолчанию, чтобы группа следовалаproxy-test-url/test-timeout; правила сохраняют прочие параметры; запись[Host]сохраняет все адреса; строка перезаписи тела сохраняет последующие пары; скрипты сохраняют ключи, которых нет в форме; разделы WireGuard и AmneziaWG сохраняют свои, включая параметры обфускации AmneziaWG, — поэтому открытие и сохранение больше не переписывают конфигурацию - «Действующие правила» показывают таблицу, которую на самом деле обходит сопоставление, — правила области «Перед», модули, профиль и FINAL, — а «Проверка правила» запускает пробный прогон движка вместо чтения кэша
- Импорт опубликованного профиля больше не теряет маршрутизацию: формат определяется по тому, что на самом деле отдаёт адрес, поэтому подписка
.conf, отдающая профиль Clash, преобразуется;dns-serverпринимает URL шифрованного DNS, строки слушателей принимают пароль, участники группы в кавычках больше не теряются, участникиPASSотбрасываются, а не превращаются в REJECT, а неподдерживаемый протокол или тип группы вызывает предупреждение, а не выводит из строя всю группу; преобразованный профиль сохраняется как.conf, а если имя занято, к нему добавляется номер - Проверка задержки использует правильную цель: учитываются
test-urlиtest-timeoutгруппы,proxy-test-urlпрофиля, а также собственныеtest-urlиexpected-statusучастника, а узел в цепочке проверяется через свою цепочку, а не напрямую - Скрытые группы политик не показываются в строке меню и на вкладке «Прокси», если не используются; когда API управления направляет «Глобальный» на группу select, строка меню показывает её и отмечает галочкой; а перезагрузка профиля удаляет правила, добавленные во время работы из веб-консоли
- ShadowTLS теперь проверяет сертификат сайта-прикрытия, если задан
sni=, как это делает sing-box;skip-cert-verify=trueотключает проверку, а безsni=проверка пропускается с предупреждением - PROCESS-NAME, записанный как путь, совпадает с этим путём или префиксом бандла, как допускает руководство Surge, а правила PROCESS-NAME-WILDCARD и PROCESS-PATH-WILDCARD из mihomo импортируются, а не отбрасываются
- Крупные выгрузки через соединения Network.framework больше не держат данные в памяти, пока до их освобождения не дойдёт главный поток
- Флажок «Разрешить доступ по Wi-Fi» теперь объясняет, что он делает, — пока он включён, оба локальных прокси-слушателя принимают соединения на всех интерфейсах, — а поля интерфейсов на это время показывают 0.0.0.0, сохраняя ваши адреса до его выключения
- Пояснения расширенного режима теперь описывают то, что делает движок: Chute сам задаёт переопределение DNS и восстанавливает его при остановке, UDP ретранслируется через сработавшую политику, а на ping приходит локальный ответ
- Встроенный механизм обновления переведён на Sparkle 2.9.6 с исправлениями безопасности ветки 2.x; проверка при запуске теперь выполняется, только если включена автоматическая проверка обновлений
- Японский, корейский, немецкий, тайский и русский больше не показывают английский текст примерно в 850 строках, запрос на одобрение сетевого расширения переведён, а не показывает заполнитель, и все языки используют термины приложения для iOS и этого руководства
Исправления ошибок:
- Исправлено: «Включённые маршруты VIF» (
tun-included-routes) ни на что не влияли; теперь при любом типе расширенного режима — Helper utun или PacketTunnel — перечисленные CIDR добавляются к маршрутам туннеля, поэтому диапазон, который иначе забрала бы собственная подсеть физического интерфейса или другой VPN, идёт через Chute. Записи, которые отрезали бы сам туннель, — loopback, собственные подсети туннеля, link-local, многоадресные, широковещательные, текущий шлюз по умолчанию, длина префикса 0 — отклоняются с записью в журнал, а частные диапазоны принимаются с предупреждением. Для этого обновлён привилегированный помощник, поэтому macOS один раз попросит его одобрить - Исправлен MitM в расширенном режиме: хост, совпавший с правилом MitM, зависал до тайм-аута, поэтому перезапись для HTTPS, имитация ответов и расшифрованные записи никогда не применялись к трафику приложений; а расшифрованный запрос или ответ больше 64 КБ зависал — в том числе через системный прокси
- Исправлено бездействие
allow-wifi-access: локальные слушатели HTTP и SOCKS5 оставались на loopback, и ничто в сети не могло до них достучаться; теперь флаг (иallow-lansing-box при импорте) расширяет оба слушателя, а его отключение перепривязывает их - Исправлены ошибки перезаписи: перезапись заголовков ответа через MitM HTTP/1.1 записывалась как применённая, тогда как клиент получал исходный заголовок, а при обычном HTTP сравнивалась только с путём, поэтому шаблон, написанный для полного URL, никогда не срабатывал; имитация ответов строила ответ из заголовка запроса;
status-code=в Map Local игнорировался при HTTP/2; а повторно сериализованные ответы HTTP/1.1 уходили с пустой фразой причины - Исправлены ошибки сопоставления правил: IP-правила с
no-resolveпропускали соединение к IP-литералу, если определение протокола уже подставило для него имя; строки содержимого RULE-SET с опциями после содержимого отбрасывались;RULE-SET,<name>,<policy>,no-resolveтерялno-resolve; HOSTNAME-TYPE никогда не срабатывал; RULE-SET и DOMAIN-SET внутри AND / OR / NOT всегда давали «ложь», а SCRIPT — всегда «истину»; GEOIP и IP-ASNUNKNOWNникогда не срабатывали; домен, направленный на прокси логическим правилом, всё равно по-настоящему разрешался; а IPv6-литерал в квадратных скобках в заголовке Host читался как имя хоста - Исправлено:
PROTOCOL,TCPиPROTOCOL,UDPникогда не срабатывали, так что привычный способ блокировать QUIC правилом AND теперь работает;PROTOCOL,HTTPтеперь срабатывает и на обычные запросы через локальный HTTP-прокси — именно так приходит трафик системного прокси - Исправлено:
block-quicпринимал только одно из значений Surge, а любое другое значение означало, что QUIC вообще не блокируется - Исправлено: правила IP-ASN никогда не работали — базы GeoLite2 в
~/Chute/Contentигнорировались, а собственной базы ASN в Chute не было; теперь она поставляется вместе с приложением - Исправлено: строки PROCESS-NAME и PROCESS-PATH внутри набора правил приводились к нижнему регистру, поэтому правило с
Chromeникогда не срабатывало - Исправлено: запуск Chute с группой select, установленной не на первого участника, публиковал уведомление «группа политик переключена», а последующие перестроения вызывали предупреждение о дребезге; группа без запомненного выбора теперь следует
default=профиля - Исправлен API скриптов:
$klne.getPolicyGroups()иselectPolicy()больше не выбрасывают исключение при первом вызове,reloadConfiguration()действительно перезагружает,getActiveConnections()сообщает настоящие хост, порт и id,closeConnection()действительно закрывает,startURLTest()запускает тест, а скрипт перед отправкой сrequires-bodyполучает тело - Исправлено:
[Replica] hide-crashlytics-requestразбирался, но никогда не применялся,keyword-filterсравнивал имя хоста целиком, вместо того чтобы проверять, содержит ли оно ключевое слово,external-http-controller = *:9090и:::9090отклонялись, аoptimistic-dns = falseвсё равно отдавал просроченные записи - Исправлено: XHTTP падал под нагрузкой и зависал после первой записи, поэтому рукопожатие TLS через него не завершалось; также исправлен его padding stream-up поверх HTTP/1.1
- Исправлено: Hysteria2 отбрасывал любую UDP-датаграмму, не помещавшуюся в один кадр QUIC DATAGRAM, из-за чего HTTP/3 приложения откатывался на TCP, а группа url-test с участником Hysteria2 падала
- Исправлено: перезапущенный расширенный режим повторно использовал первый локальный порт и номера последовательности TCP прошлого запуска, и пир WireGuard, ещё державший старое соединение, отвечал на них сбросом
- Исправлено: WireGuard падал при одновременном запуске из двух мест, Shadowsocks 2022 терял конец ответа, SSH зависал на 30 секунд и в простое загружал одно ядро процессора, а соединения REALITY / uTLS после повреждённой записи передавали испорченную загрузку вместо того, чтобы закрыться
- Исправлен Tailscale: на Mac с двумя интерфейсами в одной сети рукопожатие, на которое ответили с другого адреса, не завершалось, а соединения зависали после остановки Tailscale
- Исправлено: оба локальных слушателя не поднимались после перезагрузки конфигурации — теперь неожиданно остановившийся слушатель перезапускается, — HTTP-прокси не отвечал на запрос без аутентификации кодом 407 с
Proxy-Authenticate, в устаревшем XTLS возникала взаимоблокировка, а транспорты WebSocket игнорировали Ping и Close - Исправлен сбой при запуске движка в macOS 10.15
- Исправлено: значения скриптов с запятыми — например, cron
0 8,20 * * *или аргумент JSON — обрезались на первой запятой при сохранении из редактора скриптов, а участники групп политик, в именах которых есть пробел или запятая, сохранялись без кавычек - Различные улучшения стабильности и производительности
Версия 1.1.3 (230)
Новые возможности:
- Добавлен помощник настройки: при первом запуске он проводит от пустого состояния до рабочей конфигурации — импорт подписки или ссылки-share, ручной ввод сервера либо указание уже имеющегося файла конфигурации, — затем устанавливает привилегированный helper, применяет выбранный способ перехвата трафика и проверяет соединение перед завершением. Его можно в любой момент открыть снова из меню
- Добавлен импорт ссылок-share (
vmess://,ss://,ssr://,trojan://,vless://,hysteria2://,shadowtls://): ссылки преобразуются локально, а подписка, возвращающая список ссылок-share (в том числе упакованный в base64), также принимается - Добавлено определение буфера обмена в окне импорта: найденная там ссылка предлагается кнопкой «Использовать», а не подставляется молча
- Добавлена URL-схема
chute://, чтобы ссылка импорта на веб-странице открывалась в Chute; адрес проверяется по форме и подтверждается пользователем до любой загрузки - Добавлена поддержка протокола AmneziaWG, включая редактор его параметров обфускации (Jc/Jmin/Jmax, S1–S4, H1–H4, I1–I5)
- В редактор политик добавлен транспорт XHTTP для Trojan, VMess и VLESS — режим, путь, хост, заголовки запроса и padding, ограничения размера post и интервала, четыре границы XMUX, а также отдельная точка загрузки
- В редактор политик добавлен транспорт gRPC с именем сервиса и multi-mode
- Добавлены настройки ECH (Encrypted Client Hello) для политик TLS: переключатель, закреплённый
ech-configи подмена прикрывающего имениech-public-name - Добавлен отпечаток клиента (uTLS) для отдельной политики и значение по умолчанию для всего профиля в общих настройках
- Добавлены методы шифрования Shadowsocks AEGIS-128L и AEGIS-256
- Добавлен постквантовый гибридный обмен ключами X25519MLKEM768 для TLS 1.3
- Добавлены выбор шифра VMess, закрепление отпечатка сертификата MASQUE, отключение UDP для каждой политики и переключатели мультиплексирования для семейства HTTP, Shadowsocks, ShadowsocksR, Trojan, ShadowTLS и Hysteria2
- Добавлена работа в роли узла выхода и маршрутизатора подсети Tailscale: анонсируйте этот Mac и сети за ним, включайте режим из строки меню, получайте уведомление, когда администратор его одобрит, и при желании не давайте Mac засыпать, пока он несёт трафик
- В список профилей добавлено удаление: профили, которыми управляет Chute, отправляются в корзину, а файлы, импортированные на месте, лишь снимаются с регистрации и остаются там же
- Добавлено окно отчёта об ошибках конфигурации — изменяемый по размеру список с номером строки, серьёзностью, сообщением и исходной строкой, с ⌘C по строкам и кнопкой «Скопировать всё» — вместо оповещения, которое могло оказаться выше экрана
- В [URL Rewrite] добавлен Map Remote: правило типа
headerтеперь переписывает строку запроса и вышестоящий хост с подстановкой групп захвата - Добавлены аргументы модулей (
#!arguments), позволяющие переиспользовать один модуль с разными значениями
Улучшения:
- Редактор политик перестроен на формы по протоколам: у каждого протокола теперь свои поля вместо общих текстовых полей с посторонними протоколами, а список типов можно дополнять, не перенумеровывая идущие ниже
- При сохранении редактор политик сохраняет параметры, для которых у него нет поля (ECH, ALPN, закрепление сертификата,
test-url,udp-relay,tfo) - Убран переключатель TCP Fast Open у TUIC, Hysteria2, MASQUE, AnyTLS и SSH — их адаптеры никогда не читают этот параметр; политика, где
tfoуже указан, сохраняет его - Улучшен импорт опубликованных профилей Clash, sing-box и Surge, включая секции MitM/Panel/Ponte у Surge, варианты REJECT, строки модулей и селектор [SSID Setting]
- Chute теперь объясняет назначение привилегированного helper до того, как macOS запросит разрешение, вместо системного диалога без всякого контекста
- Упорядочена последовательность экранов первого запуска: лицензия считывается до показа любого окна, а запрос разрешения на уведомления ждёт закрытия помощника настройки
- Когда ничего не настроено, строка меню предлагает настройки, главное окно и точки входа импорта вместо одного лишь выбора файла; переключатели панели сообщают, чего не хватает, а не сообщают об ошибке минуту спустя; такая установка запускается в новом главном окне
- Пустое состояние списка профилей и пункт импорта по URL теперь упоминают ссылки-share, а окно справки объясняет, что на деле требуется, прежде чем хоть что-то пойдёт через прокси
- Улучшены пропускная способность и расход процессора в тракте данных, при сопоставлении правил и обработке UDP
- Соединения больше не переиспользуются на устаревшем сетевом пути после смены сети на Mac
Исправления ошибок:
- Исправлено признание действительной лицензии недействительной после перезагрузки, когда единственный кратковременный сбой проверки останавливал прокси и открывал окно лицензии
- Исправлено бездействие подтверждения «Отозвать лицензию»
- Исправлено, что «Отмена» в запросе об ошибке конфигурации всё равно загружала и запускала сломанную конфигурацию, а действие отбрасывания стояло на кнопке по умолчанию
- Исправлена потеря
flowу VLESS при включённом REALITY; клиент теперь действительно использует кадрирование XTLS Vision, а не только объявляет его - Исправлена перезапись политики в HTTP при сохранении, если её тип редактор отобразить не может
- Исправлено появление буквального порта 0 у политик WireGuard и AmneziaWG, ссылающихся на секцию конфигурации
- Исправлена запись
ws-pathиws-headersпри выключенном переключателе WebSocket - Исправлено отсутствие прокрутки на странице настроек интерфейса
- Исправлена некорректная строка запроса Shadowsocks при
obfs=http, из-за которой туннель был подключён, но ничего не передавал - Исправлена потеря синхронизации Shadowsocks 2022, когда полезная нагрузка разбивалась между чтениями, и исправлен формат UDP для chacha20-poly1305
- Исправлено, что псевдоним
[Host]никогда не срабатывал: запрос A по имени-псевдониму уходил вышестоящему серверу и возвращал NXDOMAIN - Исправлено, что миграция QUIC-соединения обходила правила
PROTOCOL,QUICи параметр block-quic - Исправлена потеря пакетов WireGuard, поставленных в очередь во время переустановления сессии
- Исправлено, что строка описания
#!argumentsв модуле перезаписывала значения аргументов по умолчанию рядом с ней - Различные улучшения стабильности и производительности
Версия 1.1.2 (210)
Новые возможности:
- Добавлен Tailscale как встроенный тип прокси: настройте учётную запись Tailscale прямо в Chute, присоединитесь к tailnet и направьте трафик через узлы Tailscale — без отдельного клиента
- Добавлена панель конфигурации Tailscale: безопасный ввод auth key, проверка соединения, список узлов tailnet и переключение узла выхода
- Добавлен виджет статуса Tailscale на панели и ярлык в строке меню для переключения узла выхода
- Добавлены системные уведомления для диагностики прокси, включая висящие ссылки политик, изменения исходящего IP и события Tailscale, с переключателями по типам в настройках
- Добавлен тип прокси MASQUE в редакторе политик
- Добавлен табличный редактор bypass-list со значением simple-hostnames по умолчанию и автоматическим экспортом no_proxy
- Добавлена группировка соединений по приложениям на панели трафика
- Минимальная поддерживаемая версия macOS повышена до 10.14 (Mojave)
Улучшения:
- Увеличена пропускная способность TUN на macOS
- Улучшена стабильность привилегированного helper, системного прокси и жизненного цикла DNS/TUN
- Улучшены стабильность соединения и пропускная способность Tailscale и WireGuard
- Повышена надёжность системного расширения и автоматического продолжения VPN
- Улучшена проверка лицензии: временные ошибки сервера больше не считаются отзывом
- Имена файлов конфигурации очищаются, чтобы избежать ошибок загрузки из-за недопустимых символов пути
Исправления ошибок:
- Исправлено повторное подключение helper к уже работающему VPN-туннелю
- Исправлен сбой при одновременном переключении языка
- Исправлен сбой VPN-туннеля при втором запуске
- Исправлено отображение данных скачивания вместо отдачи на спарклайне скорости отдачи
- Различные улучшения стабильности и производительности
Версия 1.1.1 (202)
- Новый основной интерфейс с панелью: переработанное окно с 4 вкладками (Dashboard, Traffic, Config, Log) с дизайном glass-morphism, графиками скорости в реальном времени, настраиваемыми карточками виджетов и анимациями микровзаимодействий
- Новые виджеты панели: статус прокси, режим TUN, время работы, активные соединения, пропускная способность загрузки/отдачи и текущий профиль конфигурации
- Новая вкладка управления профилями для переключения и организации профилей конфигурации
- Обновленный инспектор трафика с улучшенной фильтрацией сессий и просмотром журналов
- Новый расширенный режим VPN: опция системного расширения PacketTunnel наряду с устаревшим helper utun, выбираемая в Настройках
- Миграция демона привилегированного помощника с SMJobless на SMAppService (macOS 13+)
- Миграция сетевого расширения на System Extension с потоком активации OSSystemExtensionRequest
- Добавлены редакторы конфигурации для разделов Body Rewrite, Script, Module и WireGuard
- Добавлен инструмент диагностики DNS правил
- Обновлено ядро KLNEKit с крупным расширением функций
- Добавлена поддержка протокола AnyTLS с многослойной обфускацией заполнением
- Добавлена поддержка протокола TUIC (мультиплексированная ретрансляция TCP/UDP на основе QUIC)
- Добавлена поддержка протокола Hysteria2 с контролем перегрузки Brutal
- Добавлена поддержка протокола WireGuard (встроенная и на основе разделов конфигурация)
- Добавлена поддержка протокола ShadowTLS с камуфляжем отпечатка TLS
- Добавлена поддержка антицензуры VLESS REALITY
- Добавлены методы шифрования Shadowsocks 2022 (2022-blake3-aes-128/256-gcm, chacha20-poly1305)
- Добавлен транспорт gRPC для протоколов VMess и VLESS
- Добавлена поддержка DNS-over-TLS (DoT), DNS-over-QUIC (DoQ) и DNS-over-HTTP/3 (DoH3)
- Добавлено назначение DoT/DoQ/DoH3 для отдельных доменов в локальном сопоставлении DNS
- Добавлена система JavaScript-скриптинга (7 типов скриптов: rule, dns, request, response, generic, scheduled, dns-ttl)
- Добавлена перезапись тела: поиск и замена тел HTTP-запросов/ответов через regex (с группами захвата) или JSONPath
- Добавлена имитация ответов: возврат имитированных данных или содержимого Map Local на совпадающие запросы
- Добавлен анализ протоколов: определение фактического протокола соединения и применение правил соответственно
- Добавлены отчеты об уведомлениях с 5 типами событий (connection-failure, proxy-unavailable, traffic-surge, config-update-failure, policy-group-switch)
- Добавлены HTTP Control API и встроенный веб-интерфейс для мониторинга и управления во время выполнения
- Добавлена система модулей (.sgmodule) для модульного управления конфигурацией
- Добавлен провайдер прокси для динамического обновления списков прокси
- Добавлена группа политик LoadBalance со стратегиями round-robin, consistent-hashing и sticky-sessions
- Добавлена поддержка группы политик Fallback
- Добавлен тип правила IP-ASN (встроенная база данных MaxMind GeoLite2 ASN)
- Добавлены логические правила комбинирования: AND, OR, NOT
- Добавлены правила расширенного сопоставления: SUBNET, HOSTNAME-TYPE, IN-TYPE, IN-USER, IN-NAME
- Добавлены новые типы правил на основе доменов: DOMAIN-WILDCARD, DOMAIN-REGEX, DOMAIN-SET
- Добавлен тип правила PROTOCOL (сопоставление по определенному протоколу: HTTP, HTTPS, TLS, TCP, UDP, QUIC, STUN, DNS, DOH, DOQ)
- Добавлен тип правила SCRIPT для пользовательского сопоставления на основе JavaScript
- Добавлены новые типы правил процессов: PROCESS-PATH, PROCESS-NAME-REGEX
- Добавлен тип правила SRC-PORT
- Добавлены опции extended-matching и requires-resolve для правил
- Добавлены режимы отклонения URL Rewrite: reject-200, reject-img, reject-dict
- Добавлена поддержка направления ответа в перезаписи заголовков (header-response-add/del/replace)
- Добавлена поддержка переменных шаблона Map Local в перезаписи URL
- Добавлена поддержка реплики для выборочной записи трафика
- Добавлена поддержка управляемой конфигурации с интервалом автообновления
- Добавлена опция exclude-simple-hostnames
- Добавлена опция Bypass TUN для прямой маршрутизации указанных диапазонов IP
- Добавлена глобальная опция interrupt-exist-connections
- Добавлена опция network-framework
- Добавлена опция disable-db-record
- Расширены опции групп политик: expected-status, hidden, idle-timeout, lazy
- Расширена система правил с 6 до 37 типов правил
- Оптимизирована пропускная способность TUN (UTUN_OPT_MAX_PENDING_PACKETS)
- Исправлено значение по умолчанию IPv6 (false -> true)
- Исправлены значения по умолчанию уровня логирования, добавлены уровни none и fatal
- Исправлена согласованность именования Shadowsocks/ShadowsocksR
- Различные улучшения стабильности и производительности
Версия 1.0.7 (163)
- Обновлен KLNEKit
- Добавлена поддержка политики SSH
- Исправлена проблема UDP
- Исправления ошибок
Версия 1.0.5 (155)
- Обновлен KLNEKit
- Изменена сеть TUN на 198.18.0.0/15 для избежания проблем с внутренними адресами IPv4
- Добавлена функция помощи для значка меню
- Реализована поддержка IPv6 для TUN
- Включена поддержка ping для TUN
- Исправлена проблема исчезновения меню Dock
- Исправлено: конфигурация прокси не восстанавливалась после закрытия Chute
- Исправлена сеть TUN
- Исправлен компонент обновления приложения
- Исправления ошибок
Версия 1.0.4 (145)
- Добавлена поддержка протокола VLESS
- Добавлен XTLS для VLESS
- Добавлено отображение локальных IP
- Добавлена поддержка UDP Tunnel для Chute Dashboard
- Улучшен встроенный DNS-сервер
- Исправлена обработка правила FINAL
- Исправлен UDP Tunnel
- Исправления ошибок
Версия 1.0.3 (132)
- Поддержка macOS 10.13 (без поддержки Network.framework)
- Исправлена загрузка раздела прокси в окне конфигурации
- Исправлена ошибка HTTP-запроса
- Исправления ошибок
Версия 1.0.2 (102)
- Перестроен DNS-сервер
- Перестроена установка расширения
- Исправления ошибок
Версия 1.0.0 (88)
- Первая релизная версия
- Добавлена поддержка TUN
[Beta] Версия 0.4.9 (53)
- Исправлен порядок правил.
- Добавлена поддержка сканирования QR-кода на экране.
- Исправлена группа политик.
[Beta] Версия 0.4.5 (32)
- Исправления ошибок.
[Beta] Версия 0.3.5 (25)
- Исправления ошибок.
[Beta] Версия 0.3.0 (20)
- Исправления ошибок.
[Beta] Версия 0.2.0 (8)
- Первый выпуск.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.