mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2025-01-20 17:51:40 +03:00
3b23ce3ea2
* add Russian lang support --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
47 lines
4.6 KiB
Markdown
47 lines
4.6 KiB
Markdown
# Браузерный Dialer
|
||
|
||
<Badge text="BETA" type="warning"/> <Badge text="v1.4.1+" type="warning"/>
|
||
|
||
## Предыстория
|
||
|
||
Основываясь на [идее, возникшей год назад](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.
|
||
~~(Хотя, кажется, это не обязательно)~~
|
||
|
||
## Конфигурация <Badge text="v1.4.1" type="warning"/>
|
||
|
||
Это экспериментальный процесс.
|
||
В настоящее время конфигурация выглядит следующим образом (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`. |