HAPPVLESS СТРОЕНИЕ КЛЮЧА И ЕГО ЧАСТИ Ключ-подписка

Параметры VLESS-ключа по-человечески

Обновлено 25 сентября 20267 мин чтения

Строка читается слева направо: кто подключается, куда, с какими параметрами и как назвать сервер в списке. Без владельца сервера можно менять только имя после #; всё остальное должно совпадать с его настройками.

vlessпротокол://42d844f2-a22a-4a0b-b90b-b65513fe2568идентификатор@example.comадрес:443порт?type=tcptype&security=realitysecurity&pbk=nu_sEWF4G-MQVCaoaEu6UZirY3PIAQUw5mdBVef6ojYpbk&fp=chromefp&sni=example.comsni&sid=cb8d34047b93c151sid&spx=%2Fspx&flow=xtls-rprx-visionflow#Сервер-1имя
Рис. 1. Строка из примера целиком: подписанные части соединены разделителями в порядке чтения.

Разбирать параметры одиночной строки приходится, когда она сломалась; у ключа-подписки настройки обновляет сам сервис.

Посмотреть условия →

Как читать строку и её разделители

vless://<uuid>@<адрес>:<порт>?<параметры>#<имя>

Это схема, а не готовый ключ. vless указывает протокол, :// отделяет его от содержимого. Знак @ отделяет идентификатор от адреса, двоеточие — адрес от порта, ? открывает параметры, & разделяет пары «имя=значение», # начинает подпись.

Порядок параметров после ? не важен, а регистр важен: serviceName и servicename — разные имена. В значениях встречается кодирование: %2F означает /, %20 — пробел. Раскрывать такие записи вручную перед добавлением не нужно.

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

Идентификатор, адрес и порт: кто и куда

vlessпротокол://42d844f2-a22a-4a0b-b90b-b65513fe2568идентификатор@example.comадрес:443порт?type=tcptype&security=realitysecurity&pbk=nu_sEWF4G-MQVCaoaEu6UZirY3PIAQUw5mdBVef6ojYpbk&fp=chromefp&sni=example.comsni&sid=cb8d34047b93c151sid&spx=%2Fspx&flow=xtls-rprx-visionflow#Сервер-1имя
Рис. 2. Идентификатор стоит до @, адрес и порт — после него.

Идентификатор обычно имеет формат UUID: пять групп шестнадцатеричных символов длиной 8-4-4-4-12. Это фактически пароль: кто знает строку, тот может пользоваться доступом. Заменить UUID случайным набором той же длины и получить соединение нельзя.

Адрес — домен или IP сервера. IPv6 записывают в квадратных скобках, чтобы его двоеточия не смешивались с разделителем порта. Порт — число от 1 до 65535, часто 443. Номер задаёт владелец сервера, и подбор наугад строку не исправит.

Защита соединения: security и sni

vlessпротокол://42d844f2-a22a-4a0b-b90b-b65513fe2568идентификатор@example.comадрес:443порт?type=tcptype&security=realitysecurity&pbk=nu_sEWF4G-MQVCaoaEu6UZirY3PIAQUw5mdBVef6ojYpbk&fp=chromefp&sni=example.comsni&sid=cb8d34047b93c151sid&spx=%2Fspx&flow=xtls-rprx-visionflow#Сервер-1имя
Рис. 3. Эти поля сверяют с исходной строкой, а не заполняют по образцу чужого ключа.

security задаёт защиту соединения. tls — шифрование, как у защищённых сайтов. reality — вариант защищённого соединения, который задаёт владелец сервера, менять его руками не нужно. none — защиты на этом уровне нет; для подключения через интернет так бывает редко.

sni — имя сервера, которое приложение называет серверу в начале защищённого соединения. Оно должно совпадать с настройкой владельца. Это не поле для адреса сайта, который вы хотите открыть: подставленный туда «знакомый» домен ломает соответствие настроек.

  • pbk — открытый ключ сервера, встречается в строках с security=reality. Обычно это 43 символа: латиница, цифры, дефис и подчёркивание. Без него такое соединение не собирается.
  • sid тоже приходит из настроек сервера: короткий идентификатор из цифр 0–9 и букв a–f, до 16 знаков. Дописать его по образцу соседнего примера нельзя.
  • fp — отпечаток клиента, например chrome, firefox или safari. Менять его без причины не стоит.
  • spx — служебное значение из настроек сервера, записанное в закодированном виде; spx=%2F переносите из оригинала как есть.

