Skip to content

Branding ru

Nemu-x edited this page Jul 19, 2026 · 1 revision

Брендинг (для операторов)

🌐 English · Русский · 中文

Ваша панель может забрендировать SlothClash под вас — название и логотип, акцентный цвет, ваши ссылки, счётчики трафика и устройств — просто добавив несколько HTTP-заголовков к ответу на подписку. Никаких отдельных сборок и своего приложения: обычный публичный SlothClash подхватит их при следующем обновлении подписки.

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

🚦 Переключатель

Без этого заголовка не применяется ничего:

X-Brand-Desktop-Enabled: true

Два жёстких правила:

  • Только HTTPS. На обычном http:// заголовки игнорируются полностью.
  • Убрали переключатель — брендинг исчез. При следующем обновлении клиент чистит кэш и возвращается к стоковому виду. Так брендинг и выключается — снимать все заголовки не нужно.

Значения можно оборачивать в кавычки (некоторые панели их добавляют) — клиент снимает один слой. Некорректные значения отбрасываются по отдельности: неправильный цвет никогда не обнулит ваши ссылки.

🎨 Идентичность

Заголовок Значение
X-Brand-Desktop-Name Название оператора, ≤ 64 символов. Показывается кнопкой в шапке приложения
X-Brand-Desktop-Tagline Короткая строка под названием, ≤ 128
X-Brand-Desktop-Accent-Color #rrggbb или #rgb. Перекрашивает весь интерфейс
X-Brand-Desktop-Logo-URL Картинка по https://. Кэшируется на диск (≤ 512 КБ), при отрисовке заново не качается
X-Brand-Desktop-Logo-Light-URL Вариант для светлой темы
X-Brand-Desktop-User-Display-Name Имя/логин пользователя, ≤ 96. UTF-8 работает (кириллица, эмодзи)
X-Brand-Desktop-Greeting Приветствие рядом с именем, ≤ 160

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

🔗 Ссылки

Открываются в системном браузере. Принимаются только https:// и tg://, остальное отбрасывается.

Заголовок Подпись в интерфейсе
X-Brand-Desktop-Cabinet-URL Кабинет
X-Brand-Desktop-Renew-URL Продлить
X-Brand-Desktop-Support-URL Поддержка
X-Brand-Desktop-Telegram-URL Telegram
X-Brand-Desktop-Bot-URL Бот
X-Brand-Desktop-Website-URL Сайт
X-Brand-Desktop-Status-URL Статус
X-Brand-Desktop-Help-URL Справка
X-Brand-Desktop-Privacy-URL Конфиденциальность
X-Brand-Desktop-Terms-URL Условия

Присылайте только то, что есть — пустые просто не рисуются. Кабинет и Продлить идут первыми, потому что ради них это окно обычно и открывают.

📊 Слоты устройств

X-Brand-Desktop-Devices-Used: 3
X-Brand-Desktop-Devices-Limit: 5

Показывается как 3 / 5 рядом с трафиком и сроком, а при достижении лимита подсвечивается — ровно там, где пользователь собирается вам написать. Пришлёте только Used — покажется просто число.

Стандартного заголовка для этого не существует (Subscription-Userinfo несёт только трафик и срок), поэтому поле живёт в нашем неймспейсе.

Трафик и срок берутся из стандартного Subscription-Userinfo — если вы его уже отдаёте, они появятся сами, брендинг для этого не нужен.

🚫 Скрытие интерфейса

X-Brand-Desktop-Hide-Global-Mode: true
X-Brand-Desktop-Hide-Proxy-Mode: true
X-Brand-Desktop-Hide-Local-Configs: true
X-Brand-Desktop-Hide-Advanced: true
  • Hide-Global-Mode — убирает опцию Global; сам переключатель режима остаётся и показывает Rule.
  • Hide-Proxy-Mode — убирает опцию Proxy, остаётся только TUN.
  • Hide-Local-Configs — прячет импорт локальных конфигов, остаётся импорт по ссылке.
  • Hide-Advanced — убирает страницу Advanced из бокового меню.

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

🛡️ Что брендинг может, а что нет

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

Брендинг никогда не сможет тронуть безопасность соединения, DNS, kill switch, механизм обновлений или спрятать страницы Settings и Logs. Эта граница проведена намеренно: пользователь всегда должен видеть, что делает приложение, и иметь возможность обратиться за помощью.

📋 Готовый пример

nginx на том, что отдаёт подписку:

location /sub/ {
    add_header X-Brand-Desktop-Enabled          "true" always;
    add_header X-Brand-Desktop-Name             "ExampleVPN" always;
    add_header X-Brand-Desktop-Accent-Color     "#3d7eff" always;
    add_header X-Brand-Desktop-Logo-URL         "https://example.com/logo.png" always;
    add_header X-Brand-Desktop-Cabinet-URL      "https://example.com/account" always;
    add_header X-Brand-Desktop-Renew-URL        "https://example.com/renew" always;
    add_header X-Brand-Desktop-Support-URL      "https://t.me/example_support" always;
    add_header X-Brand-Desktop-Devices-Used     "3" always;
    add_header X-Brand-Desktop-Devices-Limit    "5" always;
    add_header X-Brand-Desktop-Hide-Global-Mode "true" always;
}

Панели с настройкой произвольных заголовков ответа (Remnawave, PasarGuard, семейство Marzban) принимают те же пары ключ/значение — персональные вроде Devices-Used обычно подставляются из карточки пользователя.

✅ Как проверить

  1. Обновите подписку в приложении (или переподключитесь).
  2. В шапке приложения появится кнопка с вашим названием, слева от Добавить подписку.
  3. По клику открывается окно оператора со ссылками, трафиком, сроком и слотами устройств.

Если ничего не изменилось: подписка должна быть по https://, значение переключателя — ровно true, и заголовки должны пережить ваш CDN/прокси — некоторые вырезают неизвестные X--заголовки.

📱 Android (ClashFest)

Android-клиент использует ту же грамматику, но в отдельном неймспейсе — X-Brand-* с переключателем X-Branding-Enabled. Неймспейсы намеренно не пересекаются, чтобы брендинг одной платформы никогда не перекрашивал другую; чтобы забрендировать обе — присылайте оба набора.

Clone this wiki locally