Перейти к содержимому

Поддерживаемые заголовки

При загрузке удалённой подписки Prizrak-Box считывает определённые HTTP-заголовки ответа от сервера. Эти заголовки позволяют провайдерам подписок управлять метаданными профиля, отображением трафика, автоматическим обновлением, логотипом, объявлениями и другим.

Заголовки нечувствительны к регистру. Неизвестные заголовки игнорируются без ошибок.


Profile-Title Remnawave

Отображаемое имя подписки в Prizrak-Box.

Пример заголовка Profile-Title

СвойствоЗначение
Типstring
КодировкаUTF-8 или Base64 (префикс base64:)

Пример:

Profile-Title: Моя VPN подписка
Profile-Title: base64:TW9yIFZQTiDQv9C+0LTQv9C40YHQutCw

Если Profile-Title отсутствует, приложение использует имя файла из заголовка Content-Disposition, затем генерирует имя вида Sub-2024-01-01.

Profile-Logo

URL изображения для логотипа подписки в приложении.

Пример заголовка Profile-Logo

СвойствоЗначение
Типstring (URL)
Поддерживаемые форматыPNG, SVG
Максимальный размер2 МБ
Разрешённые схемыhttp, https

Пример:

Profile-Logo: https://example.com/logo.png

Логотип загружается при получении подписки и кешируется локально. Пустой или недействительный URL удаляет кешированный логотип.

Content-Disposition Remnawave

Используется как запасной источник названия профиля, если Profile-Title отсутствует.

СвойствоЗначение
Типstring
Разбираемое полепараметр filename

Пример:

Content-Disposition: attachment; filename="my-vpn.yaml"

Значение filename (без расширения) становится названием профиля, если Profile-Title не задан.


Subscription-Userinfo Remnawave

Статистика использования трафика, отображаемая в карточке профиля.

Пример заголовка Subscription-Userinfo

СвойствоЗначение
Типstring (пары ключ=значение через точку с запятой)
Поляupload, download, total, expire
ЕдиницыБайты (для трафика), Unix timestamp (для expire)

Пример:

Subscription-Userinfo: upload=1073741824; download=5368709120; total=107374182400; expire=1893456000
ПолеОписание
uploadБайт выгружено
downloadБайт загружено
totalОбщая квота трафика в байтах
expireВремя истечения как Unix timestamp

Profile-Update-Interval Remnawave

Задаёт интервал автоматического обновления подписки.

СвойствоЗначение
Типinteger
ЕдиницаЧасы

Пример:

Profile-Update-Interval: 24

При наличии этого заголовка Prizrak-Box автоматически обновляет подписку с заданным интервалом в часах.


Profile-Web-Page-Url Remnawave

URL главной страницы или портала провайдера подписки.

Пример заголовка Profile-Web-Page-Url

СвойствоЗначение
Типstring (URL)

Пример:

Profile-Web-Page-Url: https://myvpn.example.com

Отображается в деталях профиля как кликабельная ссылка.

Support-Url Remnawave

URL службы поддержки или контактов (например, Telegram-канал, служба помощи).

Пример заголовка Support-Url

СвойствоЗначение
Типstring (URL)

Пример:

Support-Url: https://t.me/myvpn_support

Отображается рядом с профилем для обращения в поддержку.

Subscription-Renew-Url

Прямая ссылка на страницу продления/оплаты подписки.

Пример заголовка Subscription-Renew-Url

СвойствоЗначение
Типstring (URL)

Пример:

Subscription-Renew-Url: https://myvpn.example.com/renew?id=abc123

При наличии заголовка приложение показывает точку входа «Продлить подписку» в нескольких местах: в редакторе профиля, значком рядом с профилем в главном окне и в списке профилей, а также — когда сейчас пройден один из порогов Notify-Expire-Days/Notify-Traffic-Percent (см. ниже) — кнопкой на всю ширину карточки профиля. Без заголовка ничего из этого не показывается, профиль работает как обычно.


Эти заголовки настраивают клиентские напоминания о приближающемся или наступившем истечении подписки, а также о расходе трафика — показываются как нативные уведомления ОС, а пока порог пройден — ещё и кнопкой «Продлить подписку» под карточкой профиля (см. Subscription-Renew-Url выше).

