Lasciare irrisolta la destinazione Java SOCKS
Evitare il DNS locale della destinazione durante la creazione di una connessione Java SOCKS conservando il nome host di destinazione.
Una connessione SOCKS può fallire localmente prima che il proxy abbia la possibilità di risolvere la destinazione. Verificate se il vostro codice ha risolto l'obiettivo durante la costruzione dell'indirizzo del socket.
Per un socket Java SOCKS, conservate il nome host di destinazione con un indirizzo di destinazione non risolto:
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);L'endpoint e il nome host sono segnaposto; usate il vostro servizio SOCKS5 o un candidato dall'elenco di proxy SOCKS5 per test consentiti verso destinazioni pubbliche. La distinzione importante è tra risolvere il proxy per poterlo raggiungere e conservare il nome di destinazione per lo scambio SOCKS.
Una volta connesso, un client HTTPS ha ancora bisogno di una sessione TLS per il nome host di destinazione. Un wrapper TLS non dovrebbe usare il nome host del proxy come identità della controparte.
Controllate anche il codice di livello superiore: una libreria può eseguire la propria risoluzione prima di chiamare il vostro connettore. Conservare un nome host in questo indirizzo socket non può annullare una risoluzione eseguita altrove nell'applicazione.