AnyTLS — прокси-протокол, который работает внутри TLS и дополняет начало каждого соединения, чтобы проксируемый трафик не показывал характерные размеры пакетов, обычно выдающие «TLS внутри TLS». Вы входите по паролю, сервер его проверяет, и ваши соединения идут через TLS-сессию, которая выглядит вполне обычно. Кроме того, AnyTLS повторно использует свои TLS-соединения, что экономит рукопожатие для большинства новых соединений.

В этой статье разберем, что такое AnyTLS, как он работает, чем отличается от Trojan и VLESS и как выглядит ссылка anytls://.

Что такое AnyTLS?

AnyTLS — сравнительно молодой протокол. Он появился в 2025 году вместе с anytls-go — эталонными клиентом и сервером, в репозитории которых лежит и спецификация протокола. Вскоре его добавили два популярных прокси-движка: sing-box и mihomo (движок большинства современных Clash-приложений).

Его задача узкая. Протоколы вроде Trojan и так прячутся внутри TLS, поэтому наблюдатель видит только зашифрованную сессию с каким-то сервером. Но когда вы открываете HTTPS-сайт через такой прокси, собственное TLS-рукопожатие браузера идет внутри TLS-сессии прокси. У первых сообщений этого внутреннего рукопожатия типичные размеры и тайминги. Эти шаблоны могут просвечивать сквозь внешнее шифрование, потому что шифрование скрывает содержимое, но не длину. Это часто называют проблемой «TLS внутри TLS».

AnyTLS пытается размыть эти шаблоны. Он дополняет первые пакеты каждого соединения до размеров из схемы дополнения (padding scheme), чтобы они больше не совпадали с типичным TLS-рукопожатием.

Сложнее, но не невозможно. Дополнение затрудняет опознание прокси-трафика по отпечатку. Необнаружимым оно его не делает и добавляет немного байтов к каждому новому соединению.

Как работает AnyTLS

Вот что происходит, когда приложение на телефоне открывает соединение через сервер AnyTLS:

  1. Сначала TLS. Клиент открывает обычное TLS-соединение с сервером, с именем сервера (SNI) и, по желанию, отпечатком в стиле браузера. Для сети это выглядит как любой визит по HTTPS.
  2. Проверка пароля. Внутри TLS клиент отправляет хеш пароля и блок дополнения. Сервер, не узнавший пароль, закрывает соединение.
  3. Дополнение. Первые пакеты в каждом направлении разбиваются и дополняются до длин, описанных схемой дополнения. Сервер может прислать собственную схему, и клиент применяет ее начиная со следующего TLS-соединения.
  4. Ваше соединение. Клиент просит сервер открыть соединение с адресом назначения, например example.com:443, и передает данные в обе стороны.
  5. Повторное использование. Когда это соединение завершается, TLS-сессия не закрывается. Она ждет как простаивающая сессия, и следующее соединение использует ее вместо того, чтобы открывать новую. Каждая сессия одновременно несет одно соединение, поэтому несколько одновременных соединений открывают несколько сессий, которые потом используются повторно.

UDP, например голосовые звонки или QUIC, передается внутри того же TLS-соединения. Это называется UDP over TCP.

Схемы дополнения

Схема дополнения — короткий список правил: сколько пакетов дополнять и какой длины должен быть каждый, часто в виде случайного диапазона. Значения по умолчанию взяты из anytls-go. Администратор сервера может их изменить, и клиент подхватит новую схему автоматически. На устройстве ничего настраивать не нужно.

REALITY

Обычному серверу AnyTLS нужен TLS-сертификат для его домена. Серверы sing-box вместо этого могут запускать AnyTLS с REALITY, который заимствует TLS-сертификат другого, настоящего сайта. С REALITY вы указываете публичный ключ и short ID сервера, используете имя заимствованного сайта как имя сервера и выбираете отпечаток браузера, например chrome. Если REALITY для вас в новинку, см. Что такое VLESS + REALITY?.

Сильные и слабые стороны

Сильные стороны

  • Похож на HTTPS. Внешний слой — обычный TLS с настоящим именем сервера, поэтому он сливается с обычным веб-трафиком.
  • Скрывает размеры «TLS внутри TLS». Дополнение нацелено именно на тот шаблон, по которому TLS-прокси проще заметить.
  • Меньше рукопожатий. Благодаря повторному использованию простаивающих сессий большинство новых соединений обходятся без TLS-рукопожатия, что помогает на каналах с высокой задержкой.
  • Простая настройка. Клиенту нужны только пароль и обычные настройки TLS.
  • Работает с REALITY на sing-box, так что собственный сертификат не нужен.

