Ссылка конфига упаковывает всё, что нужно клиенту, в одну строку: сервер, ключ и настройки транспорта. Если уметь её читать, видно, что вам выдали и почему конфиг не работает. Во всех примерах ниже условные данные, а не настоящие серверы.
VLESS
vless://[email protected]:443?encryption=none&security=reality&sni=site.example&fp=chrome&pbk=PUBLIC_KEY&sid=SHORT_ID&type=tcp&flow=xtls-rprx-vision#my-config
| Часть | Значение |
|---|---|
00000000-… | Идентификатор пользователя (UUID). Это ключ: кто его знает, тот может пользоваться сервером. |
server.example:443 | Адрес и порт сервера. |
encryption=none | VLESS сам ничего не шифрует; трафик защищает слой защиты. |
security | none, tls или reality. |
sni | Имя сервера в TLS-рукопожатии. В REALITY это настоящий сайт, который имитируется. |
fp | Отпечаток TLS, который имитирует клиент, например chrome. |
pbk, sid | Публичный ключ REALITY и короткий идентификатор. Оба должны точно совпадать с сервером. |
type | Транспорт: tcp, ws (WebSocket), grpc и другие. |
flow | xtls-rprx-vision — поток Vision, используется с REALITY или TLS поверх TCP. |
path, host, serviceName | Настройки транспорта WebSocket или gRPC, если он используется. |
#my-config | Название, которое показывается в списке. |
VMess
Ссылка vmess:// — это префикс и Base64 небольшого JSON-документа. После декодирования она выглядит так:
{"v":"2","ps":"my-config","add":"server.example","port":"443","id":"00000000-0000-0000-0000-000000000000","aid":"0","scy":"auto","net":"ws","type":"none","host":"server.example","path":"/path","tls":"tls","sni":"server.example"}
add и port — сервер, id — UUID, aid — устаревший alter ID (должен быть 0), net — транспорт, host и path относятся к WebSocket, tls включает TLS, а ps — название. Чтобы расшифровать вручную, возьмите текст после vmess:// и пропустите его через base64 -d.
Shadowsocks
ss://BASE64(method:password)@server.example:8388#my-config
Часть до @ — шифр и пароль в кодировке Base64. Берите AEAD-шифр. Старые потоковые шифры вроде rc4-md5 или aes-256-cfb слабы. Некоторые старые ссылки кодируют в Base64 целиком method:password@host:port.
Trojan
trojan://[email protected]:443?security=tls&sni=server.example&type=tcp#my-config
Часть до @ — пароль. Trojan нужен TLS для защиты трафика, поэтому security=tls должно быть.
Подписки
Адрес подписки возвращает список ссылок, обычно в Base64, по одной в строке. Приложение скачивает его, декодирует и добавляет каждую ссылку. Когда провайдер заменяет заблокированные серверы, обновление подписки приносит новые.
Ошибки, которые ломают ссылку
Декодер ссылок проверяет самые частые:
- неверный UUID или порт;
- REALITY без публичного ключа или имени сервера;
- VLESS или Trojan без TLS;
- включённый
allowInsecure, который отключает проверку сертификатов; - устаревший шифр Shadowsocks;
- ненулевой alter ID у VMess.
Одна неверная буква в pbk или sid приводит к тому, что конфиг REALITY молча не работает. См. почему соединение может подключиться и всё равно ничего не загрузить.
Ссылка — это учётные данные
UUID или пароль внутри ссылки — ключ к серверу. Любой, у кого есть ссылка, может ею пользоваться, а на общем сервере это может съедать вашу квоту. Не публикуйте ссылки в открытых чатах: к тому же открытую ссылку блокируют скорее.
Декодер на этом сайте разбирает ссылку прямо на странице и никуда ничего не отправляет: при декодировании страница не делает сетевых запросов. Всё равно будьте осторожны с любым онлайн-инструментом, в который вставляете ссылку. Расшифровать её всегда можно и офлайн с помощью base64 -d, как показано выше.
Источники
- Примеры конфигураций Xray
- Документация REALITY
- Описание протокола Trojan
- Shadowsocks SIP002, где определён формат ссылки