Sligate для вашего сервиса
Sligate работает с подпиской как есть — ничего настраивать не обязательно. Одно правило в панели, кнопка в боте и, если нужно, зашифрованные ссылки: подписчики получат в клиенте ровно то, что вы настроили.
Одно правило в Remnawave
Без правила панель отдаёт клиенту список ссылок. Sligate подключится и так, но балансеры, маршрутизация и настройки Hysteria из ваших шаблонов до него не дойдут.
- Заголовок
user-agent- Оператор
- REGEX
- Значение
^Sligate/без учёта регистра- Тип ответа
- XRAY_JSON
Поставьте правило выше «Fallback Base64». Клиент представляется как Sligate/<версия> (<система>), например Sligate/0.1.1 (Windows), и передаёт заголовки лимита устройств: x-hwid, x-device-os, x-ver-os, x-device-model.
Без правила
- список ссылок
- автовыбор и «РФ напрямую» от Sligate
С правилом
- ваши шаблоны XRAY_JSON
- балансеры, маршрутизация, Hysteria
Кнопка «Добавить в Sligate»
Telegram разрешает в кнопках бота только https-ссылки. Поэтому кнопка ведёт на страницу sligate.cc/add/, а она открывает приложение с готовой подпиской.
https://sligate.cc/add/#<ссылка подписки в URL-кодировке>
from urllib.parse import quote url = "https://sligate.cc/add/#" + quote(sub_url, safe="") InlineKeyboardButton("Добавить в Sligate", url=url)
Часть после # браузер не отправляет на сервер: ссылка подписки остаётся между пользователем и его компьютером. Вместо обычной ссылки можно передать зашифрованную sligate://crypt1/… — так же в URL-кодировке. Перед добавлением приложение всегда спрашивает подтверждение.
Зашифрованные ссылки
Чтобы адрес подписки не был виден в кнопке бота и в пересланных сообщениях, выдавайте ссылку sligate://crypt1/…. Открыть её может только Sligate: приложение само расшифрует адрес и не покажет его в интерфейсе.
Шифрование идёт прямо в браузере — ссылка подписки никуда не отправляется. Каждый раз получается новая строка: это нормально, открываются все одинаково. Честно о защите: ссылка скрыта от людей и посторонних программ, но не от того, кто разберёт само приложение, — так устроены зашифрованные ссылки и в других клиентах.
# pip install cryptography; encrypt.py — по ссылке ниже from urllib.parse import quote from encrypt import sligate_link link = sligate_link(sub_url) # sligate://crypt1/… url = "https://sligate.cc/add/#" + quote(link, safe="") InlineKeyboardButton("Добавить в Sligate", url=url)
Готовые функции: encrypt.py (Python, sligate_link) и encrypt.mjs (браузер и Node 20+, sligateLink). Формат не меняйте: приложение проверяет его строго.
Что Sligate понимает в подписке
Настройки приходят заголовками ответа подписки или строками #ключ: значение в начале списка ссылок — совместимо с форматом Happ. Если ключ есть и там и там, побеждает заголовок. Нелатинский текст в заголовке передавайте как base64:<данные>.
profile-titleНазвание подписки в приложении. Со второй строки (в base64:) можно передать описание.
profile-descriptionОписание под названием подписки.
subscription-userinfoТрафик и срок: upload=…; download=…; total=…; expire=… (expire — секунды Unix). Значение 0 — не показывать трафик.
profile-update-intervalКак часто обновлять подписку, в часах.
announceannounce-urlОбъявление в окне приложения и ссылка, которую оно открывает.
support-urlsupport-emailКнопка «Поддержка сервиса».
profile-web-page-urlСайт или личный кабинет сервиса.
sub-expiresub-expire-button-linksub-expire: 1 — когда до конца срока остаётся три дня или меньше, приложение показывает баннер «Продлить» с вашей ссылкой.
sub-info-textsub-info-colorsub-info-button-textsub-info-button-linkЦветной блок с текстом и кнопкой. Цвет — blue, green или red; sub-info-text: 0 убирает блок.
routingrouting-enableПрофиль маршрутизации в формате Happ (happ://routing/add/…) для локаций из списка ссылок. routing-enable: 0 выключает его.
serverDescriptionПодпись под названием локации: ?serverDescription=<base64> в конце имени ссылки или meta.serverDescription в конфиге XRAY_JSON.
- User-Agent
Sligate/<версия> (<система>); - заголовки лимита устройств Remnawave:
x-hwid(постоянный для устройства),x-device-os,x-ver-os,x-device-model.