Слабые стороны

  • Молодой и менее распространенный. AnyTLS предлагают меньше серверных панелей, провайдеров и приложений, чем Trojan, Shadowsocks или VLESS.
  • Дополнение расходует трафик. Накладные расходы небольшие, но каждая новая сессия отправляет лишние байты.
  • UDP идет поверх TCP. UDP over TCP работает, но при потере пакетов ждет все, что идет внутри TLS-соединения. Протокол на основе QUIC, такой как Hysteria 2, справляется с потерями лучше.
  • Нет транспортов. AnyTLS работает прямо поверх TLS. В нем нет WebSocket или gRPC, поэтому его нельзя поставить за CDN, как Trojan или VLESS поверх WebSocket.

Сравнение AnyTLS с похожими протоколами

AnyTLS Trojan VLESS + REALITY Hysteria 2
Работает поверх TLS поверх TCP TLS поверх TCP REALITY (TLS) поверх TCP QUIC поверх UDP
Вход Пароль Пароль ID пользователя (UUID) Пароль
Скрывает «TLS внутри TLS» Дополнение Нет С потоком Vision —
Повторно использует соединения Да Нет Нет Да, одно соединение QUIC
Нужен сертификат Да, или REALITY Да, или REALITY Нет Да (часто самоподписанный)
UDP UDP over TCP Поверх TLS В том же соединении Датаграммы QUIC

Более широкий обзор, включая Shadowsocks, VMess и SOCKS5, — в статье Сравнение прокси-протоколов. О ближайшем родственнике AnyTLS читайте в статье Что такое прокси Trojan?.

Как выглядит ссылка AnyTLS

Провайдеры обычно выдают серверы AnyTLS в виде ссылок anytls:// в формате URI anytls-go:

anytls://password@host:port/?parameters#name

Пароль кодируется процентным кодированием, а название после # — просто подпись. Если порт не указан, клиенты используют 443. Простой сервер с паролем secret:

anytls://secret@anytls.example.com:443/?sni=anytls.example.com#Basic

Основные параметры:

Параметр Значение
sni Имя сервера TLS.
insecure 1 отключает проверку сертификата.
alpn Список ALPN через запятую, в процентном кодировании.
fp Отпечаток браузера, например chrome.
hpkp SHA-256 сертификата сервера для его закрепления.

Сервер с самоподписанным сертификатом, который закреплен, а не оставлен без проверки:

anytls://secret@anytls.example.com:443/?sni=anytls.example.com&fp=chrome&hpkp=abababababababababababababababababababababababababababababababab#Pinned

В подписке Clash или Mihomo тот же сервер — это запись с type: anytls, password, sni и дополнительными опциями, например udp: true или client-fingerprint. В записях Clash можно также настроить повторное использование сессий параметрами idle-session-check-interval, idle-session-timeout и min-idle-session.

Избегайте режима insecure. С insecure=1 любой, кто находится между вами и сервером, может читать ваш трафик. Если сервер использует самоподписанный сертификат, закрепите его с помощью hpkp.

AnyTLS на iPhone

Potatso — бесплатный прокси-клиент для iPhone и iPad — поддерживает AnyTLS со схемами дополнения, повторным использованием соединений, UDP over TCP, REALITY, ECH, закреплением сертификата и отпечатками браузера. Сервер можно добавить из ссылки anytls://, подписки Clash или Mihomo, конфигурации Surge или вручную.

Следуйте пошаговой инструкции Как пользоваться AnyTLS на iPhone или посмотрите все поддерживаемые настройки в справке по AnyTLS.

Частые вопросы

Для чего нужен AnyTLS?
AnyTLS — прокси-протокол, который передает ваши соединения внутри обычного TLS-соединения и дополняет их (padding), чтобы трафик было сложнее опознать как прокси. Его используют как альтернативу Trojan или VLESS, когда нужен TLS-прокси, который к тому же скрывает характерные размеры пакетов «TLS внутри TLS».
AnyTLS лучше Trojan?
Ни один не лучше во всех случаях. Оба работают внутри TLS и проверяют клиента по паролю. AnyTLS добавляет дополнение трафика и повторное использование соединений, чтобы проксируемый HTTPS было сложнее опознать по отпечатку, а Trojan старше, проще и поддерживается большим числом серверов и приложений.
Какие серверы и приложения поддерживают AnyTLS?
Эталонный сервер — anytls-go. AnyTLS также поддерживают sing-box и mihomo, а sing-box умеет сочетать его с REALITY. На iPhone и iPad Potatso подключается к серверам AnyTLS из ссылки anytls://, подписки Clash или Mihomo, конфигурации Surge или настроек, введенных вручную.
Поддерживает ли AnyTLS UDP?
Да. AnyTLS передает UDP внутри своего TLS-соединения — это называется UDP over TCP. В Potatso «Ретрансляция UDP» для серверов AnyTLS по умолчанию выключена, поэтому включите ее, если ваш сервер передает UDP.

Другие языки: English · 简体中文 · 繁體中文 · 日本語