Формат подписки
Как приложение понимает ответ сервера.
| Формат | Как определяется |
|---|---|
| Base64 со ссылками | Текст без ://. Обычный и URL-safe Base64 |
| Ссылки по строкам | Текст содержит :// |
| JSON Xray | Начинается с [ или {, есть outbounds с полем protocol. См. JSON |
| JSON sing-box | Первый элемент outbounds содержит type |
| Clash YAML | Есть строка proxies: |
| Base64 с JSON | После декодирования получился JSON |
Параметры в теле
Если заголовки недоступны, параметры можно передать строками прямо в теле. Заголовки важнее строк.
#profile-title: MyVPN
#profile-update-interval: 12
#announce: base64:0J/RgNC40LLQtdGC
#support-url: https://t.me/my_vpn_bot
vless://uuid@1.2.3.4:443?security=reality&...#Нидерланды
Заглушки и ошибки
- Серверы с адресом
0.0.0.0,127.0.0.1или портом ≤ 1 считаются заглушкой. Если других нет, название заглушки показывается пользователю как текст ошибки. Так удобно сообщать «Подписка истекла». - Заголовок
x-hwid-max-devices-reached: trueпоказывает сообщение о лимите устройств. - Коды 404 и 502: «Подписка не найдена». Другие коды вне 2xx: «Сервер подписки временно недоступен».
Если сервер подписки не отвечает, приложение повторит запрос через защищённый DNS (Cloudflare, Google, AdGuard). Серверы из кэша продолжают работать.