TSPU Xray VPN
Технические· 5 мин чтения

XHTTP в Xray: что это и зачем, если уже есть Reality

XHTTP — транспорт Xray, который упаковывает VPN-трафик в обычные HTTP-запросы. Режимы packet-up, stream-up и stream-one, связка с Reality и CDN, простым языком.

XHTTP в Xray: что это и зачем, если уже есть Reality

В ссылках и настройках VPN всё чаще встречается type=xhttp. Если вы читали, как работают VLESS и Reality, возникает логичный вопрос: зачем ещё что-то, если Reality и так маскирует трафик под обычный сайт? Коротко: Reality и XHTTP закрывают разные уровни проверки и не конкурируют, а дополняют друг друга. Разберёмся подробно.

Какую проблему решает XHTTP

Системы анализа трафика проверяют соединение на нескольких уровнях: сигнатуры, отпечаток TLS, активное зондирование и поведение. Подробно эти уровни разобраны в статье как DPI распознаёт VPN.

Reality отлично проходит первые три: рукопожатие неотличимо от настоящего, а зонд видит настоящий сайт. Но после рукопожатия VPN-соединение живёт не так, как сайт:

  • одно TCP-соединение держится часами;
  • через него идут гигабайты в обе стороны;
  • внутри видны характерные рисунки пакетов, например «TLS внутри TLS».

Обычный браузер ведёт себя иначе: много коротких HTTP-запросов, параллельные соединения, которые открываются и закрываются. XHTTP заставляет VPN-трафик выглядеть как такой браузерный трафик.

Как это устроено

XHTTP (раньше назывался SplitHTTP) — это транспорт, то есть способ переноски данных. Он упаковывает поток в обычные HTTP-запросы: данные к серверу уходят в POST-запросах, данные от сервера приходят в ответах. Снаружи это похоже на работу веб-приложения — например, загрузку файлов или долгую ленту обновлений.

Главная идея видна в старом названии: Split, то есть разделение. Отправка и получение данных могут идти разными HTTP-запросами и даже разными соединениями. Для системы анализа это уже не один подозрительный туннель, а несколько обычных на вид запросов, которые ещё нужно связать между собой.

Дополнительно XHTTP:

  • добавляет случайное заполнение в заголовки запросов (xPaddingBytes), чтобы размеры не повторялись;
  • умеет мультиплексировать несколько логических сессий в одно соединение и периодически менять соединения, как это делает браузер (механизм XMUX);
  • работает поверх HTTP/1.1, HTTP/2 и HTTP/3.

Три режима работы

Режим Как передаются данные Скорость Совместимость
packet-up к серверу — множеством коротких POST, от сервера — одним длинным ответом ниже проходит почти через любые веб-серверы и CDN
stream-up к серверу — одним длинным POST, от сервера — отдельным ответом выше нужны подходящие настройки прокси или CDN
stream-one туда и обратно — внутри одного запроса максимальная для прямого подключения, в том числе с Reality

Есть ещё auto: клиент выбирает режим сам. С Reality он выбирает stream-one, с TLS поверх HTTP/2 — stream-up, в остальных случаях — packet-up.

XHTTP + Reality

Связку можно описать так: Reality отвечает за рукопожатие, XHTTP — за всё, что после него.

  • Для внешнего наблюдателя соединение начинается как заход на популярный сайт — это работа Reality.
  • Дальше внутри идут данные, по структуре похожие на обычные HTTP/2-запросы, а не на сплошной поток туннеля, — это работа XHTTP.

В VLESS-ссылке это выглядит как type=xhttp&security=reality, плюс параметры path и mode. Что значит каждый параметр, разобрано в статье VLESS-ссылка: что значат параметры.

XHTTP через CDN

Второе важное свойство: XHTTP работает через CDN — сети доставки контента, через которые крупные сайты раздают данные. Для провайдера в таком случае соединение идёт к CDN, а не к VPN-серверу, а адрес сервера наружу вообще не виден.

Мощная, но продвинутая возможность — XHTTP умеет разнести отправку и получение по разным маршрутам. Например, отправлять данные через CDN, а получать напрямую по Reality с другим адресом. Сопоставить эти два потока внешнему наблюдателю очень сложно.

Минусы и ограничения

Честно о том, где XHTTP не идеален:

  • Скорость. В packet-up много накладных расходов на заголовки. stream-one с Reality по скорости близок к обычному TCP, но совместим не со всем.
  • Версии должны совпадать. Транспорт активно развивается, и старые клиенты могут не поддерживать новые параметры. Если после обновления сервера что-то перестало работать — обновите приложение.
  • Не все клиенты поддерживают. Нужен клиент на свежем ядре Xray или sing-box. Старые версии приложений XHTTP не знают.
  • От белых списков не спасает. Если адрес сервера не в разрешённом перечне, никакой транспорт не поможет. Исключение — CDN, чьи адреса есть в перечне, но это уже отдельная и нестабильная история.

XHTTP, WebSocket и gRPC — в чём разница

WebSocket gRPC XHTTP
Работа через CDN да да да
Совместим с Reality нет да да
Разделение отправки и получения нет нет да
Маскировка поведения слабая средняя сильная
HTTP/3 нет нет да

WebSocket и gRPC исторически использовались, чтобы пропускать VPN через CDN. XHTTP задуман как их замена: он умеет всё то же, но лучше маскируется.

Нужно ли вам разбираться в этом

Если вы пользуетесь готовым сервисом — нет. Выбор транспорта — задача сервиса: в подписке уже прописаны нужные параметры, а приложение применит их само. Ваша задача — держать клиент обновлённым и пользоваться подпиской, а не отдельными ссылками. Тогда при смене настроек на сервере всё подтянется автоматически.

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

XHTTP — это новый протокол вместо VLESS? Нет. VLESS — протокол, XHTTP — транспорт, Reality или TLS — слой защиты. Это три независимых уровня, которые комбинируются.

Что быстрее: VLESS + Reality по TCP или через XHTTP? Обычно TCP с Vision немного быстрее. XHTTP в режиме stream-one близок к нему, а packet-up медленнее, зато проходит там, где остальное не проходит.

Поддерживает ли XHTTP Happ? Актуальные версии клиентов на ядре Xray поддерживают XHTTP. Если ссылка с type=xhttp не подключается, в первую очередь обновите приложение.

Попробовать

TSPU Xray VPN построен на VLESS + Reality: готовая подписка для Happ, v2RayTun и Hiddify, 14 узлов, а для мобильных сетей с белыми списками — отдельный сервер в нашем приложении. Новым пользователям — 3 дня бесплатно.

Нужен VPN, который просто работает?

Reality-протокол, 14 узлов, без логов. 3 дня бесплатно, оплата в рублях.