JDK 25 HttpClient ne koristi SOCKS rute iz ProxySelectora
Odaberite Java HTTP prijenos koji stvarno podržava SOCKS umjesto da se oslanjate samo na tip koji vraća ProxySelector.
Java proxy objekat opisuje rutu. Mrežni klijent i dalje odlučuje koje vrste ruta može koristiti. To je važno kada dostupna završna tačka govori SOCKS, a aplikacija koristi java.net.http.HttpClient.
U ovdje ispitanoj implementaciji JDK 25, kod zahtjeva HTTP klijenta prihvata HTTP kandidata od selektora. SOCKS kandidat ga ne pokreće na SOCKS pregovaranje; implementacija može nastaviti bez proxyja. Zato uspješan odgovor nije dovoljan dokaz da je korišten SOCKS unos prilagođenog selektora.
Prvo odaberite prijenos
Za postojeću aplikaciju zasnovanu na URLConnection, rukovaocu protokola se može dati podržani eksplicitni proxy pri otvaranju veze:
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);
Za dozvoljena testiranja javnih ciljeva koristite odgovarajuću SOCKS završnu tačku iz svoje usluge ili sa liste SOCKS proxyja. To je drugačiji klijentski API, a ne alternativno pisanje HttpClient.Builder.proxy. Sačuvajte odredišni URL kako bi HTTPS i dalje prepoznavao namijenjeni sajt.
Aplikacija koja mora zadržati java.net.http može umjesto toga koristiti kompatibilnu završnu tačku HTTP proxyja, uključujući odobreni adapter koji preuzima dalju SOCKS vezu. To dodaje stvarnu komponentu i još jednu granicu pristupa; promjena porta 8080 u 1080 ne pruža to prevođenje.
Držite izbor i usvajanje vidljivim
Zabilježite i rezultat selektora i vezu koju klijent stvarno otvara. Prvi opisuje izlaz politike; drugi utvrđuje da li ga je implementacija usvojila.
Vežite zaključke za korišteno okruženje izvršavanja i prijenos. JVM SOCKS svojstva koja koristi jedna implementacija socketa nisu obećanje da ih svaka HTTP biblioteka konsultuje. Kada je ruta obavezna, nepodržani tip proxyja treba otkriti prije prihvatanja naizgled uspješnog direktnog zahtjeva.