Транспорт: type, path, host

vlessпротокол://42d844f2-a22a-4a0b-b90b-b65513fe2568идентификатор@example.comадрес:443порт?type=tcptype&security=realitysecurity&pbk=nu_sEWF4G-MQVCaoaEu6UZirY3PIAQUw5mdBVef6ojYpbk&fp=chromefp&sni=example.comsni&sid=cb8d34047b93c151sid&spx=%2Fspx&flow=xtls-rprx-visionflow#Сервер-1имя
Рис. 4. Транспорт и режим передачи должны соответствовать друг другу и настройкам сервера.

type выбирает транспорт — то, как данные упакованы по дороге к серверу. Если параметра нет, используется tcp. Для ws рядом встречаются path и host, для grpc — serviceName. Параметр host после ? и адрес перед портом — разные вещи: не подменяйте один другим.

Встречаются также httpupgrade и xhttp; последний понимают свежие версии приложений. Какой транспорт нужен, решает сервер: менять его в строке самостоятельно бесполезно.

Режим передачи и имя: flow, encryption, #

flow=xtls-rprx-vision — режим передачи внутри защищённого соединения. Он работает с tls или reality поверх tcp. Старые значения вроде xtls-rprx-direct остались от прежних версий серверного ядра и с нынешними обычно не работают — новую строку должен выдать источник ключа.

encryption у VLESS обычно равен none; другое значение задаёт владелец сервера. Это не то же самое, что security: переносите обе настройки из оригинала.

После # стоит только имя сервера в Happ. Его можно заменить понятной подписью: на подключение оно не влияет и другие поля не исправляет.

Что можно менять руками

Таблица 1. Границы самостоятельного редактирования
Часть строкиЧто этоМожно менять?
vlessпротоколнет, задаёт источник
uuidидентификатор доступанет
адрес и портместо подключениянет
security, sniзащита и имя серверанет
pbk, sidзначения из настроек серверанет
fp, spxдополнительные параметрынет, если источник не просил
type, path, host, serviceNameтранспорт и его спутникинет
flow, encryptionрежим передачи и настройка VLESSнет
имя после #подпись в спискеда, на соединение не влияет

Если разобрали, но подключиться не получилось

Целая строка отключённого или истёкшего ключа выглядит так же правильно, как рабочая. Для первого подключения пригодится инструкция добавления в Happ. Если строка добавилась, а ответа нет, проверьте причины неполадок и уточните у источника, действует ли доступ.

Вопросы к параграфу

Что такое reality в ключе?

Это вариант защищённого соединения, который задаёт владелец сервера, менять его руками не нужно.

Можно заменить sni на другой сайт?

Нет. Имя должно совпадать с настройками сервера. Если владелец его изменил, нужна новая строка.

Важен ли порядок параметров?

Нет, пары после ? могут стоять в любом порядке. А вот написание, регистр, значения и разделители & должны сохраниться.

В строке нет security — это нормально?

Без security соединение идёт без защиты на этом уровне. Так бывает, но для подключения через интернет редко; нередко параметр пропадает вместе с обрезанным хвостом строки. Сверьте её с оригиналом.

Что значит %2F в path?

Это закодированный знак /. Оставьте запись такой, какой её выдал источник: раскрывать её вручную не нужно.

Готовый ключ-подписка

Параметры, которые обновляются сами

В ключе-подписке строки с параметрами выдаёт и поддерживает сервис: если у сервера сменится порт или ключ, Happ получит новые значения при обновлении списка. Разбирать и сверять ничего не придётся. От 200 ₽ в месяц, 3 устройства, первые 3 дня бесплатно.

  • 3 дня бесплатно, без карты
  • 3 устройства в любом сроке
  • разовый платёж, без автосписаний
Взять ключ-подписку → от 200 ₽ в месяц

Сайт и сервис доступа не связаны с разработчиком Happ; само приложение бесплатное.

Читать дальше

Параграф помог разобраться?