Напоминание о подписке: уведомление и окно после нажатия

Notify-Expire-Days

Пороги «за сколько дней до истечения подписки напомнить».

Пример заголовка Notify-Expire-Days

СвойствоЗначение
Типstring (список целых чисел через запятую)
Диапазон1–365 (значения вне диапазона отбрасываются)

Пример:

Notify-Expire-Days: 1,3,7
Notify-Traffic-Percent

Пороги «на каком проценте использованного трафика напомнить».

Пример заголовка Notify-Traffic-Percent

СвойствоЗначение
Типstring (список целых чисел через запятую)
Диапазон1–100

Пример:

Notify-Traffic-Percent: 80,90,100
Notification-Subs-Expire

Упрощённый вариант для панелей, которые не хотят указывать конкретные дни (некоторые панели в стиле Happ отправляют только этот заголовок).

СвойствоЗначение
Типstring (boolean)
Значенияtrue

Пример:

Notification-Subs-Expire: true

Если значение true, а Notify-Expire-Days при этом отсутствует, приложение включает напоминания об истечении с зашитыми по умолчанию порогами 1, 3 и 7 дней.


Announce Remnawave

Текстовое объявление, отображаемое в приложении как баннер на карточке профиля.

Пример заголовка Announce

СвойствоЗначение
Типstring
Максимальная длина200 символов
КодировкаUTF-8 или Base64 (префикс base64:)

Примеры:

Announce: Техническое обслуживание в субботу 02:00–04:00 UTC
Announce: base64:0KLQtdGF0L3QuNGH0LXRgdC60L7QtSDQvtCx0YHQu9GD0LbQuNCy0LDQvdC40LU=
Announce-Url

URL, на который ссылается баннер объявления.

Пример заголовка Announce-Url

СвойствоЗначение
Типstring (URL)

Пример:

Announce-Url: https://status.myvpn.example.com

Нажатие на баннер объявления в приложении открывает этот URL.


Эти заголовки реализуют миграцию URL подписки — провайдеры могут перенести подписку на новый адрес без ручного обновления URL пользователями.

new-url

Указывает клиенту заменить весь URL подписки на новый.

СвойствоЗначение
Типstring (полный URL)
ПриоритетНаивысший — имеет приоритет над new-domain
ПереходыМаксимум 3 последовательные миграции

Пример:

new-url: https://new.example.com/subscription/abc123

После получения этого заголовка Prizrak-Box немедленно сохраняет новый URL и выполняет повторную загрузку с него. Исходный URL навсегда заменяется в профиле.

new-domain

Указывает клиенту заменить только хост URL подписки, сохраняя путь и строку запроса.

СвойствоЗначение
Типstring (только хост, без схемы и пути)
Пример значенияnew.example.com или new.example.com:8443

Пример:

new-domain: cdn.example.com

Если текущий URL подписки — https://old.example.com/sub/abc, результат будет https://cdn.example.com/sub/abc.

fallback-url

Альтернативный полный URL для использования, если основной URL подписки недоступен (не-2xx или ошибка соединения).

СвойствоЗначение
Типstring (полный URL)
СохранениеДа — записывается в профиль для будущих запросов

Пример:

fallback-url: https://backup.example.com/subscription/abc123

Prizrak-Box сначала пробует основной URL. При неудаче переключается на fallback-url. Значение резервного адреса обновляется (или очищается) при каждом успешном запросе.

fallback-domain

Альтернативный домен для подстановки в основной URL при его недоступности.

СвойствоЗначение
Типstring (только хост)
СохранениеДа — записывается в профиль

Пример:

fallback-domain: backup.example.com

Если основной URL — https://main.example.com/sub, этот резерв пробует https://backup.example.com/sub.


Управление интерфейсом мобильных версий Android и iOS

Заголовок раздела «Управление интерфейсом мобильных версий »

Следующие заголовки поддерживаются мобильными версиями Prizrak-Box (Android и iOS). Они позволяют провайдерам подписок управлять отдельными элементами пользовательского интерфейса мобильного клиента.

