Spring WebClient с прокси-сервером: отсутствуют заголовки HTTP - PullRequest
0 голосов
/ 27 февраля 2019

Я использую Spring WebClient из spring-boot-starter-webflux 2.1.3.RELEASE для проверки уровня анонимности прокси-серверов.После того, как я сделал несколько запросов с WebClient к пользовательскому http-серверу node.js через некоторые прокси-серверы, в моих запросах не было HTTP-заголовков, связанных с прокси.Я скучаю, например, x-forwarded-for, via, x-proxy-id .. просто remote-address выставлено.

Насколько я понял, клиент netty подключается к прокси через tcp CONNECT для каждого типа прокси (HTTP, SOCKS4 / 5), и это является причиной отсутствия заголовков.

Вопрос: Есть ли способ получить классические HTTP-заголовки прокси с этим подходом или есть другой способ настроить прокси-сервер с WebClient?

Мой пример конфигурации:

HttpClient httpClient = HttpClient.create()
    .tcpConfiguration(tcpClient ->
        tcpClient
            .proxy(proxy -> {                       
                proxy.type(ProxyProvider.Proxy.HTTP).address(new InetSocketAddress(ip, port));})
            .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
            .doOnConnected(connection ->
                connection
                    .addHandlerLast(new ReadTimeoutHandler(10000))
                    .addHandlerLast(new WriteTimeoutHandler(10000))));

ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);

WebClient build = WebClient.builder()
    .baseUrl(baseUrl)
    .clientConnector(connector)
    .build();

Ожидаемые заголовки

{"user-agent":"ReactorNetty/0.8.4.RELEASE","host":"21X.8X.XX.145:8XX","accept":"*/*","x-proxy-id":"719306848","x-forwarded-for":"21X.8X.XX.145","via":"1.1 101.XX.8X.11X (Mikrotik HttpProxy)"} 

Фактические заголовки

{"user-agent":"ReactorNetty/0.8.4.RELEASE","host":"21X.8X.XX.145:8XX","accept":"*/*"}

1 Ответ

0 голосов
/ 17 июля 2019

Причиной отсутствия заголовков является запрос CONNECT, который устанавливает TCP-туннель вместо отправки HTTP-запросов к прокси.

Но, к сожалению, как указано в

https://github.com/netty/netty/issues/8269

и

https://github.com/spring-projects/spring-framework/issues/21767

базового клиента netty, который используется веб-клиентом, отправляющим запрос CONNECT для каждого типа прокси, и это не будетизменилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...