Happ VPN

JSON-конфигурации и прямая передача в Xray-core

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
, обновлено
Версия гайда:
1.0

Коротко

JSON-конфигурация — это полное описание подключения для ядра Xray-core: разделы inbounds, outbounds и dns вместо короткой ссылки. Happ передаёт такую конфигурацию ядру без изменений, поэтому обычные правила маршрутизации приложения к ней не применяются напрямую.

В отличие от ссылки вроде vless://, где Happ сам собирает конфигурацию из параметров, JSON-объект провайдер готовит целиком заранее — вплоть до нескольких исходящих подключений и собственных правил внутри самого файла. Приложение передаёт его ядру Xray-core в неизменном виде: это называется передачей 1:1. Полного игнорирования настроек Happ при этом не происходит — выбор geo-файлов для GeoIP и GeoSite и параметры удалённого DNS всё ещё берутся из активного профиля маршрутизации. JSON-конфигурации встречаются как отдельные серверы и как содержимое JSON-подписки — массива таких объектов с более строгими ограничениями по маршрутизации.

Что такое JSON-конфигурация

JSON-конфигурация — это файл в формате конфигурации Xray-core: с разделами dns, inbounds и outbounds, а иногда и служебным блоком meta с именем сервера. Условный сокращённый пример:

JSON
{
  "dns": { "servers": ["https://example.org/dns-query"] },
  "inbounds": [{ "port": 10808, "protocol": "socks" }],
  "outbounds": [{ "protocol": "vless", "settings": {} }],
  "remarks": "Example",
  "meta": { "serverDescription": "Example server" }
}

В отличие от ссылки протокола, где Happ сам заполняет поля по параметрам из URL, здесь провайдер уже собрал итоговый файл — со всеми исходящими подключениями, DNS-настройками и внутренними правилами.

Передача 1:1 в ядро

Happ не разбирает JSON-конфигурацию на части и не подставляет в неё свои значения: файл целиком передаётся ядру Xray-core в том виде, в котором его прислал провайдер. Такой принцип называют передачей 1:1.

Это не значит, что приложение полностью устраняется от управления. Два параметра всё ещё берутся из активного профиля маршрутизации:

  • какие файлы GeoIP и GeoSite использует ядро;
  • настройки удалённого DNS — в интерфейсе для JSON-конфигураций эти поля переименованы в Tunnel DNS и работают локально, не изменяя сам файл провайдера.

JSON-подписка — массив конфигураций

Если подписка целиком состоит из JSON-объектов, а не ссылок, на неё распространяются дополнительные правила: у такой подписки может быть 0 или ровно 1 профиль маршрутизации, и добавить его вручную, скопировать из другой подписки или отредактировать нельзя — он приходит только вместе с самой подпиской от провайдера. Общий обзор форматов подписки — на странице формат подписки, а устройство профиля маршрутизации — на странице профили маршрутизации.

Когда провайдеры используют JSON вместо ссылки

Обычная ссылка протокола описывает одно исходящее подключение с ограниченным набором параметров. JSON-конфигурация позволяет провайдеру задать более сложную схему — например несколько исходящих подключений с переключением между ними или собственные правила DNS внутри одного файла, которые не выразить синтаксисом отдельной ссылки.

Для рядового пользователя разница на этом этапе не в удобстве: добавление JSON-конфигурации в Happ работает так же, как и любой другой конфигурации — вручную, ссылкой или подпиской. Если такая конфигурация повреждена, приложение сообщает об этом ошибкой «Невалидная конфигурация JSON».

Главное

  • JSON-конфигурация описывает подключение целиком — с разделами inbounds, outbounds и dns, а не короткой строкой параметров.
  • Happ передаёt JSON-конфигурацию ядру Xray-core без изменений — это называется передачей 1:1.
  • Правила маршрутизации Happ к содержимому такого JSON-объекта напрямую не применяются, поэтому провайдер задаёт их сам внутри файла.
  • Выбор geo-файлов и параметры удалённого DNS для JSON-конфигурации Happ всё равно берёт из активного профиля маршрутизации.
  • JSON-подписка — это массив таких конфигураций; для неё допускается не больше одного профиля маршрутизации, и его нельзя изменить вручную.

Частые вопросы

Чем JSON-конфигурация отличается от обычной ссылки протокола?

Ссылка вроде vless:// — это набор параметров, из которых Happ сам собирает конфигурацию для ядра: протокол, адрес, порт, тип транспорта. JSON-конфигурация — уже готовый результат такой сборки, только сделанный провайдером заранее и в куда более полном виде: с разделами dns, inbounds и outbounds. Из-за этого в JSON можно описать то, что в короткой ссылке одним протоколом не выразить, например несколько исходящих подключений сразу.

Почему маршрутизация Happ не работает с JSON-конфигурацией?

Потому что JSON-конфигурация уже содержит собственные правила маршрутизации внутри себя, заданные провайдером на этапе её создания. Если бы Happ поверх накладывал ещё и свои правила, это привело бы к рассинхронизации: часть трафика обрабатывалась бы дважды разными наборами правил с непредсказуемым результатом. Поэтому приложение передаёт такую конфигурацию ядру как есть, а собственную маршрутизацию применяет только к обычным серверам и подпискам.

Что тогда вообще управляется приложением в JSON-конфигурации?

Два параметра остаются под управлением Happ даже для JSON-конфигураций: выбор файлов GeoIP и GeoSite, которые ядро использует при обработке правил внутри самого JSON, и настройки удалённого DNS из активного профиля маршрутизации, переименованные в интерфейсе в Tunnel DNS. Оба параметра применяются локально при построении туннеля и не изменяют содержимое JSON-файла провайдера.

Можно ли отредактировать JSON-конфигурацию сервера внутри Happ?

Обычно её можно посмотреть и заменить целиком новой версией, но не редактировать по полям, как параметры обычной ссылки: интерфейс Happ не строит форму под произвольную структуру JSON. Если нужно изменить конкретное значение — например адрес сервера, — проще получить у провайдера обновлённый файл или отредактировать его в текстовом виде вручную и добавить заново.

Почему у JSON-подписки только один профиль маршрутизации?

Это ограничение защищает от рассинхронизации между приложением и метаданными провайдера: раз JSON-конфигурации уже содержат свою логику, отдельный произвольный набор профилей маршрутизации усложнил бы картину без реальной пользы. Поэтому у JSON-подписки может быть 0 или ровно 1 профиль, и он приходит только вместе с самой подпиской — добавить свой вручную нельзя.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ: маршрутизация — обращение 28 сентября 2026
  2. Документация Happ: примеры ссылок и параметры — обращение 28 сентября 2026
  3. Документация Xray-core: outbound-конфигурация — обращение 28 сентября 2026