Un obiect proxy Java descrie o rută. Clientul de rețea decide în continuare ce tipuri de rute poate folosi. Acest lucru contează când punctul final disponibil vorbește SOCKS, iar aplicația folosește java.net.http.HttpClient.

În implementarea JDK 25 examinată aici, codul de cerere al clientului HTTP acceptă un candidat HTTP de la selector. Un candidat SOCKS nu îl face să efectueze negocierea SOCKS; implementarea poate continua fără proxy. Prin urmare, un răspuns reușit nu este o dovadă suficientă că a fost folosită intrarea SOCKS a unui selector personalizat.

Alegeți mai întâi transportul

Pentru o aplicație existentă bazată pe URLConnection, handlerului de protocol i se poate da un proxy explicit acceptat la deschiderea conexiunii:

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);

Pentru teste permise asupra țintelor publice, folosiți un punct final SOCKS potrivit din serviciul dumneavoastră sau din lista de proxy SOCKS. Acesta este un API de client diferit, nu o scriere alternativă a HttpClient.Builder.proxy. Păstrați URL-ul destinației pentru ca HTTPS să identifice în continuare site-ul dorit.

O aplicație care trebuie să păstreze java.net.http poate folosi în schimb un punct final proxy HTTP compatibil, inclusiv un adaptor aprobat care se ocupă de conexiunea SOCKS ulterioară. Aceasta adaugă o componentă reală și încă o limită de acces; schimbarea portului 8080 în 1080 nu oferă acea traducere.

Păstrați vizibile selecția și adoptarea

Înregistrați atât rezultatul selectorului, cât și conexiunea pe care clientul o deschide efectiv. Primul descrie ieșirea politicii; al doilea stabilește dacă implementarea a adoptat-o.

Legați concluziile de mediul de execuție și transportul utilizate. Proprietățile JVM SOCKS folosite de o implementare de socket nu sunt o promisiune că fiecare bibliotecă HTTP le consultă. Când ruta este obligatorie, un tip de proxy neacceptat ar trebui detectat înainte de a accepta o cerere directă aparent reușită.

Articole similare