Et Java-proxyobjekt beskriver en rute. Nettverksklienten bestemmer fortsatt hvilke typer ruter den kan bruke. Dette er viktig når endepunktet som er tilgjengelig snakker SOCKS, og applikasjonen bruker java.net.http.HttpClient.

I JDK 25-implementasjonen som undersøkes her, godtar forespørselskoden til HTTP-klienten en HTTP-kandidat fra velgeren. En SOCKS-kandidat får den ikke til å utføre SOCKS-forhandling; implementasjonen kan fortsette uten proxy. En vellykket respons er derfor ikke tilstrekkelig bevis for at SOCKS-oppføringen til en tilpasset velger ble brukt.

Velg transporten først

For en eksisterende URLConnection-basert applikasjon kan protokollbehandleren få en støttet eksplisitt proxy når tilkoblingen åpnes:

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

For tillatte tester mot offentlige mål, bruk et samsvarende SOCKS-endepunkt fra tjenesten din eller fra SOCKS-proxylisten. Dette er en annen klient-API, ikke en alternativ skrivemåte for HttpClient.Builder.proxy. Behold mål-URL-en slik at HTTPS fortsatt identifiserer nettstedet du har tenkt på.

En applikasjon som må beholde java.net.http, kan i stedet bruke et kompatibelt HTTP-proxyendepunkt, inkludert en godkjent adapter som håndterer den videre SOCKS-tilkoblingen. Det legger til en reell komponent og nok en tilgangsgrense; å endre port 8080 til 1080 gir ikke den oversettelsen.

Hold valg og overtagelse synlig

Registrer både resultatet fra velgeren og tilkoblingen klienten faktisk åpner. Det første beskriver policyutdata; det andre fastslår om implementasjonen tok det i bruk.

Knytt konklusjonene til kjøretidsmiljøet og transporten som brukes. JVM SOCKS-egenskaper som én socket-implementasjon bruker, er ikke et løfte om at hvert HTTP-bibliotek spør dem. Når ruten er obligatorisk, bør en ustøttet proxytype oppdages før man godtar en tilsynelatende vellykket direkte forespørsel.

Relaterte artikler