Оформить подписку
Развилка · Тихая несовместимость

Программа понимает подписку, но серверов не получает — и не говорит почему

Есть один признак, по которому программа ломается молча: передаёт ли она вместе с запросом идентификатор устройства. Если у доступа включён лимит устройств, а программа этот идентификатор не шлёт, вместо перечня локаций ей приходит заглушка — одна запись с надписью App not supported, которая никуда не ведёт. Ошибки при этом нет, красного экрана нет, и человек честно считает, что «сервер лежит».

Так ломается не сама подписка и не приложение: они оба исправны. Ломается стык между ними, и увидеть его можно только зная про этот заголовок.

Что вообще происходит

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

  • Лимит устройств считается по регистрациям. Слот занимает сам факт того, что подписку на устройстве добавили, а не работающее соединение. Выключенный телефон слот держит.
  • Чтобы считать регистрации, устройства надо различать. Для этого программа передаёт вместе с запросом короткий идентификатор устройства — служебный заголовок x-hwid.
  • Программа без него неотличима от чужой. Выдающая сторона не может отнести запрос ни к одному слоту и отвечает заглушкой.
  • Заглушка выглядит как рабочий ответ. Формально это правильный конфиг с одной записью App not supported. Приложение честно рисует её в списке серверов.
  • Решает ровно один заголовок. Название программы, версия системы, модель телефона на выдачу не влияют — их можно менять сколько угодно, картина не изменится.

Почему это выглядит как «сервер не работает»

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

Дальше человек делает единственное, что кажется разумным: жмёт «подключиться», ничего не происходит, и он идёт искать причину в настройках, в сети, в операторе. Настоящая причина в это время лежит на два шага раньше — в выборе программы.

Как один и тот же адрес даёт два разных ответа

Слева — запрос программы за списком серверов. Вся развилка решается тем, приложен ли к запросу идентификатор устройства.

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

Живой пример: Clash Verge Rev

Clash Verge Rev — самый известный случай этой поломки. Формат подписки он понимает полностью: запрашивает готовые настройки под своё ядро и разбирает их без единой жалобы. Идентификатор устройства он при этом не передаёт, поэтому при включённом лимите получает ровно ту самую заглушку.

Ждать поддержки не от кого: запрос на передачу идентификатора в самом проекте закрыт с пометкой «не планируется». Это не временная недоработка и не вопрос версии — решение авторов.

Замены есть, и они того же класса. Koala Clash — форк ровно этого Clash Verge Rev: тот же вид, то же ядро, привычки менять не придётся, а идентификатор он передаёт. Второй вариант — FlClashX. Оба берут ту же ссылку-подписку без каких-либо правок на стороне выдачи.

Кто идентификатор передаёт

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

  • Happ — передаёт, список серверов приходит полный.
  • V2RayNG — передаёт, ведёт себя так же.
  • Clash Verge Rev — не передаёт, получает заглушку.
  • Koala Clash и FlClashX — передают, это и есть повод брать их вместо Clash Verge Rev.
  • Всё остальное — проверять подстановкой: минута на добавление адреса и взгляд на список локаций.

Ни один симптом не указывает на программу

Со стороны эта поломка неотличима от десятка других. Список локаций пуст или в нём одна нерабочая строка; кнопка подключения нажимается и ничего не даёт; интернет идёт мимо. Ровно так же выглядят кончившийся срок, исчерпанный лимит устройств и просто неверно вставленный адрес.

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

Что пробуют сделать и почему это не помогает

Шесть самых частых попыток. Все они логичны, и ни одна не трогает настоящую причину.

Что делаютЧто при этом происходитПомогает?
Переустанавливают программуПрограмма ставится заново и снова не передаёт идентификатор устройства — она такая по устройству, а не по состоянию.Нет. Хуже: лишняя регистрация может стоить ещё одного слота.
Обновляют программу до последней версииПередача идентификатора не появляется от обновления, если авторы её не делали.Нет
Просят у продавца новый адрес подпискиНовый адрес ведёт себя точно так же: развилка решается на стороне программы, а не адреса.Нет
Меняют локацию или протокол в настройкахМенять нечего: настоящих локаций в списке нет, есть одна запись-заглушка.Нет
Пробуют тот же адрес в другой программеЕсли вторая программа идентификатор передаёт, список локаций разворачивается целиком.Да — и это диагноз. Приём разобран на странице про второй клиент
Ставят форк того же приложенияKoala Clash и FlClashX сохраняют вид и ядро Clash Verge Rev, но идентификатор передают.Да

Три признака, что дело именно в этом

Все три видны за минуту и не требуют ни доступа к настройкам выдачи, ни разговора с продавцом.

Признак 1

Ровно один сервер в списке

Не пусто и не десяток локаций, а именно одна запись — часто с прямой надписью App not supported. Настоящий перечень локаций так не выглядит никогда.

Признак 2

Тот же адрес где-то работает

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

Признак 3

Ошибки нет вообще

Программа не ругается, не показывает красного и не пишет про подписку. Она уверена, что всё получила. Молчание тут и есть симптом.

Что из этого следует при выборе

Первым делом смотреть надо не на интерфейс, а на то, доходит ли до вас список локаций. Красивая программа, которая получает заглушку, бесполезна; аскетичная, которая получает перечень серверов, работает.

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

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

Программа исправна, а серверов нет

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

Получить доступ

Частые вопросы

Что означает App not supported в списке серверов?

Что программа не передала идентификатор устройства, а у доступа включён лимит устройств. Вместо перечня локаций ей пришла одна запись-заглушка с этой надписью, и подключиться по ней нельзя.

Подписка при этом живая, а приложение исправно. Не сходится только стык между ними.

Почему Clash Verge Rev не видит серверы?

Он не передаёт идентификатор устройства. Формат подписки он понимает целиком, но при включённом лимите устройств получает заглушку вместо списка локаций.

Правкой настроек это не лечится: запрос на передачу идентификатора в самом проекте закрыт как «не планируется». Рабочая замена того же вида и на том же ядре — Koala Clash, ещё один вариант — FlClashX.

Поможет ли смена версии или переустановка?

Нет. Передача идентификатора — свойство самой программы, а не её состояния: переустановленная и обновлённая копия ведёт себя так же.

Переустановка ещё и может стоить лишнего слота устройств: для выдающей стороны новая установка нередко выглядит новым устройством.

Как понять, дело в программе или в подписке?

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

Это самая быстрая проверка из всех и единственная, которая ничего не ломает.

Лимит считается по подключениям или по устройствам?

По устройствам. Слот занимает сам факт того, что подписку на устройстве добавили: выключенный аппарат место за собой держит, а «не выходить в сеть одновременно» ничего не экономит.

Формулировка «столько-то одновременных подключений» ходит по форумам и неверна.