Un oggetto proxy Java descrive una rotta. Il client di rete decide comunque quali tipi di rotta può usare. Questo conta quando l'endpoint disponibile parla SOCKS e l'applicazione usa java.net.http.HttpClient.

Nell'implementazione JDK 25 esaminata qui, il codice di richiesta del client HTTP accetta un candidato HTTP dal selettore. Un candidato SOCKS non lo induce a eseguire la negoziazione SOCKS; l'implementazione può proseguire senza proxy. Una risposta riuscita non è quindi prova sufficiente che sia stata usata la voce SOCKS di un selettore personalizzato.

Scegliete prima il trasporto

Per un'applicazione esistente basata su URLConnection, all'handler del protocollo si può fornire un proxy esplicito supportato all'apertura della connessione:

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

Per test consentiti su obiettivi pubblici, usate un endpoint SOCKS corrispondente del vostro servizio o dalla lista di proxy SOCKS. È un'API client diversa, non una grafia alternativa di HttpClient.Builder.proxy. Conservate l'URL di destinazione affinché HTTPS continui a identificare il sito previsto.

Un'applicazione che deve mantenere java.net.http può invece usare un endpoint proxy HTTP compatibile, incluso un adattatore approvato che gestisce la connessione SOCKS successiva. Ciò aggiunge un componente reale e un altro confine di accesso; cambiare la porta 8080 in 1080 non fornisce quella traduzione.

Tenete visibili scelta e adozione

Registrate sia il risultato del selettore sia la connessione che il client apre davvero. Il primo descrive l'output della politica; il secondo stabilisce se l'implementazione l'ha adottato.

Legate le conclusioni al runtime e al trasporto in uso. Le proprietà SOCKS della JVM usate da un'implementazione di socket non sono una promessa che ogni libreria HTTP le consulti. Quando la rotta è obbligatoria, un tipo di proxy non supportato dovrebbe essere rilevato prima di accettare una richiesta diretta apparentemente riuscita.

Articoli correlati