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 с именем сервера. Условный сокращённый пример:
{
"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 профиль, и он приходит только вместе с самой подпиской — добавить свой вручную нельзя.
Упомянутые темы
Похожие материалы
- JSON-конфигурация в Happ: как ядро принимает её 1:1
- Профили маршрутизации Happ: структура и импорт
- DNS в Happ: удалённый, локальный и Tunnel DNS
- Формат подписки Happ: ссылки, Base64 и JSON
- Удалённый DNS (Remote DNS)
- Профиль маршрутизации
- Вопросы о маршрутизации
- Импорт JSON-конфигурации в Happ: способ и проверка
Разделы по теме
Источники
- Документация Happ: маршрутизация — обращение 28 сентября 2026
- Документация Happ: примеры ссылок и параметры — обращение 28 сентября 2026
- Документация Xray-core: outbound-конфигурация — обращение 28 сентября 2026