Все значения применяются при получении подписки и сохраняются в профиле до следующего обновления.

pxa-latency-dots

Управляет отображением задержки прокси в списке.

Пример заголовка pxa-latency-dots

СвойствоЗначение
Типinteger
Значения0 = числа задержки, 1 = точки задержки

Пример:

pxa-latency-dots: 1
pxa-simple-mode

Включает упрощённый режим интерфейса — на главном экране приложения только первую select прокси группу вашей конфигурации mihomo.

Пример заголовка pxa-simple-mode

СвойствоЗначение
Типinteger
Значения1 для включения

Пример:

pxa-simple-mode: 1
pxa-global-mode-mp

Показывает пункт меню Глобальный режим в левом нижнем углу карточки текущего профиля при запущенном подключении VPN.

Пример заголовка pxa-global-mode-mp

СвойствоЗначение
Типinteger
Значения1 для отображения

Пример:

pxa-global-mode-mp: 1
pxa-conns-view-mp

Показывает пункт меню Подключения в левом нижнем углу карточки текущего профиля при запущенном подключении VPN.

Пример заголовка pxa-conns-view-mp

СвойствоЗначение
Типinteger
Значения1 для отображения

Пример:

pxa-conns-view-mp: 1
pxa-rp-mp

Показывает пункт меню Rules Provider (RP) в левом нижнем углу карточки текущего профиля при запущенном подключении VPN.

Пример заголовка pxa-rp-mp

СвойствоЗначение
Типinteger
Значения1 для отображения

Пример:

pxa-rp-mp: 1
pxa-theme

Задаёт оформление клиента для Android, iPhone, iPad и Apple TV для профиля: цвет карточки профиля, цвет акцента, тему (светлая / тёмная) и фон главной.

СвойствоЗначение
Типstring (пары ключ=значение через точку с запятой)
КодировкаUTF-8 или Base64 (префикс base64:)
Применяетсяcard — всегда к карточке своего профиля; accent, mode, background — пока профиль активный
ПараметрЗначенияОписание
card#RRGGBB или autoЦвет карточки профиля: в колоде на главной, у свёрнутой карточки над активной, в открытом профиле, во вкладке «Профили» на iPad, на Apple TV. auto — из логотипа профиля
accent#RRGGBB, auto или userЦвет акцента: вкладки, кнопки, ссылки, фоны главной. auto — цвет карточки. user — как выбрал пользователь в «Цвете акцента»
modeauto, light, dark или userТема приложения. auto — как в системе, light — светлая, dark — тёмная. user — как выбрал пользователь в «Визуале»
backgroundtopography, clean, bigGhost, dotGrid, hem, signal, ghostPattern, cucumber, mushroomia или userФон главной. user — как выбрал пользователь

Все параметры необязательны. Параметр, которого нет в заголовке, берётся из настроек пользователя: по действию это то же самое, что user. Явный user говорит, что этот параметр профиль сознательно оставляет пользователю.

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

У card нет значения user: у пользователя нет своего выбора цвета карточки, она всегда берётся из логотипа, а это и есть auto.

Цвета:

  • Если card слишком светлый и белый текст на нём не читается, карточка затемняется, как сейчас со светлыми логотипами.
  • accent применяется как задан, так же как цвет из «Персонализации».

Полный пример:

pxa-theme: accent=#1fb5c9; card=#0f3d4a; mode=dark; background=mushroomia

Тот же заголовок в Base64:

pxa-theme: base64:YWNjZW50PSMxZmI1Yzk7IGNhcmQ9IzBmM2Q0YTsgbW9kZT1kYXJrOyBiYWNrZ3JvdW5kPW11c2hyb29taWE=

Только цвет акцента и цвет карточки:

pxa-theme: accent=#8e5be8; card=#3b2a6b

Тема и фон остаются теми, что выбрал пользователь.

Цвет карточки, акцент по карточке:

pxa-theme: card=#c9484f; accent=auto

Только цвет карточки, остальное явно за пользователем:

pxa-theme: card=#5a2d14; accent=user; mode=user; background=user

Тема как в системе:

