Оформить доступ
Лист 7 · Формат ссылок

Что программа понимает в ссылке на сервер

Восемь протоколов плюс AmneziaWG отдельно. Всё решается по схеме — тому, что стоит в самом начале строки до ://. Если схема не из списка разбираемых, строка не превращается в сервер и просто исчезает: сообщения об этом не будет.

Программа построена на ядре Xray — набор протоколов и большая часть параметров ссылки идут именно оттуда.

Короткий ответ: что читается, а что нет

Читаются VLESS (включая Reality), VMess, Trojan, Shadowsocks, Hysteria2, SOCKS5, HTTP-прокси и WireGuard. Отдельной строкой идёт AmneziaWG. Три схемы программа узнаёт, но не разбирает.

  • Схема — это первое слово строки. vless://, trojan://, ss:// и так далее. По ней программа решает, что перед ней и умеет ли она это прочитать.
  • ssr://, tuic:// и hysteria:// первой версии — узнаются, но не разбираются. Серверы на них пропускаются. Это самая недооценённая причина, по которой «часть серверов из подписки не появилась».
  • Пропуск происходит молча. Список просто оказывается короче, чем обещал продавец, и выглядит это как поломка.
  • Разбор ссылки одинаков хоть в подписке, хоть в одиночной ссылке. Формат один и тот же, разница только в том, откуда строка приехала — подробности на листе про подписку.
  • Часть возможностей ссылки работает не везде. Пример ниже: port hopping у Hysteria2 настольная сборка не поддерживает.

Как решается судьба каждой строки

Развилка одна и проходит она ещё до всякого подключения — на этапе чтения подписки.

Оба исхода выглядят одинаково тихо: во втором случае программа не жалуется, а просто не показывает такой сервер.

Какие протоколы программа поддерживает

Список закрытый: он одинаково перечислен и в описании репозитория разработчика, и в его документации по формату подписки.

VLESS, в том числе Reality

Основной рабочий вариант. Reality — это способ маскировки соединения без собственного сертификата; в ссылке он выбирается значением security=reality.

VMess

Старший протокол того же ядра. В ссылках встречается реже VLESS, но читается наравне с ним.

Trojan

Соединение маскируется под обычный HTTPS. Отдельная схема trojan://, которую на Android программа берёт на себя.

Shadowsocks

Схема ss://. Одна из пяти схем, зарегистрированных за приложением в манифесте Android.

Hysteria2

Работает поверх QUIC и умеет прыгать по портам — про это отдельный раздел ниже, с оговоркой по настольной сборке.

SOCKS5 и HTTP-прокси

Обычные прокси без шифрования собственного канала. Годятся как промежуточный выход, а не как полноценная замена туннелю.

WireGuard

Поддерживается наравне с остальным. Конфиг можно передать не только ссылкой, но и сырым файлом .conf — программа примет его командой импорта.

AmneziaWG

Идёт отдельно от WireGuard: свои схемы amneziawg:// и awg:// и свой набор параметров. Разбор — ниже.

Три схемы, из-за которых серверы пропадают из списка

ssr://, tuic:// и hysteria:// первой версии программа распознаёт как ссылки, но разбирать не умеет — такие серверы она пропускает. Это прямая оговорка в документации разработчика, и она же подтверждается со второй стороны: ни SSR, ни TUIC, ни Hysteria первой версии в перечне протоколов у него нигде не значатся.

Отсюда практический вывод. Если продавец обещал двадцать серверов, а в списке их четырнадцать, начинать надо не с переустановки и не с ошибок соединения, а с содержимого подписки: откройте её адрес в браузере и посмотрите, с каких слов начинаются строки. Пропали ровно те, что на неподдерживаемых схемах, — вопрос к продавцу, а не к программе.

Транспорты и параметры VLESS: что означают хвосты ссылки

Хвост после знака вопроса — это настройки транспорта: как именно соединение притворяется обычным трафиком. Программа принимает шесть транспортов и три варианта защиты.

  • Транспорты: tcp, ws, grpc, xhttp, kcp, quic.
  • Защита (security): none, tls, reality.
  • Устаревшее имя приводится к новому автоматически. Ссылка с type=splithttp читается как xhttp — переписывать её руками не нужно.

