diff --git a/docs/ru/config/features/browser_dialer.md b/docs/ru/config/features/browser_dialer.md new file mode 100644 index 0000000..6848aaf --- /dev/null +++ b/docs/ru/config/features/browser_dialer.md @@ -0,0 +1,47 @@ +# Браузерный Dialer + + + +## Предыстория + +Основываясь на [идее, возникшей год назад](https://github.com/v2ray/discussion/issues/754#issuecomment-647934994), с помощью нативного JavaScript был реализован простой WSS-браузерный Dialer, который эмулирует TLS-отпечаток и поведенческие характеристики реального браузера. + +Однако WSS все еще имеет очевидные проблемы с ALPN, поэтому следующим шагом будет пересылка `HTTP/2` и `QUIC` через браузер. + +## Xray и JS + +Был создан очень простой и элегантный механизм связи: + +- Xray прослушивает адрес и порт A в качестве HTTP-сервера. + Браузер обращается к A и загружает JavaScript-код с веб-страницы. +- JavaScript-код устанавливает WebSocket-соединение с A. + После успешного установления соединения Xray передает соединение в канал. +- При необходимости установить соединение Xray получает доступное соединение из канала и отправляет целевой URL-адрес и необязательные ранние данные (early data). +- JavaScript-код сообщает Xray об успешном подключении к цели и продолжает использовать это соединение для двунаправленной передачи данных. + Соединение закрывается синхронно. +- Соединение закрывается после использования, но JavaScript-код гарантирует, что всегда есть доступные новые соединения. + +## Ранние данные (Early data) + +Механизм ранних данных был скорректирован в соответствии с потребностями браузера: + +- Заголовок ответа сервера содержит заголовок `Sec-WebSocket-Protocol` запроса, что также частично скрывает характеристики длины ответа рукопожатия WSS. +- Для кодирования ранних данных, отправляемых браузеру, используется `base64.RawURLEncoding`, а не `StdEncoding`. + Сервер обеспечивает совместимость. +- Кроме того, из-за [Xray-core#375](https://github.com/XTLS/Xray-core/pull/375) рекомендуется использовать `?ed=2048`. + В этом PR также увеличен `MaxHeaderBytes` на сервере до 4096. + ~~(Хотя, кажется, это не обязательно)~~ + +## Конфигурация + +Это экспериментальный процесс. +В настоящее время конфигурация выглядит следующим образом (Xray-core v1.4.1): + +- Подготовьте рабочую конфигурацию WSS. + Обратите внимание, что в поле `address` нужно указать доменное имя. + Если нужно указать IP-адрес, настройте DNS или добавьте запись в файл hosts. +- Если трафик браузера также проходит через Xray-core, обязательно настройте прямое подключение для этого домена, чтобы избежать зацикливания трафика. +- Установите переменную окружения, указывающую адрес и порт, который нужно прослушивать, например, `XRAY_BROWSER_DIALER = 127.0.0.1:8080`. +- Сначала запустите Xray-core, а затем откройте указанный адрес и порт в любом браузере. + Вы также можете открыть инструменты разработчика (F12) и посмотреть консоль и вкладку "Сеть". +- Браузеры ограничивают количество WebSocket-соединений, поэтому рекомендуется включить `Mux.Cool`. \ No newline at end of file