Um objeto proxy Java descreve uma rota. O cliente de rede ainda decide que tipos de rota pode usar. Isso importa quando o endpoint disponível fala SOCKS e a aplicação usa java.net.http.HttpClient.

Na implementação do JDK 25 examinada aqui, o código de requisição do cliente HTTP aceita um candidato HTTP do seletor. Um candidato SOCKS não faz com que ele realize a negociação SOCKS; a implementação pode continuar sem proxy. Portanto, uma resposta bem-sucedida não é prova suficiente de que a entrada SOCKS de um seletor personalizado foi usada.

Escolha o transporte primeiro

Para uma aplicação existente baseada em URLConnection, o manipulador de protocolo pode receber um proxy explícito suportado ao abrir a conexão:

Proxy route = new Proxy(Proxy.Type.SOCKS,
    new InetSocketAddress("proxy.example", 1080));
URLConnection connection = URI.create("https://service.example/")
    .toURL().openConnection(route);
connection.setConnectTimeout(5000);
connection.setReadTimeout(15000);

Para testes permitidos em alvos públicos, use um endpoint SOCKS correspondente do seu serviço ou da lista de proxies SOCKS. Esta é uma API de cliente diferente, não uma grafia alternativa de HttpClient.Builder.proxy. Preserve o URL de destino para que o HTTPS continue a identificar o site pretendido.

Uma aplicação que precise manter java.net.http pode, em vez disso, usar um endpoint de proxy HTTP compatível, incluindo um adaptador aprovado que trate da conexão SOCKS seguinte. Isso acrescenta um componente real e outro limite de acesso; mudar a porta 8080 para 1080 não fornece essa tradução.

Mantenha a seleção e a adoção visíveis

Registre tanto o resultado do seletor quanto a conexão que o cliente realmente abre. O primeiro descreve a saída da política; o segundo estabelece se a implementação a adotou.

Vincule as conclusões ao runtime e ao transporte utilizados. As propriedades SOCKS da JVM usadas por uma implementação de socket não são uma promessa de que toda biblioteca HTTP as consulte. Quando a rota é obrigatória, um tipo de proxy não suportado deve ser detetado antes de aceitar um pedido direto aparentemente bem-sucedido.

Artigos relacionados