Deixe o destino Java SOCKS não resolvido
Evite o DNS local do destino ao criar uma conexão Java SOCKS, preservando o nome do host de destino.
Uma conexão SOCKS pode falhar localmente antes que o proxy tenha a chance de resolver o destino. Verifique se o seu código resolveu o alvo ao construir o endereço do socket.
Para um socket Java SOCKS, mantenha o nome do host de destino com um endereço de destino não resolvido:
Proxy proxy = new Proxy(Proxy.Type.SOCKS,
new InetSocketAddress("203.0.113.10", 1080));
Socket socket = new Socket(proxy);
socket.connect(InetSocketAddress.createUnresolved(
"destination.example", 443), 5000);O endpoint e o nome do host são placeholders; use o seu serviço SOCKS5 ou um candidato da lista de proxies SOCKS5 para testes de destino público permitidos. A diferença importante está entre resolver o proxy para conseguir alcançá-lo e preservar o nome do destino para a troca SOCKS.
Depois de conectado, um cliente HTTPS ainda precisa de uma sessão TLS para o nome do host de destino. Um wrapper TLS não deve usar o nome do host do proxy como a identidade do par.
Verifique também o código de nível superior: uma biblioteca pode realizar a sua própria consulta antes de chamar o seu conector. Preservar um nome de host neste endereço de socket não pode desfazer uma consulta realizada em outro lugar da aplicação.