pxa-theme: accent=#8e5be8; mode=auto

Тема следует системе Android или iOS, даже если пользователь выбрал в приложении светлую или тёмную.

Настройки → Визуал

  • Если у активного профиля есть этот заголовок, сверху появляется переключатель «Тема профиля» с подписью, что задаёт профиль: «Провайдер» задаёт акцент, карточку, тему, фон. Параметры со значением user в подписи не перечисляются.
  • Пункты, которые задаёт профиль (Тема, Цвет акцента, Фон главной), показываются с замком и недоступны для изменения.
  • В «Цвете акцента» сверху плашка «Цвет задан профилем «Провайдер»». Список и «Персонализация» приглушены, выбор в них сохраняется.

Как возвращаются настройки пользователя

  • Переключатель «Тема профиля» один на всё приложение. Если его выключить, возвращаются собственные настройки пользователя: акцент, тема, фон, а цвета карточек снова берутся из логотипов.
  • Настройки пользователя никогда не перезаписываются. Они же действуют при переключении на профиль без этого заголовка (или значения по умолчанию, если пользователь их не менял).
  • Если заголовок пропадёт при следующем обновлении подписки или в нём не останется ни одного верного параметра, тема профиля будет удалена.

Отличия от pxd-theme (десктоп):

  • Нет image, transparency, blur, dim: в мобильном клиенте нет фоновой картинки и прозрачных панелей. Вместо image — background со встроенными фонами.
  • Добавлено значение user.
  • accent=auto берёт цвет карточки, а не цвет фоновой картинки.

Управление интерфейсом десктопа Только десктоп

Заголовок раздела «Управление интерфейсом десктопа »

Следующие заголовки поддерживаются только десктопными версиями Prizrak-Box (Windows, macOS, Linux). Они позволяют провайдерам подписок управлять отдельными элементами интерфейса десктопного клиента.

Значение применяется при получении подписки и сохраняется в профиле до следующего обновления.

global-mode

Управляет тем, отображается ли переключатель режимов (Rule / Global / Direct) в левом боковом меню и в меню трея.

СвойствоЗначение
Типstring
Значенияfalse или 0 скрывают переключатель; любое другое значение (или отсутствие) показывает его

Примеры:

global-mode: false
global-mode: 0

Если значение равно false (без учёта регистра) или 0, весь переключатель режимов (Rule / Global / Direct) скрывается из левого бокового меню и из меню трея для этого профиля, если он является активным (primary, либо иначе выбранным). Любое другое значение или отсутствие заголовка оставляет переключатель видимым.

pxd-theme

Задаёт оформление десктопного клиента для профиля: фоновое изображение, прозрачность интерфейса, размытие под панелями, затемнение фона, режим (светлая / тёмная), цвет акцента, цвет карточки профиля и место, где показываются группы серверов.

СвойствоЗначение
Типstring (пары ключ=значение через точку с запятой)
КодировкаUTF-8 или Base64 (префикс base64:)
Применяетсяcard — всегда, к карточке своего профиля; остальные параметры — пока профиль активен (основной, либо иначе выбранный)
ПараметрЗначенияОписание
imageURL (http, https)Фоновое изображение
transparency5–85 (%)Прозрачность интерфейса
blur0–30 (px)Размытие под панелями
dim0–80 (%)Затемнение фона
modeauto, light, darkРежим оформления. auto — по фоновому изображению, без него — по системной теме
accent#RRGGBB или autoЦвет акцента. auto — подбирается по фоновому изображению
card#RRGGBB или autoЦвет карточки профиля. auto — берётся из логотипа профиля
proxiespage или homeГде показываются группы серверов: на экране «Серверы» (page) или на главной (home)

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

Регистр ключей и значений auto, light, dark, page, home не важен, пробелы вокруг = и ; игнорируются. Цвет записывается только как # и шесть шестнадцатеричных цифр.

