Правила HTTP
Существует 4 типа правил уровня HTTP. USER-AGENT и URL-REGEX требуют заголовка HTTP-запроса, поэтому они совпадают только с HTTP-запросами (или HTTPS-запросами с расшифровкой MitM). PROTOCOL и SCRIPT проверяются для любого соединения.
USER-AGENT
USER-AGENT,Instagram*,DIRECT
Правило совпадает, если user agent запроса совпадает. Поддерживаются подстановочные символы * и ?.
URL-REGEX
URL-REGEX,^http://google\.com,DIRECT
Правило совпадает, если URL совпадает с регулярным выражением.
PROTOCOL
PROTOCOL,TLS,Proxy
Правило совпадает, если определенный протокол соединения совпадает. Используйте в сочетании с sniffing-enabled для наилучших результатов. NETWORK принимается как псевдоним PROTOCOL.
Принимаемые значения протоколов: HTTP, HTTPS, TLS, TCP, UDP, QUIC, STUN, DNS, DOH, DOQ.
Примечание: Сниффинг протоколов в настоящее время определяет только
HTTP,TLS(любое TLS-соединение, включая HTTPS) иQUIC(входящее TUN). Остальные принимаемые значения зарезервированы — ни один детектор их пока не выдает, поэтому правила с ними не будут совпадать. В частности, для сопоставления HTTPS-трафика используйтеPROTOCOL,TLS, а неPROTOCOL,HTTPS.
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).