O Apache HttpClient 5.5 inclui um caminho de configuração de SOCKS nas configurações de socket do gerenciador de conexões. Seu exemplo mantido usa setSocksProxyAddress:

InetSocketAddress socks =
    new InetSocketAddress("proxy.example.net", 1080);

PoolingHttpClientConnectionManager manager =
    PoolingHttpClientConnectionManagerBuilder.create()
        .setDefaultSocketConfig(
            SocketConfig.custom()
                .setSocksProxyAddress(socks)
                .build()
        )
        .build();

CloseableHttpClient client = HttpClients.custom()
    .setConnectionManager(manager)
    .build();

O trecho usa os pacotes org.apache.hc do HttpClient 5 e o SocketConfig do HttpCore. As requisições feitas com este cliente usam o pool configurado acima. Feche o cliente quando o escopo de propriedade da aplicação terminar.

Coloque a URL real do site na requisição como de costume. Para requisições permitidas a sites públicos sem autenticação de proxy, a lista de proxies SOCKS oferece endereços candidatos; escolha uma versão de SOCKS suportada pelo ambiente de execução real. O endereço SOCKS configura o transporte usado para alcançá-lo; não é uma rota de proxy de encaminhamento HTTP fornecida como HttpHost.

Estas são as configurações de socket padrão deste gerenciador. Uma aplicação que usa um resolvedor SocketConfig por rota deve aplicar a configuração SOCKS desejada por meio dessa política. O exemplo mantém a política DNS de destino normal do gerenciador de conexões; a resolução remota de nomes exige uma configuração verificada separadamente.

Artigos relacionados