VLESS-ссылка — это строка формата vless://..., которую Xray-совместимые клиенты используют как компактную запись одного профиля подключения. В ней обычно есть UUID пользователя, адрес сервера, порт, параметры VLESS, транспорт, TLS или Reality, а также название профиля после #.
Такую строку часто называют «ключом», но технически это URL. Поэтому ее можно разбирать по тем же частям: схема vless://, данные пользователя до @, сервер и порт, параметры после ? и фрагмент после #. Если при копировании потерять один символ, клиент может импортировать другой профиль или не импортировать ссылку вообще.
#Базовый шаблон
Упрощенно VLESS sharing link выглядит так:
vless://UUID@host:port?encryption=none&security=reality&type=tcp&flow=xtls-rprx-vision&sni=www.example.org&fp=chrome&pbk=PUBLIC_KEY&sid=abcd#profile-nameЧитать эту строку удобнее слоями, а не слева направо как обычный текст. vless:// говорит клиенту, какой протокол использовать. UUID до @ связан с пользователем. host:port указывает, куда подключаться. Все после ? описывает параметры подключения. Все после # — это имя, которое клиент показывает в списке.
| Часть | Пример | Что означает |
|---|---|---|
| Scheme | vless:// | Тип импортируемого профиля. Клиент должен поддерживать VLESS. |
| Userinfo | 00000000-0000-4000-8000-000000000000 | UUID или id пользователя. Это чувствительная часть доступа. |
| Host | example.com | Домен, IPv4 или IPv6-адрес сервера. Для IPv6 в URL нужны квадратные скобки. |
| Port | 443 | Порт сервера от 1 до 65535. Одна неверная цифра обычно дает таймаут или отказ соединения. |
| Query | ?security=reality&type=tcp | Набор параметров: encryption, security, transport, Reality/TLS и transport-specific поля. |
| Fragment | #profile-name | Название профиля. Оно не участвует в подключении к серверу. |
#UUID, host и port
UUID в ссылке соответствует идентификатору пользователя VLESS в конфигурации Xray. В официальной конфигурации outbound это поле называется id. Если UUID отличается от того, что ожидает сервер, клиент может установить TCP/TLS-соединение, но VLESS-аутентификация не пройдет.
host — это адрес, к которому подключается клиент. Он может быть доменом, IPv4 или IPv6. Важно не путать адрес подключения с sni или host в query: это разные поля. Например, клиент может подключаться к edge.example.com, а для TLS или Reality использовать sni=www.example.org, если именно так настроен сервер.
port задает сетевой порт. Популярный порт 443 не делает профиль правильным автоматически. Сервер должен действительно слушать этот порт, firewall должен пропускать соединение, а клиент и сервер должны совпадать по дальнейшим параметрам.
VLESS
Переходите к настройке VLESS
Если вы уже понимаете, как работает VLESS, получите данные для подключения и добавьте их в совместимое приложение.
#Параметры после вопросительного знака
Query string начинается после ? и состоит из пар ключ=значение, разделенных символом &. Порядок параметров обычно не важен, но значения должны быть корректно экранированы. Пробелы, кириллица, символы #, &, % и ? внутри значений могут ломать URL, если они не закодированы.
| Параметр | Частые значения | Зачем нужен |
|---|---|---|
encryption | none, новые VLESS Encryption строки | Настройка шифрования самого VLESS. none не означает, что нет TLS или Reality. |
security | none, tls, reality | Нижний слой транспортной безопасности. В sharing link это отдельный параметр, не то же самое, что encryption. |
type | tcp, ws, grpc, xhttp, httpupgrade | Transport/network: как данные VLESS передаются ниже по стеку. |
flow | xtls-rprx-vision, пусто | Режим управления потоком. Должен поддерживаться клиентом, сервером и выбранной связкой. |
sni | www.example.org | Server Name Indication для TLS/Reality. Ошибка часто ломает рукопожатие. |
fp | chrome, firefox, safari, random | TLS ClientHello fingerprint/uTLS, если клиент поддерживает такую настройку. |
pbk | строка публичного ключа | Public key Reality. Нужен для проверки Reality-связки. |
sid | shortId, иногда пусто | Short ID Reality. Значение должно соответствовать серверу. |
spx | / или путь | SpiderX в Reality-настройках. В ссылках встречается не всегда. |
#Reality-параметры
Профиль VLESS + Reality обычно выглядит как security=reality вместе с sni, fp, pbk, иногда sid, spx и flow=xtls-rprx-vision. Reality не является самим VLESS: это нижний слой безопасности в настройках транспорта Xray.
sniдолжен совпадать с ожидаемым именем сервера в Reality/TLS-сценарии. Случайная замена SNI редко помогает и часто ломает профиль.fpописывает fingerprint клиента. Если приложение не поддерживает нужный uTLS/fingerprint, импорт может пройти, но подключение не заработает.pbk— публичный ключ Reality. Это не пароль в обычном смысле, но он уникален для связки и должен быть точным.sid— shortId. Он может быть коротким или пустым только если так настроен сервер.flowчасто равенxtls-rprx-visionдля VLESS + Reality + TCP/RAW. Старые клиенты могут не понимать этот режим.
Если ссылка импортируется, но Reality-подключение не стартует, не меняйте pbk, sid и sni на значения из чужих инструкций. Эти поля не универсальны; они принадлежат конкретной серверной конфигурации.
#TLS, WebSocket, gRPC и другие transports
Transport задается параметром type. В старых ссылках для обычного TCP может встречаться type=tcp; в документации Xray для транспортного слоя также используется название RAW. Главное — клиент и сервер должны говорить на одном transport.
| Связка | Типичные параметры | Что проверить |
|---|---|---|
| VLESS + TCP/RAW + Reality | type=tcp, security=reality, sni, fp, pbk, sid, flow | Поддержку Reality и XTLS Vision в клиенте/core. |
| VLESS + TLS | security=tls, sni, иногда alpn, fp | Домен, сертификат, SNI и отсутствие отключенной проверки сертификата. |
| VLESS + WebSocket | type=ws, path, host, часто security=tls | Совпадение WebSocket path и Host с сервером или reverse proxy. |
| VLESS + gRPC | type=grpc, serviceName, authority | HTTP/2, serviceName и настройки reverse proxy, если он есть. |
| VLESS + XHTTP | type=xhttp, path, host, mode | Поддержку XHTTP в обеих версиях core и точные поля профиля. |
Параметр host в query может означать HTTP Host для WebSocket/XHTTP, а не адрес подключения из UUID@host:port. Поэтому в одной ссылке может быть два похожих слова: сетевой host до двоеточия и transport-specific host=... после вопросительного знака.
#Имя после #
Фрагмент после # — это человекочитаемое имя профиля: например, #demo-reality или #office-node-1. Оно нужно клиенту для отображения в списке и не отправляется серверу как часть VLESS-подключения.
Название можно менять безопаснее, чем технические поля, но оно тоже должно быть URL-корректным. Если в имени есть пробелы, кириллица или символ #, клиент или генератор ссылки должен закодировать их. Для демонстраций лучше использовать латиницу, дефисы и цифры.
#Безопасные примеры
Примеры ниже показывают форму ссылки, а не рабочие учетные данные. Домен example.com, example.org, нулевой UUID и заглушки ключей не предназначены для импорта как реальный доступ.
#VLESS + Reality + TCP/RAW
vless://00000000-0000-4000-8000-000000000000@example.com:443?encryption=none&security=reality&type=tcp&flow=xtls-rprx-vision&sni=www.example.org&fp=chrome&pbk=PUBLIC_KEY_EXAMPLE&sid=abcd&spx=%2F#demo-realityЗдесь encryption=none относится к VLESS, а security=reality включает Reality-слой. spx=%2F — пример URL-кодирования символа /.
#VLESS + TLS + WebSocket
vless://00000000-0000-4000-8000-000000000000@edge.example.com:443?encryption=none&security=tls&type=ws&sni=edge.example.com&path=%2Fws&host=edge.example.com#demo-ws-tlsВ этой связке критичны path и WebSocket host. Если сервер или reverse proxy ожидает другой путь, соединение может завершаться таймаутом.
#VLESS + TLS + gRPC
vless://00000000-0000-4000-8000-000000000000@grpc.example.com:443?encryption=none&security=tls&type=grpc&sni=grpc.example.com&serviceName=demoService&authority=grpc.example.com#demo-grpcДля gRPC важен serviceName. Он похож на путь в HTTP/2 и должен совпадать с тем, что проверяет сервер.
#Почему клиент пишет invalid URL или import failed
- Ссылка обрезана. Мессенджер, заметки или перенос строки могли потерять часть после
?,&или#. - Скопирован не URL, а весь текст инструкции. Клиент ожидает строку, которая начинается с
vless://, а получает комментарии, кавычки или Markdown. - Символы не экранированы. Пробелы, кириллица,
#,&,%и слеши внутри значений должны быть URL-encoded. - Неверный UUID. Лишний символ, пропущенный дефис или placeholder вместо реального id ломают профиль.
- Порт вне диапазона. Порт должен быть числом от 1 до 65535.
- Клиент не поддерживает параметр. Старый core может не понимать Reality, XHTTP, новый VLESS Encryption,
flowили отдельные поля sharing link. - Смешаны разные инструкции. Например, ссылка от Reality-профиля вручную дополнена WebSocket path или чужим
pbk. - HTML-экранирование попало в буфер. На странице вы видите
&вместо обычного разделителя&, и клиент получает испорченную query string. - Имя после # содержит спецсимволы. Неправильно закодированный fragment может не мешать сети, но ломать парсер импорта.
#Чеклист перед ручной правкой
- Сначала определите связку. Это VLESS + Reality + TCP, VLESS + TLS + WS, VLESS + gRPC или другой вариант?
- Не меняйте секретные и серверные поля наугад. UUID,
pbk,sid,sni,pathиserviceNameдолжны соответствовать серверу. - Проверьте поддержку клиента. Особенно Reality, XHTTP, VLESS Encryption и
xtls-rprx-vision. - Сверьте URL-структуру. Должны быть
vless://, один@, корректный host, порт, query после?и необязательное имя после#. - Редактируйте только понятное. Название после
#менять безопаснее, чем transport или Reality-параметры. - Не отключайте проверку TLS ради импорта. Если помогает только небезопасный режим, вероятнее всего проблема в домене, SNI, сертификате, времени, клиенте или самой ссылке.
- Храните ссылку как чувствительные данные. Не отправляйте полный профиль в публичные чаты, онлайн-декодеры и скриншоты.
Итог: VLESS-ссылка — это не магическая строка, а компактный URL профиля. Чем точнее вы отделяете UUID, адрес, порт, query-параметры, Reality/TLS-настройки, transport-поля и имя после #, тем проще безопасно импортировать профиль и понять, где именно возникла ошибка.