Что такое отпечаток fp и почему его лучше не выдумывать

fp — это отпечаток, под который программа маскирует начало защищённого соединения: она представляется тем же набором признаков, что и указанный браузер. Список допустимых значений закрытый.

  • Браузеры и системы: chrome, firefox, safari, ios, android, edge, 360, qq.
  • Случайные: random, randomized, randomizednoalpn.
  • Закреплённые версии вида hellochrome_120, hellochrome_131, hellochrome_133 — когда нужен отпечаток конкретного выпуска браузера.
  • Пустое значение — не ошибка. Если fp в ссылке нет, подставляется chrome.

Hysteria2: прыжки по портам и оговорка про компьютер

Hysteria2 умеет менять порт на ходу — это и есть port hopping. В ссылке за него отвечают параметры mport или ports (набор портов) и mportHopInt (как часто прыгать).

  • Зачем это нужно. Соединение, постоянно висящее на одном порту, заметнее для фильтрующего оборудования, чем то, которое порт меняет.
  • Настольная сборка так не умеет. Она берёт из набора только первый порт — это оговорка самой документации; возможности мобильной и настольной сборок разработчик и в остальном перечисляет отдельными колонками.
  • Что это значит на практике. Одна и та же ссылка на телефоне и на компьютере ведёт себя по-разному, и разница не в вашей сети.

AmneziaWG: что пишет документация и в чём расхождение

По документации разработчика поддержка есть и она подробная: принимаются схемы amneziawg:// и awg://, а также сырой файл .conf прямо в теле подписки.

  • Движок обновлён до amneziawg-go версии 3.1, при этом принимаются параметры и версии 3.0, и версии 3.1.
  • Читаемые параметры: HeaderProtectionKey, ContentPaddingAddition, RekeyAfterTime, RekeyTimeout, RejectAfterTime, KeepaliveTimeout, MaxHandshakeAttempts, RandomTrailers, DisableCookies.
  • Конфиг можно не переписывать в ссылку. Команда импорта принимает .conf как есть, в том числе завёрнутый в base64.

Расхождение, о котором честнее сказать вслух

Документация описывает работающую поддержку, а дорожная карта на сайте разработчика в тот же день держала AmneziaWG в разделе «Планируется». Два его собственных источника говорят разное, и мы не выбираем из них удобный.

Что с этим делать читателю: проверять на своей сборке. Выше изложена версия документации — это единственное, что здесь можно утверждать с источником.

Частые вопросы про ссылки и протоколы

Почему из подписки появились не все серверы?

Первым делом смотрите на схемы строк. Серверы на ssr://, tuic:// и hysteria:// первой версии программа пропускает — она их узнаёт, но не разбирает. Сообщения об этом не показывается, поэтому список просто оказывается короче.

Нужно ли переписывать type=splithttp на xhttp?

Нет. Программа делает эту замену сама при чтении ссылки.

Что будет, если в ссылке не указан fp?

Подставится chrome. Пустое значение не ломает ссылку и не требует правки.

Почему одна и та же ссылка Hysteria2 на компьютере ведёт себя иначе, чем на телефоне?

Потому что настольная сборка не поддерживает прыжки по портам и использует только первый порт из набора. Мобильная — использует весь набор с указанным интервалом.

Есть ли разница, откуда взялась ссылка — из подписки или из переписки?

Для разбора — нет: формат один и тот же. Разница в другом: подписка перечитывается по расписанию и может обновлять список, а одиночная ссылка остаётся такой, какой её добавили.

На Android приложение объявляет себя обработчиком схем vless, vmess, trojan и ss, поэтому ссылка из сообщения открывается в нём напрямую.

Поддерживается ли обычный SOCKS5-прокси?

Да, он в списке протоколов наравне с HTTP-прокси. При этом в отзывах App Store встречается жалоба, что ссылка socks5:// распознаётся как тип сервера, а подключиться не даёт. Это сообщение пользователя, а не подтверждённый разработчиком дефект.