Изображение:

  • Форматы: JPEG, PNG, WebP (рекомендуется JPEG) и SVG (в том числе сжатый, .svgz). SVG рисуется размером 2560 px по длинной стороне.
  • Рекомендуемый размер: около 1920×1080 и не больше ~2 МБ. Изображения больше 15 МБ не загружаются.
  • Приложение хранит последнее загруженное изображение и загружает его заново, когда тема приносит другую ссылку.
  • Если в ссылке есть символ ;, закодируйте его как %3B.

Цвет карточки (card):

  • Окрашивает карточку профиля: на экране «Профили», в панели профиля, в колоде на главной и на кнопке «Продлить подписку». Акцентом приложения не становится.
  • Если цвет настолько светлый, что белый текст на нём плохо читается, карточка затемняется.
  • Без card или при card=auto цвет берётся из логотипа профиля. Если у логотипа нет своего цвета (серый, чёрный, белый) или логотипа нет, профиль получает цвет из палитры приложения и сохраняет его.
  • card относится к профилю, а не к оформлению окна: он действует и при выключенном переключателе «Тема профиля».

Группы серверов (proxies):

ЗначениеЛевое менюГлавная после подключенияКнопка «Отключить» сверху
page или нет параметраесть «Серверы»большой круг, нажатие отключаетна всех экранах, кроме главной
homeнет «Серверов»группы и серверына всех экранах
  • До подключения главная выглядит одинаково при обоих значениях: большой круг подключения.
  • При home пользователя, который был на экране «Серверы», переводит на главную.
  • proxies не зависит от переключателя «Тема профиля». Если заголовок пропадёт при следующем обновлении подписки, группы вернутся на экран «Серверы».

Полный пример:

pxd-theme: image=https://cdn.example.com/theme/bg-1920x1080.jpg; transparency=30; blur=4; dim=20; mode=dark; accent=auto

Цвет карточки и группы на главной, оформление остаётся за пользователем:

pxd-theme: card=#3b2a6b; proxies=home

Только заданный цвет акцента и заданный режим, без изображения:

pxd-theme: mode=light; accent=#1f9e7a

В этом случае фон остаётся тем, что выбрал пользователь, а режим и цвет акцента задаёт профиль.

Тот же заголовок в Base64:

pxd-theme: base64:bW9kZT1saWdodDsgYWNjZW50PSMxZjllN2E=

Параметры оформления, заданные профилем (image, transparency, blur, dim, mode, accent), показываются в разделе Тема и недоступны для изменения. Пользователь может отключить тему профиля переключателем «Тема профиля» в том же разделе — тогда возвращаются его собственные настройки, а card и proxies продолжают действовать. При переключении на профиль без этого заголовка также возвращаются настройки пользователя (или значения по умолчанию, если он их не менял). Если заголовок пропадёт при следующем обновлении подписки, тема профиля будет удалена.


Шаблоны и роутинги, которые подписка предлагает профилю. Как они применяются — на странице Роутинг.

Prizrak-Routing

Шаблоны и роутинги профиля в любой комбинации: ссылки prizrak-box://template/…, prizrak-box://routing/…, prizrak-box://autorouting/…, happ:// и incy://, разделённые ;.

СвойствоЗначение
Типstring
КодировкаUTF-8 или Base64 (префикс base64:)
Разделитель;

Пример:

Prizrak-Routing: prizrak-box://template/onadd/https://example.com/t.yaml#fallback=https://mirror.example.com/t.yaml; happ://routing/add/eyJOYW1lIjoi…
  • Всё перечисленное добавляется в список шаблонов и роутингов, к профилю применяется первое.
  • Важнее заголовка Routing и ссылок роутинга в теле подписки: если он есть, они не смотрятся.
  • Применяется заново, только когда значение изменилось; до этого выбор пользователя сохраняется, если Prizrak-Routing-Override его разрешает.
  • Работает и для YAML-подписки: из YAML берутся только proxies:, к ним применяется шаблон или роутинг заголовка, а сам YAML остаётся вариантом «Шаблон подписки».
Prizrak-Routing-Override

Что подписка разрешает пользователю менять в профиле.

СвойствоЗначение
Типпары ключ=значение через ;
ruletrue (по умолчанию), false, subonly
keystrue, false

Пример:

