mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2025-01-20 09:41:41 +03:00
3b23ce3ea2
* add Russian lang support --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
4.6 KiB
4.6 KiB
Браузерный Dialer
Предыстория
Основываясь на идее, возникшей год назад, с помощью нативного 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 рекомендуется использовать
?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
.