happ://add/
Открытие такого адреса на устройстве с установленным клиентом равносильно нажатию «добавить» с уже подставленной подпиской: к тексту вы не прикасаетесь, значит, потерять хвост или прилепить пробел негде.
Что вам прислали, видно по первым символам — ещё до того, как вставлять. https:// — подписка: адрес, за которым лежит список серверов, и он перечитывается заново. vless:// — описание одной точки, застывшее в момент копирования. happ:// — упакованный формат Хапп, и у него пять поколений: от crypt до crypt5. Поколение решает, откроется ли ссылка именно в вашей сборке приложения.
Подписка на https:// обновляется сама, vless:// — никогда: за одиночным описанием сервера источника обновлений нет.
Различаются они не содержимым, а упаковкой. Первое слово до двоеточия и есть тип упаковки: по нему клиент понимает, идти ли по адресу, распаковать текст или взять описание сервера как есть.
https:// — обновляемая запись. По адресу выложен перечень серверов, и он перечитывается заново при каждом обращении.vless:// — одноразовое описание. Одна точка, снятая в момент копирования; источника обновлений за ней не стоит.happ:// — упаковка клиента. Внутри лежит та же запись, но спрятанная от чтения; запись от этого становится не короче, а заметно длиннее.happ:// — не доступ. Они не приносят серверов, а отдают клиенту команду: завести запись, включить или выключить набор правил.Подписке нужен только адрес, одиночному описанию — все параметры сервера прямо внутри строки. Упаковка happ:// решает третью задачу, и она не про доставку: спрятать адрес подписки от того, кому её выдали. Короче запись при этом не становится — упакованная заметно длиннее исходной.
Предмет во всех трёх случаях один — доступ к серверам, меняется только обёртка. Разбирать запись на части и подправлять в ней что-то бессмысленно: клиент прочитает нужное сам, а правка руками сделает её негодной, часто без внятного сообщения.
Сверьте свою строку с образцом слева — этого хватает, чтобы понять, что вам прислали. Дальше по странице разобран только третий случай: у него есть поколения, и от них зависит, откроется ли запись именно в вашем приложении.
https:// обновляется сама, строка на vless:// — никогда: за одной точкой источника обновлений нет.Смотрите на первые символы записи — остальное на этом шаге не важно.
| Начало строки | Что это | Что с ней делать |
|---|---|---|
https:// | Адрес, за которым лежит перечень серверов. Обновляемая запись: состав точек берётся из ответа заново каждый раз. | Завести как подписку и больше не трогать — перечень подтягивается сам. |
vless:// | Описание одного сервера целиком в самой строке. Момент копирования зафиксирован навсегда, источника обновлений нет. | Завести как отдельную точку. Ждать от неё пополнения перечня не стоит — брать его неоткуда. |
happ://crypt … happ://crypt5 | Упакованная запись собственного формата клиента. Цифра — номер поколения упаковки, а не версия доступа; поколений пять, свежие ссылки выдают в последнем. | Завести так же, как обычную подписку. Если сборка отказалась её принять, дело в поколении упаковки — см. раздел ниже. |
happ://add/ | Служебный адрес: команда завести запись. Серверов сам по себе не содержит. | Открыть на устройстве, где стоит клиент. Приложение перехватит вызов и предложит добавить запись. |
happ://routing/onadd/ | Служебный адрес: подключить набор правил одновременно с заведением записи. | Открывать, только если правила действительно нужны: на состав списка серверов вызов не влияет. |
happ://routing/off | Служебный адрес: выключить работу по правилам и отправить весь поток в туннель. | Пользоваться осознанно: на состав перечня серверов вызов не влияет вовсе. |
happ:// — не отдельный протокол и не другой способ доступа, а та же подписка, упакованная так, чтобы её содержимое не увидел получатель. После добавления такой записи нельзя ни посмотреть параметры серверов, ни отредактировать их, ни передать дальше: адрес подписки спрятан внутри. Ради компактности так не делают — упакованная запись длиннее исходной, а ключи для распаковки вшиты в само приложение.
У упаковки есть поколения, и они прямо написаны в начале записи: от happ://crypt до happ://crypt5, всего пять. Свежие ссылки выдают в пятом, но и старые поколения приложение по-прежнему принимает. Цифра — это только способ упаковки записи: к объёму доступа, числу серверов и остатку срока она отношения не имеет, и читать её как «пятая версия лучше третьей» не нужно.
Одну и ту же ссылку разослали двоим: у одного она развернулась в список локаций, у другого нет. Дело не в отправителе, не в сети и не в доступе, а в разных поколениях упаковки — старая сборка нового поколения не знает.
Как это опознать: отказ виден сразу, в момент добавления, ещё до попытки подключиться, а на соседнем устройстве та же ссылка добавляется нормально. Бывает и тихий вариант: на старых сборках распаковка срывалась молча — запись будто добавилась, а серверов в ней ноль. Прилипший пробел, перенос строки и потерянный хвост от версии сборки не зависят и повторяются на всех устройствах одинаково.
Лечение одно — обновить приложение: свежая сборка знает и новое поколение, и все предыдущие. Просить у продавца ту же подписку открытым адресом на https:// бесполезно: упаковкой адрес как раз и прячут.
Эти три адреса начинаются так же, с happ://, но серверов не приносят: они дают клиенту команду.
Открытие такого адреса на устройстве с установленным клиентом равносильно нажатию «добавить» с уже подставленной подпиской: к тексту вы не прикасаетесь, значит, потерять хвост или прилепить пробел негде.
Подцепляет к заводимой записи готовый набор правил разбора потока. Полезен, когда правила присылают вместе с доступом; сам по себе ни одной серверной точки не добавляет и на их перечень не влияет.
Отменяет разбор потока по правилам и уводит в туннель всё подряд. Устройство ведёт себя иначе, но запись остаётся той же самой — к содержимому доступа вызов отношения не имеет.
Начало строки — не гарантия работоспособности
Первые символы отвечают на вопрос «что это за запись», а не «жива ли она». Правильно начинающаяся и распакованная подписка может вести туда, где серверов уже не выдают: короткий служебный ответ вместо списка точек означает, что адрес неверен либо доступ по нему закрыт.
Случаи лечатся по-разному: несовпадение поколений упаковки — обновлением приложения, пустой ответ по адресу — только со стороны того, кто выдал доступ.
Подписка может начинаться правильно, распаковаться без жалоб и всё равно не дать ни одной локации: список собирается из того, что выдали по адресу, а не из того, как запись упакована. Разбирать формат дальше бесполезно — вопрос уже не к нему. Проверяется подстановкой: заведите в тот же клиент заведомо рабочую подписку. Список развернулся — с разбором форматов у сборки всё в порядке, пустой была прежняя запись.
Это собственный формат записи у клиента: та же запись доступа, но упакованная так, чтобы её содержимое нельзя было прочесть, отредактировать и передать дальше. Заводится она как обычная подписка — распаковкой занимается само приложение, ключи для этого у него уже есть.
Цифра обозначает поколение упаковки, а всего их пять — от crypt до crypt5. Практическое различие ровно одно: от поколения зависит, разберёт ли запись конкретная сборка приложения.
К объёму доступа, числу серверов и остатку срока номер отношения не имеет — сравнивать записи по нему бессмысленно.
Если запись начинается с happ://, вероятнее всего разошлись поколения упаковки: сборки у вас разные, и ваша присланный вариант не разбирает.
Лечится это обновлением приложения — свежая сборка знает все поколения, старая новых не знает. Просить ту же запись обычным адресом на https:// бесполезно: упаковкой адрес подписки как раз и прячут от получателя.
Нет. Такая строка описывает ровно один сервер и остаётся неизменной: обновляться там нечему, источника за ней не стоит. Перечень точек даёт только адрес на https://.
Разница между застывшим снимком и живой подпиской разобрана на странице про подписку.
Не нужно и не стоит. Параметры вычитывает сам клиент, а любая правка руками ломает запись целиком — часто без внятного сообщения о причине.
Страница ответила на ваш вопрос?
Спасибо, учтём при следующей правке страницы.