Prizrak-Routing-Override: rule=subonly; keys=false
ruleПрименяется по умолчаниюМожно сменить
trueпервое из Prizrak-Routingна любой шаблон или роутинг
falseпервое из Prizrak-Routing, всегданельзя
subonlyYAML-подписка — её YAML («Шаблон подписки»); подписка с ключами — первое из Prizrak-Routingтолько на «Шаблон подписки» и пришедшее в Prizrak-Routing

keys — можно ли добавлять в профиль свои ключи. По умолчанию false, если подписка прислала Prizrak-Routing, иначе true. При keys=false добавленные раньше ключи хранятся, но не используются, и возвращаются, если подписка снова разрешит.

Routing

Ссылки роутингов Happ / INCY (happ://routing/…, incy://routing/…, incy://autorouting/…), по нескольку через ;. Применяется первый.

Пример:

Routing: happ://routing/onadd/eyJOYW1lIjoi…

Работает, только если нет Prizrak-Routing. Без обоих заголовков берутся ссылки роутинга в строках тела подписки.

Routing-Geo-Update-Interval

Как часто проверять геофайлы (geosite.dat, geoip.dat) роутинга Happ / INCY, который отправляет подписка.

СвойствоЗначение
Типinteger
ЕдиницаЧасы
Диапазон0–8760 (0 — не обновлять)

Пример:

Routing-Geo-Update-Interval: 24

Интервал действует, пока в меню роутинга выбрано «Как у провайдера»: выбор пользователя важнее. Если рядом с геофайлом лежит geosite.dat.sha256 / geoip.dat.sha256, файл скачивается заново только когда хэш изменился, а файл, не совпавший с хэшем, не принимается.

Template-Update-Interval

Заголовок ответа сервера шаблона, а не подписки: как часто обновлять YAML-шаблон, добавленный по адресу.

СвойствоЗначение
Типinteger
ЕдиницаЧасы
Диапазон0–8760 (0 — не обновлять)

Пример:

Template-Update-Interval: 24

update-interval в ссылке prizrak-box://template/… важнее заголовка, а заголовок важнее ключа prizrak-box: template-update-interval в самом шаблоне. Если не задано ничего — 24 часа.


Prizrak-Box поддерживает формат заголовков HWID Device Limit от RemnaWave. При использовании аппаратной аутентификации устройств задействованы две группы заголовков: заголовки, отправляемые клиентом с каждым запросом, и заголовки, возвращаемые сервером в ответе.

Когда в профиле активен HWID, Prizrak-Box автоматически добавляет следующие заголовки к каждому запросу подписки:

ЗаголовокОписание
X-HwidАппаратный отпечаток — уникальный идентификатор устройства
X-Device-OSНазвание операционной системы (например, Windows, Android, iOS, macOS)
X-Ver-OSВерсия ОС (например, 14, 11, 14.5)
X-Device-ModelМодель устройства (например, Pixel 8, iPhone 14 Pro Max)

Сервер возвращает следующие заголовки для передачи статуса HWID. Prizrak-Box читает и обрабатывает каждый из них.

X-Hwid-Active Remnawave

Всегда true, когда HWID Device Limit включён на стороне сервера. Prizrak-Box использует этот заголовок для пометки профиля как HWID-защищённого в интерфейсе.

Пример заголовка X-Hwid-Active

СвойствоЗначение
Типstring (булево)
Значенияtrue
X-Hwid-Active: true
X-Hwid-Not-Supported Remnawave

true, если HWID Device Limit включён на сервере, но клиент не отправил заголовок X-Hwid. Сигнализирует приложению, что устройство не идентифицировано и подписка может быть ограничена.

Пример заголовка X-Hwid-Not-Supported

СвойствоЗначение
Типstring (булево)
Значенияtrue
X-Hwid-Not-Supported: true
X-Hwid-Max-Devices-Reached Remnawave

true, если HWID Device Limit включён и пользователь достиг максимального числа разрешённых устройств. Приложение может показать предупреждение о том, что добавить новые устройства невозможно.

Пример заголовка X-Hwid-Max-Devices-Reached

СвойствоЗначение
Типstring (булево)
Значенияtrue
X-Hwid-Max-Devices-Reached: true