44netclientEN

4net · iOS

Remnawave → 4net iOS

Справочник заголовков ответа подписки: личный кабинет, анонсы, напоминания о продлении, оформление и видимость серверов.

Где настроить заголовки

В Remnawave откройте «Настройки подписки» → «Заголовки ответа» / Response headers. Добавьте каждое имя и значение отдельно. Они должны приходить в успешном HTTP-ответе с подпиской, включая Xray JSON, если он выдаётся отдельно. Это заголовки ответа, а не поля конфигурации ноды.

После сохранения обновите подписку в 4net. В примерах используются вымышленные адреса: замените их своими публичными страницами провайдера. Сохраните существующие заголовки, необходимые другим клиентам.

Подписка, кабинет и поддержка

HTTP response headers
profile-title: Example VPN
profile-web-page-url: https://provider.example/account
support-url: https://provider.example/help
profile-update-interval: 6
announce: Service updates are available in your account.
ЗаголовокЗначение и поведение
profile-titleНазвание подписки. Обычный текст или base64: с Base64 от UTF-8. Название, изменённое пользователем, сохраняется.
subscription-userinfoupload, download и total — в байтах; expire — Unix timestamp в секундах. expire=0 очищает сохранённый срок. Отсутствующая или некорректная дата сохраняет прежний срок.
profile-web-page-urlОсновная ссылка «Личный кабинет». Показывается выше поддержки провайдера.
provider-web-page-urlЗапасная ссылка кабинета, если profile-web-page-url отсутствует или некорректен. Если обе ссылки допустимы, используется основной заголовок.
support-urlСсылка «Поддержка провайдера», независимо от выбранного оформления.
announceСообщение провайдера: обычный текст или base64: UTF-8, до 4096 байт после декодирования. Поддерживает текст, Markdown, простую HTML-разметку и баннер. Полное сообщение открывается нажатием.
x-4net-announceОтдельный анонс для 4net. Имеет приоритет над announce. Если отсутствует, пустой или некорректный, используется announce. Формат и ограничения одинаковы.
profile-update-intervalЦелое число часов от 1 до 168. Обновление выполняется в активном приложении при отключённом VPN; пользователь может его выключить. После ошибки повтор — не раньше чем через 15 минут.
Пример без даты окончания
subscription-userinfo: upload=0; download=0; total=0; expire=0

Для подписки со сроком Remnawave должна вернуть реальный expire пользователя. Не вставляйте фиксированную дату в общий заголовок. Интервал обновления не является гарантированным фоновым таймером: включённый VPN или приложение в фоне откладывают автообновление.

Для кириллицы и другого не-ASCII текста передавайте UTF-8 как base64: и Base64-строку. В HTTP-ответе должно быть готовое значение, а не нераскрытый шаблон панели.

Оформленный анонс с баннером

Оставьте announce для общего сообщения и используйте x-4net-announce для оформленного анонса в 4net. Добавьте этот заголовок в Remnawave, а в поле значения вставьте пример ниже.

x-4net-announce
rwEncodeBase64:<img src="https://cdn.provider.example/banner-v1.jpg" alt="Новости сервиса">
<h2>Добро пожаловать в Example VPN 💙</h2>
<p><strong>Оставайтесь на связи.</strong> Выберите сервер и нажмите кнопку подключения.</p>
<p><a href="https://provider.example/news">Новости сервиса</a></p>

Замените адреса картинки и страницы своими. Remnawave преобразует rwEncodeBase64: в закодированный заголовок ответа. На других серверах подписок используйте base64: и Base64 от UTF-8 текста. Размер декодированного анонса — до 4096 байт.

Используйте заголовки, абзацы, жирный и курсивный текст, списки и ссылки. Поддерживается и Markdown. Первая подходящая картинка становится баннером над сообщением. Кнопки кабинета и поддержки задавайте отдельно через profile-web-page-url и support-url.

