Låt Java SOCKS-målet förbli olöst
Undvik lokal destinations-DNS när du skapar en Java SOCKS-anslutning genom att behålla målvärdnamnet.
En SOCKS-anslutning kan misslyckas lokalt innan proxyn får chansen att lösa upp målet. Kontrollera om din kod löste upp målet när den byggde socket-adressen.
För en Java SOCKS-socket, behåll målvärdnamnet med en olöst destinationsadress:
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);Slutpunkten och värdnamnet är platshållare; använd din SOCKS5-tjänst eller en kandidat från SOCKS5-proxylistan för tillåtna tester mot offentliga mål. Den viktiga skillnaden är mellan att lösa upp proxyn så att du kan nå den och att behålla målnamnet för SOCKS-utbytet.
När du är ansluten behöver en HTTPS-klient fortfarande en TLS-session för destinationens värdnamn. Ett TLS-omslag bör inte använda proxyns värdnamn som motpartens identitet.
Kontrollera även kod på högre nivå: ett bibliotek kan utföra sin egen uppslagning innan det anropar din anslutning. Att behålla ett värdnamn i denna socket-adress kan inte ångra en uppslagning som gjorts någon annanstans i applikationen.