Правила HTTP

Существует 4 типа правил уровня HTTP. USER-AGENT и URL-REGEX читают запрос, который клиент отправляет слушателю HTTP-прокси Chute, поэтому они совпадают только с соединениями, пришедшими туда; у соединения через TUN или SOCKS5 нет HTTP-запроса, который можно было бы прочитать. Решение по ним принимается один раз на клиентское соединение, по его первому запросу. Расшифровка MitM начинается после того, как политика соединения уже выбрана, поэтому расшифрованные ею запросы повторно с правилами не сопоставляются. PROTOCOL,TCP и PROTOCOL,UDP читают транспорт и совпадают на любом входящем интерфейсе; значения прикладного протокола у PROTOCOL берутся из определения протокола на входящем TUN, а также из обычного запроса на входящем HTTP-прокси. SCRIPT проверяется для любого соединения.

USER-AGENT

USER-AGENT,Instagram*,DIRECT

Правило совпадает, если заголовок User-Agent запроса совпадает. Поддерживаются подстановочные символы * и ?. Заголовок читается из первого запроса каждого клиентского соединения со слушателем HTTP-прокси; для HTTPS этот запрос — CONNECT, которым клиент открывает свой туннель, поэтому правило видит тот User-Agent, который клиент указывает в CONNECT, если он его вообще отправляет.


URL-REGEX

URL-REGEX,^http://google\.com.*,DIRECT

Правило совпадает, если URL обычного HTTP-запроса, пришедшего на слушатель HTTP-прокси, совпадает с регулярным выражением. URL записывается полностью — http://host[:port]/path?query, причём порт опускается, если он равен 80, — и регулярное выражение должно совпадать с URL целиком, а не с его частью: одно только ^http://google\.com не совпадает с http://google.com/, потому что путь — часть URL. У туннеля CONNECT (HTTPS или чего угодно ещё, что клиент туннелирует) и у соединения TUN нет URL, поэтому URL-REGEX с ними никогда не совпадает, и расшифровка HTTPS-соединения через MitM этого не меняет. Пробный прогон сопоставления с правилами, POST /api/rules/match в HTTP API управления, сопоставляет URL-REGEX со своим полем url ровно в том виде, в каком оно отправлено, поэтому указывайте в нём полный URL.


PROTOCOL

PROTOCOL,TLS,Proxy

Правило совпадает, если распознанный протокол соединения совпадает. Используйте в сочетании с sniffing-enabled для наилучших результатов. NETWORK принимается как псевдоним PROTOCOL.

Принимаемые значения протоколов: HTTP, HTTPS, TLS, TCP, UDP, QUIC, STUN, MTPROTO, DNS, DOH, DOH3, DOQ, DOT.

Внимание: Распознанный протокол заполняется в следующих местах. Для входящих сессий TUN при включённом sniffing-enabled TCP-соединение распознаётся как HTTP или TLS (любое TLS-соединение, включая HTTPS), только если Chute ещё не знает его имени хоста: соединение, открытое к поддельному IP-адресу или к адресу, который вернул DNS Chute, сохраняет это имя и не распознаётся, поэтому PROTOCOL,HTTP и PROTOCOL,TLS редко совпадают с трафиком TUN, имена которого разрешил Chute. UDP-поток определяется как QUIC по форме пакетов — одинаково через TUN и через ретрансляцию UDP входящего SOCKS5 — автоматически, без sniffing-enabled. При включённом sniffing-enabled Chute также читает имя сервера из пакета Initial потока QUIC, поэтому правила типа DOMAIN тоже могут совпасть с этим потоком (см. sniffing-enabled в разделе Прочие параметры). На входящем HTTP-прокси обычный (не CONNECT) запрос — это HTTP, вообще без какого-либо определения, потому что его заголовок только что разобран из соединения; CONNECT оставляет протокол незаданным, а TCP-соединение на входящем SOCKS5 не получает его никогда — но PROTOCOL,TCP и PROTOCOL,UDP читают транспорт сессии, который заполняет каждый входящий, поэтому эти два совпадают и там. При encrypted-dns-follow-outbound-mode = true (см. DNS-сервер) собственные соединения Chute с вышестоящими серверами шифрованного DNS сопоставляются как DOH, DOT, DOQ и DOH3: все четыре затем используют политику, названную правилом (DoQ и DoH3 — через её UDP-ретрансляцию, а если она UDP не передаёт, решает udp-policy-not-supported-behaviour), а решение REJECT пропускает любой из четырёх. HTTPS — принимаемое написание для распознанного рукопожатия TLS, поэтому PROTOCOL,HTTPS и PROTOCOL,TLS совпадают с одним и тем же трафиком. STUN, MTPROTO и DNS принимаются для совместимости, но ни один детектор их пока не выдаёт.


SCRIPT

SCRIPT,MyRuleScript,DIRECT

Правило выполняет скрипт JavaScript для пользовательской логики сопоставления. Имя скрипта должно совпадать со скриптом, определённым в разделе [Script] с type=rule.

[Rule]
SCRIPT,CheckInternal,PROXY

[Script]
CheckInternal = type=rule, script-path=internal-check.js

Скрипт правила получает $request и должен вызвать $done({matched: true}) или $done({matched: false}). Обратите внимание, что $request.dnsResult доступен только тогда, когда сессия уже разрешена (например, для запросов, сделанных напрямую на IP-адрес, или на втором проходе сопоставления после разрешения DNS).

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

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

results matching ""

    No results matching ""