Markdown
![Новости сервиса](https://cdn.provider.example/banner-v1.jpg)
**Рады, что вы с нами!**
- Выберите сервер
- Нажмите кнопку подключения
[Помощь](https://provider.example/help)

Укажите прямую публичную HTTPS-ссылку на картинку без перенаправлений и входа. Поддерживаются PNG, JPEG и статический WebP: до 512 КиБ, 4096 пикселей по стороне и 4 мегапикселей. Подойдёт JPEG 1200×600. Чтобы сразу заменить баннер в кеше, измените имя файла или добавьте ?v=2. Скрипты, стили и встроенные страницы не используются.

Напоминание о продлении и инфоблок

HTTP response headers
sub-expire: 1
sub-expire-button-link: https://provider.example/renew
sub-info-text: Service news and account information
sub-info-color: blue
sub-info-button-text: Details
sub-info-button-link: https://provider.example/news
ЗаголовокЗначение и поведение
sub-expire1 или true включает напоминание. 0, false или отсутствие заголовка выключает его. Нужен корректный срок подписки.
sub-expire-button-linkАдрес кнопки «Продлить». Без допустимой ссылки остаётся текст срока, но кнопки нет.
sub-info-textИнформационный текст: обычный или base64: UTF-8, до 200 символов. 0 или отсутствие заголовка убирает блок после успешного обновления.
sub-info-colorblue, green или red. Неизвестное значение заменяется на blue. Цвет выделяет значок, текст остаётся читаемым.
sub-info-button-textПодпись кнопки, до 25 символов; обычный текст или base64: UTF-8.
sub-info-button-linkСсылка кнопки. Кнопка появляется, только если есть и текст, и допустимый адрес.

Напоминание появляется в последние 72 часа и после истечения срока из expire в subscription-userinfo. Период напоминания — три дня. После продления более чем на три дня и обновления подписки возвращается обычный инфоблок.

Активное напоминание заменяет только sub-info. Анонс провайдера, личный кабинет и поддержка остаются отдельными и доступными. Это сообщения внутри приложения, а не push-уведомления. Для этих полей в 4net не нужен Provider ID Happ.

Локальные уведомления об окончании

HTTP response headers
notification-subs-expire: 1

Включите уведомления значением 1 или true и передайте реальный expire через subscription-userinfo. 4net запросит у пользователя разрешение iOS. Напоминания приходят за три дня, за один день и в день окончания, в 10:00 по местному времени. Они без звука и значка-счётчика. Нажатие открывает подписку.

Чтобы отменить напоминания, передайте 0 или false либо удалите заголовок и обновите подписку. Новый срок после продления применяется при обновлении подписки. Этот параметр управляет системными уведомлениями независимо от sub-expire — напоминания внутри карточки.

Название, логотип и цвета провайдера

Для оформления используются x-4net-brand-name, x-4net-theme-light, x-4net-theme-dark и x-4net-logo-url. Название бренда отдельно от profile-title. Иконка установленного приложения и карточка App Store остаются 4net.

iOS также читает aw-icon-light и aw-icon-dark: Base64 самой картинки без префиксов base64: или data:. Лучше использовать небольшой прозрачный PNG, например 128×128. Он приходит вместе с подпиской и не требует отдельной загрузки картинки. Для оформления провайдера добавьте название бренда или палитру: одна иконка сама по себе не выбирает глобальное оформление.

Приоритет логотипа: корректная картинка текущей темы → картинка другой темы → HTTPS-ссылка логотипа. Единственное брендирование применяется автоматически среди обычных подписок. Если брендов несколько, автоматический режим следует подписке выбранного сервера; явный выбор пользователя важнее.

Значения палитры, ограничения картинок и полный пример брендирования →

Разные серверы на Wi-Fi и мобильной сети

В Remnawave откройте «Хосты» → нужный хост → «Примечание» (Remark). Добавьте маркер в отображаемое имя. Для группы Xray JSON с альтернативами используйте Remark виртуального хоста или группы, который становится именем видимой строки, а не внутренний outbound tag.

Пример названий хостов
Нидерланды only WiFi
Германия only Mobile
Швеция
  • only WiFi / only Wi-Fi: виден на Wi-Fi, скрыт на мобильной сети.
  • only Mobile: виден на мобильной сети, скрыт на Wi-Fi. Для LTE и 5G используется один маркер.
  • Регистр не важен. Без маркера или с обоими маркерами в одном имени строка видна в обеих сетях.
  • После изменения имён один раз обновите подписку. Дальше список фильтруется локально при смене сети; группы остаются одной строкой, сохранённые серверы не удаляются.
  • В приложении по умолчанию включено «По типу сети»; «Показать все серверы» отменяет фильтр. Выбранный, активный и ожидающий переключения сервер остаётся видимым. При неизвестном или неоднозначном типе сети показываются все строки.
Отключить фильтр для этой подписки
dont-use-filter: true

true или 1 отключает фильтр; false, 0 или отсутствие заголовка разрешает обычную фильтрацию. Допустимый HTTP-заголовок важнее отдельной директивы dont-use-filter в теле URI/Base64/YAML-подписки. Директива может начинаться с #. Это исключение не означает, что остальные заголовки работают как директивы тела.

Пресет маршрутизации и тип проверки задержки 4net

HTTP response headers
x-4net-routing: ru-bypass-v1
x-4net-ping: https

x-4net-routing: ru-bypass-v1 — включает существующий встроенный обход России и режим правил перед следующим подключением. Прежние приоритеты правил сохраняются. Это не полноценная конфигурация маршрутизации Xray и не RoscomVPN DEFAULT.

x-4net-ping: tcp / x-4net-ping: https — выбирает способ проверки задержки для этой подписки. TCP проверяет порт сервера и не подтверждает работу интернета. HTTPS проверяет запрос через прокси. Для транспортов только на QUIC, например Hysteria2, выбирайте HTTPS.

Эти два заголовка принимаются только по HTTPS и только с перечисленными значениями. Неизвестные значения игнорируются независимо. «Использовать настройки провайдера» по умолчанию включено для каждой подписки, но пользователь может его выключить. Личные настройки маршрутизации и задержки сохраняются; без поддерживаемого параметра провайдера 4net использует личную настройку.

Обновление подписки не меняет маршрутизацию активного VPN-сеанса. Пресет фиксируется для следующего сеанса; заголовки сами не запускают VPN. Результаты TCP и HTTPS хранятся отдельно.

HWID отправляет клиент

x-hwid — исходящий заголовок запроса подписки, а не заголовок ответа, который нужно добавить в Remnawave. 4net отправляет сохранённый идентификатор для адреса провайдера при первом запросе и каждом обновлении. Клиент распознаёт ошибки лимита устройств и не меняет идентификатор для обхода лимита. После переустановки приложения может потребоваться удалить прежнюю запись устройства у провайдера.

Импортёр обрабатывает ответные сигналы x-hwid-active, x-hwid-not-supported, x-hwid-max-devices-reached и x-hwid-limit. Ссылки кабинета, поддержки и продления автоматически не получают HWID подписки.

Границы поддержки и поведение обновления

Общие заголовки routing, routing-enable, dns-from-json-enable, ping-type, proxy-type и check-url-via-proxy в этом iOS-клиенте не реализованы. Используйте точные параметры x-4net-* выше. Среди других неподдерживаемых опций Happ — fallback-url, hide-settings, premium-url, providerid, subscription-pin и subscriptions-collapse. Их можно сохранить для других клиентов, но 4net не начнёт их применять.

Импорт поддерживаемых серверов Xray JSON не означает запуск Xray-core. DNS провайдера, произвольная маршрутизация, полноценная балансировка/observatory и Xray Mux не применяются. Встроенный XHTTP XMUX — отдельная поддерживаемая возможность.

После успешного обновления отсутствующие оформление, иконки, анонсы, инфоблоки, ссылки кабинета и параметры провайдера очищаются. Личный отказ от настроек провайдера и выбор автообновления сохраняются. Ошибка загрузки сохраняет прежние данные. Отсутствующие счётчики трафика и отсутствующая или некорректная дата оставляют прежние значения; явный expire=0 очищает дату.

Для кабинета, поддержки и сообщений допустимы HTTP и HTTPS с публичным именем хоста и стандартным портом (80 или 443). Не добавляйте логин, пароль, фрагмент или локальный адрес. Они открываются только по нажатию пользователя. Отсутствие или ошибка необязательного поля не требует менять рабочую конфигурацию сервера.

Как применить изменения

  1. Сохраните заголовки в общих настройках подписки или во внешнем скваде пользователя. Внешний сквад перезаписывает заголовки с совпадающими именами.
  2. Обновите подписку круглой стрелкой на карточке. Сообщение, ссылки и оформление обновятся вместе.
  3. Нажмите «Сообщение провайдера», чтобы открыть полный анонс и баннер. Настройки маршрутизации применяются при следующем подключении.