translate /config/features/browser_dialer.md
parent
2e0f859692
commit
6189fb51c5
|
@ -0,0 +1,47 @@
|
|||
# Браузерный 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`.
|
Loading…
Reference in New Issue