Xray-docs-next/docs/ru/config/features/browser_dialer.md
Nikita Korotaev 3b23ce3ea2
add Russian lang (#529)
* add Russian lang support
---------

Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
2024-07-16 22:42:05 +08:00

4.6 KiB
Raw Blame History

Браузерный 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.