Spring WebClient с прокси-сервером: отсутствуют заголовки HTTP
Я использую Spring WebClient из spring-boot-starter-webflux 2.1.3.RELEASE для проверки уровня анонимности прокси-серверов. После того, как я сделал несколько запросов через WebClient через некоторые прокси-серверы, в моих запросах нет 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();
0 ответов
Причина отсутствия заголовков - запрос CONNECT, который устанавливает TCP-туннель вместо отправки HTTP-запросов на прокси.
Но, к сожалению, как указано в
https://github.com/netty/netty/issues/8269
а также
https://github.com/spring-projects/spring-framework/issues/21767
базовый клиент netty, который используется веб-клиентом, выдающим запрос CONNECT для каждого типа прокси, и это не будет изменено.