Я использую 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":"*/*"}