@ -14,14 +14,14 @@ However, there are many drawbacks:
* The user has to launch a browser next to the Xray client just for opening the proxy connection.
* The user has to launch a browser next to the Xray client just for opening the proxy connection.
* The browser dialer must not be tunneled through the proxy itself, otherwise there is a loop. TUN users should be cautious.
* The browser dialer must not be tunneled through the proxy itself, otherwise there is a loop. TUN users should be cautious.
* The browser can only speak standard HTTP, which means that only [WebSocket](../../transports/websocket.md) and [SplitHTTP](../../transports/splithttp.md) are supported
* The browser can only speak standard HTTP, which means that only [WebSocket](../../transports/websocket.md) and [XHTTP](../../transports/splithttp.md) are supported
* [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) needs to be considered when making requests from one website (`localhost:8080`) to another (`proxy.example.com:443`)
* [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) needs to be considered when making requests from one website (`localhost:8080`) to another (`proxy.example.com:443`)
* The browser tunnels your traffic using JavaScript, so there is a significant performance penalty (or, battery drain)
* The browser tunnels your traffic using JavaScript, so there is a significant performance penalty (or, battery drain)
* The configuration to be used with browser dialer cannot use custom SNI or host headers. `SNI == host == address`. Custom HTTP headers and `tlsSettings` are ignored entirely.
* The configuration to be used with browser dialer cannot use custom SNI or host headers. `SNI == host == address`. Custom HTTP headers and `tlsSettings` are ignored entirely.
## Configuration
## Configuration
1. Prepare a usable WebSocket or SplitHTTP configuration. Be aware of the above restrictions.
1. Prepare a usable WebSocket or XHTTP configuration. Be aware of the above restrictions.
2. Launch Xray with `XRAY_BROWSER_DIALER=127.0.0.1:8080`. On Windows, this can be done as `set XRAY_BROWSER_DIALER=...` and then launching the core from the console, on Linux the core can be launched as `XRAY_BROWSER_DIALER=127.0.0.1:8080 ./xray -c config.json`.
2. Launch Xray with `XRAY_BROWSER_DIALER=127.0.0.1:8080`. On Windows, this can be done as `set XRAY_BROWSER_DIALER=...` and then launching the core from the console, on Linux the core can be launched as `XRAY_BROWSER_DIALER=127.0.0.1:8080 ./xray -c config.json`.
3. Open a browser that is not tunneled through the proxy, or modify the config's routing such that the Xray server's domain goes to `freedom` directly from the client. Browse to `localhost:8080`, and open the developer console with `F12` to monitor for errors.
3. Open a browser that is not tunneled through the proxy, or modify the config's routing such that the Xray server's domain goes to `freedom` directly from the client. Browse to `localhost:8080`, and open the developer console with `F12` to monitor for errors.
4. For better performance and to bypass arbitrary connection limits enforced by the browser, it is recommended to enable `Mux.Cool`.
4. For better performance and to bypass arbitrary connection limits enforced by the browser, it is recommended to enable `Mux.Cool`.
@ -44,10 +44,10 @@ According to the browser's needs, the early data mechanism has been adjusted as
- The encoding used for early data for browsers is `base64.RawURLEncoding` instead of `StdEncoding`, and the server has made it compatible.
- The encoding used for early data for browsers is `base64.RawURLEncoding` instead of `StdEncoding`, and the server has made it compatible.
- In addition, due to [Xray-core#375](https://github.com/XTLS/Xray-core/pull/375) recommendations for `?ed=2048`, this PR also increased server `MaxHeaderBytes` by 4096. ~~(Although it seems like it would work without modification.)~~
- In addition, due to [Xray-core#375](https://github.com/XTLS/Xray-core/pull/375) recommendations for `?ed=2048`, this PR also increased server `MaxHeaderBytes` by 4096. ~~(Although it seems like it would work without modification.)~~
## SplitHTTP
## XHTTP
<Badgetext="v1.8.19+"type="warning"/>
<Badgetext="v1.8.19+"type="warning"/>
SplitHTTP supports QUIC, but the browser's own QUIC stack may be used as well. In Chrome this can be done through `chrome://flags`, in other browsers it may already be enabled or need a different flag.
XHTTP supports QUIC, but the browser's own QUIC stack may be used as well. In Chrome this can be done through `chrome://flags`, in other browsers it may already be enabled or need a different flag.
In general, `tlsSettings` are completely ignored when Browser Dialer is used. Xray does not have any control over which HTTP version the browser selects.
In general, `tlsSettings` are completely ignored when Browser Dialer is used. Xray does not have any control over which HTTP version the browser selects.
@ -14,14 +14,14 @@ Xray обычно использует uTLS для имитации поведе
* Пользователь должен запускать браузер рядом с клиентом Xray только для открытия прокси-соединения.
* Пользователь должен запускать браузер рядом с клиентом Xray только для открытия прокси-соединения.
* Browser Dialer не должен быть туннелирован через сам прокси, иначе возникнет петля. Пользователи TUN должны быть осторожны.
* Browser Dialer не должен быть туннелирован через сам прокси, иначе возникнет петля. Пользователи TUN должны быть осторожны.
* Браузер может работать только со стандартным HTTP, что означает, что поддерживаются только [WebSocket](../../transports/websocket.md) и [SplitHTTP](../../transports/splithttp.md).
* Браузер может работать только со стандартным HTTP, что означает, что поддерживаются только [WebSocket](../../transports/websocket.md) и [XHTTP](../../transports/splithttp.md).
* [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) необходимо учитывать при выполнении запросов с одного веб-сайта (`localhost:8080`) на другой (`proxy.example.com:443`).
* [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) необходимо учитывать при выполнении запросов с одного веб-сайта (`localhost:8080`) на другой (`proxy.example.com:443`).
* Браузер туннелирует ваш трафик с помощью JavaScript, поэтому наблюдается значительное снижение производительности (или разрядка аккумулятора).
* Браузер туннелирует ваш трафик с помощью JavaScript, поэтому наблюдается значительное снижение производительности (или разрядка аккумулятора).
* Конфигурация, используемая с Browser Dialer, не может использовать собственные заголовки SNI или хоста. `SNI == host == address`. Пользовательские заголовки HTTP и `tlsSettings` игнорируются полностью.
* Конфигурация, используемая с Browser Dialer, не может использовать собственные заголовки SNI или хоста. `SNI == host == address`. Пользовательские заголовки HTTP и `tlsSettings` игнорируются полностью.
## Конфигурация
## Конфигурация
1. Подготовьте рабочую конфигурацию WebSocket или SplitHTTP. Помните о вышеуказанных ограничениях.
1. Подготовьте рабочую конфигурацию WebSocket или XHTTP. Помните о вышеуказанных ограничениях.
2. Запустите Xray с помощью `XRAY_BROWSER_DIALER=127.0.0.1:8080`. В Windows это можно сделать как `set XRAY_BROWSER_DIALER=...`, а затем запустить ядро из консоли, в Linux ядро можно запустить как `XRAY_BROWSER_DIALER=127.0.0.1:8080 ./xray -c config.json`.
2. Запустите Xray с помощью `XRAY_BROWSER_DIALER=127.0.0.1:8080`. В Windows это можно сделать как `set XRAY_BROWSER_DIALER=...`, а затем запустить ядро из консоли, в Linux ядро можно запустить как `XRAY_BROWSER_DIALER=127.0.0.1:8080 ./xray -c config.json`.
3. Откройте браузер, который не туннелирован через прокси, или измените маршрутизацию конфигурации таким образом, чтобы домен сервера Xray переходил к `freedom` непосредственно с клиента. Перейдите по адресу `localhost:8080` и откройте консоль разработчика с помощью `F12`, чтобы отслеживать ошибки.
3. Откройте браузер, который не туннелирован через прокси, или измените маршрутизацию конфигурации таким образом, чтобы домен сервера Xray переходил к `freedom` непосредственно с клиента. Перейдите по адресу `localhost:8080` и откройте консоль разработчика с помощью `F12`, чтобы отслеживать ошибки.
4. Для повышения производительности и обхода произвольных ограничений на подключение, применяемых браузером, рекомендуется включить `Mux.Cool`.
4. Для повышения производительности и обхода произвольных ограничений на подключение, применяемых браузером, рекомендуется включить `Mux.Cool`.
@ -44,11 +44,11 @@ Xray обычно использует uTLS для имитации поведе
- Кодировка, используемая для ранних данных для браузеров, - это `base64.RawURLEncoding` вместо `StdEncoding`, и сервер сделал ее совместимой.
- Кодировка, используемая для ранних данных для браузеров, - это `base64.RawURLEncoding` вместо `StdEncoding`, и сервер сделал ее совместимой.
- Кроме того, в связи с [Xray-core#375](https://github.com/XTLS/Xray-core/pull/375) рекомендациями по `?ed=2048` этот PR также увеличил сервер `MaxHeaderBytes` на 4096. ~~(Хотя, похоже, это будет работать и без модификации.)~~
- Кроме того, в связи с [Xray-core#375](https://github.com/XTLS/Xray-core/pull/375) рекомендациями по `?ed=2048` этот PR также увеличил сервер `MaxHeaderBytes` на 4096. ~~(Хотя, похоже, это будет работать и без модификации.)~~
## SplitHTTP
## XHTTP
<Badgetext="v1.8.19+"type="warning"/>
<Badgetext="v1.8.19+"type="warning"/>
SplitHTTP поддерживает QUIC, но также может использоваться собственный стек QUIC браузера. В Chrome это можно сделать через `chrome://flags`, в других браузерах он может быть уже включен или для него может потребоваться другой флаг.
XHTTP поддерживает QUIC, но также может использоваться собственный стек QUIC браузера. В Chrome это можно сделать через `chrome://flags`, в других браузерах он может быть уже включен или для него может потребоваться другой флаг.
В общем, `tlsSettings` полностью игнорируются при использовании Browser Dialer. Xray никак не контролирует, какую версию HTTP выбирает браузер.
В общем, `tlsSettings` полностью игнорируются при использовании Browser Dialer. Xray никак не контролирует, какую версию HTTP выбирает браузер.
Цель та же, что и у V2fly Meek, но благодаря использованию фрагментированной загрузки скорость загрузки выше, а скорость отдачи оптимизирована, но все еще очень ограничена, поэтому к HTTP-прокси предъявляются более высокие требования (см. выше).
Цель та же, что и у V2fly Meek, но благодаря использованию фрагментированной загрузки скорость загрузки выше, а скорость отдачи оптимизирована, но все еще очень ограничена, поэтому к HTTP-прокси предъявляются более высокие требования (см. выше).
`SplitHTTP` также принимает заголовок `X-Forwarded-For`.
`XHTTP` также принимает заголовок `X-Forwarded-For`.
## SplitHttpObject
## XHttpObject
`SplitHttpObject` соответствует элементу `splithttpSettings` в конфигурации транспорта.
`XHttpObject` соответствует элементу `xhttpSettings` в конфигурации транспорта.
```json
```json
{
{
@ -41,11 +41,11 @@
> `path`: string
> `path`: string
Путь HTTP-протокола, используемый SplitHTTP. Значение по умолчанию — `"/"`.
Путь HTTP-протокола, используемый XHTTP. Значение по умолчанию — `"/"`.
> `host`: string
> `host`: string
Хост, отправляемый в HTTP-запросе SplitHTTP. Значение по умолчанию пустое. Если значение на сервере пустое, значение хоста, отправляемое клиентом, не проверяется.
Хост, отправляемый в HTTP-запросе XHTTP. Значение по умолчанию пустое. Если значение на сервере пустое, значение хоста, отправляемое клиентом, не проверяется.
Если значение указано на сервере или в `headers`, оно будет сравниваться со значением хоста в запросе клиента.
Если значение указано на сервере или в `headers`, оно будет сравниваться со значением хоста в запросе клиента.
@ -97,7 +97,7 @@
<Badgetext="v24.9.19+"type="warning"/>
<Badgetext="v24.9.19+"type="warning"/>
Только для клиента. Позволяет пользователю контролировать поведение многопоточности SplitHTTP в h2 и h3. Не используйте данную функцию вместе с mux.cool.
Только для клиента. Позволяет пользователю контролировать поведение многопоточности XHTTP в h2 и h3. Не используйте данную функцию вместе с mux.cool.