Один ответ — вся информация
ZOND читает метаданные из HTTP-заголовков успешного ответа с подпиской. Это заголовки ответа сервера, а не запроса клиента. Если есть перенаправления, передайте поля в окончательном ответе. Все перечисленные поля необязательны.
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
profile-title: My Provider
x-zond-logo-url: https://cdn.provider.example/logo.png
x-zond-channel-url: https://t.me/provider_news
support-url: https://t.me/provider_support
profile-web-page-url: https://provider.example/
x-zond-provider-message: News and support are one click away.
subscription-userinfo: upload=1073741824; download=31138512896; total=107374182400; expire=1793836800
vless://11111111-1111-4111-8111-111111111111@server.example:443?encryption=none&security=tls&sni=server.example&type=tcp#GermanyЗамените адреса, идентификатор сервера и значения трафика своими данными. Адреса .example предназначены для документации.
Канал, поддержка и сайт
Передайте одну, две или все три ссылки. На главном экране и в управлении подпиской появятся соответствующие кнопки. Они работают независимо от сообщения; без ссылки кнопка не отображается.
| Заголовок ответа | В клиенте | Значение |
|---|---|---|
x-zond-channel-url | Канал ↗ | https://t.me/provider_news |
support-url | Поддержка ↗ | https://t.me/provider_support |
profile-web-page-url | Сайт ↗ | https://provider.example/ |
Только абсолютные HTTPS-адреса длиной до 2048 символов, без логина, пароля, пробелов и управляющих символов. Для Telegram используйте https://t.me/…, а не tg://. Фрагменты #contact разрешены. Регистр имён заголовков не имеет значения.
Некорректная необязательная ссылка скрывается и не мешает импорту серверов. Клиент не выводит адрес сайта из секретной ссылки подписки и открывает контакты только после нажатия пользователя.
Чтобы убрать кнопку, удалите заголовок и одноимённое поле в теле либо передайте пустой заголовок. После успешного обновления ссылка исчезнет. При неудачном обновлении прежние данные сохраняются.
Логотип провайдера
x-zond-logo-url: https://cdn.provider.example/logo.pngПередайте необязательный заголовок x-zond-logo-url с HTTPS-ссылкой на PNG. Логотип появится рядом с названием на главном экране, в списке подписок и в управлении подпиской. Рекомендуется квадратное изображение с прозрачным фоном.
До 128 КиБ, ширина и высота от 1 до 1024 пикселей. Нужен доменный HTTPS-адрес без логина, пароля и фрагмента; IP-адреса и localhost не принимаются. Поддерживается только PNG.
Картинка загружается отдельно, без HWID, cookies и авторизации подписки: до двух HTTPS-перенаправлений и 4 секунд на загрузку. Она сохраняется в зашифрованном профиле и доступна без интернета. Ошибка изображения не мешает импорту серверов; без логотипа остаётся только название. Чтобы удалить картинку, уберите заголовок и одноимённый комментарий при следующем обновлении.
Название и сообщение
profile-title задаёт название провайдера (до 80 символов). x-zond-provider-message передаёт короткое сообщение (до 240 символов). Оба поля принимают обычный текст или base64: с UTF-8-текстом в Base64. Для кириллицы в HTTP-заголовках используйте Base64.
profile-title: base64:0JzQvtC5INC/0YDQvtCy0LDQudC00LXRgA==
x-zond-provider-message: base64:0J3QvtCy0L7RgdGC0Lgg0LIg0LrQsNC90LDQu9C1Lg==Текст отображается без HTML и Markdown, управляющие символы удаляются. На главном экране сообщение занимает до двух строк; сохранённый текст доступен при наведении. Ссылки передавайте отдельными заголовками.
Трафик и срок действия
subscription-userinfo: upload=1073741824; download=31138512896; total=107374182400; expire=1793836800upload и download — переданные и полученные байты; их сумма даёт расход. total — положительный лимит в байтах. expire — Unix-время окончания подписки в секундах UTC. В примере использовано 30 ГиБ из 100 ГиБ, срок — до 05.11.2026 00:00 UTC.
На карточке подписки ZOND показывает полученные значения, срок и оставшиеся дни. Это снимок данных провайдера на момент последнего обновления подписки, а не непрерывный запрос к биллингу.
Метаданные внутри подписки
При ручном импорте можно использовать строки-комментарии перед конфигурацией. Они также распознаются внутри Base64-кодированного тела.
#profile-title: My Provider
#x-zond-provider-message: News and support in our channel.
#x-zond-channel-url: https://t.me/provider_news
#support-url: https://t.me/provider_support
#profile-web-page-url: https://provider.example/
vless://11111111-1111-4111-8111-111111111111@server.example:443?encryption=none&security=tls&sni=server.example&type=tcp#GermanyДля каждого поля HTTP-заголовок имеет приоритет над одноимённым комментарием. Пустой или некорректный заголовок не заменяется значением из тела. Отсутствующие поля очищаются при успешном обновлении; настройки других подписок не затрагиваются.
Форматы и обновления
Тело подписки: ссылки VLESS, VMess, Trojan и Shadowsocks по одной на строку, их Base64-представление или поддерживаемая конфигурация Xray JSON. Максимальный размер ответа и декодированного текста — 2 МиБ, количество ссылок — до 1000.
Clash YAML, произвольный sing-box JSON и плагины Shadowsocks не являются поддерживаемыми форматами импорта. Для VMess используйте alterId=0.
User-Agent: Happ/3.0.0 Zond/0.9.20Адрес подписки должен быть HTTPS. Клиент следует максимум четырём перенаправлениям. profile-update-url может предложить новый адрес обновления. При HTTP 429 и 503 учитывается Retry-After; прежняя подписка сохраняется.
Период обновления выбирает пользователь в клиенте. Контакты и сообщение хранятся отдельно для каждой подписки, меняются при её выборе и восстанавливаются вместе с историей.
Проверьте перед подключением пользователей
- Отдайте рабочую подписку и один контактный заголовок.
- Обновите подписку в ZOND 0.9.20 и проверьте кнопку под карточкой.
- Добавьте остальные ссылки, кириллицу в Base64 и метаданные трафика.
- Уберите заголовок: после успешного обновления кнопка должна исчезнуть.
- Проверьте отсутствие метаданных и ошибку сервера: импорт и сохранение прежних данных должны работать.