Miks Java valis teie HTTP-päringu jaoks SOCKS-proxy
Kontrollige ProxySelectori tulemust ja kehtivaid JVM-i seadeid enne vanade Windowsi proxy-lahenduste rakendamist.
Java-päring võib kohata mitut proxy-allikat: kliendi selgesõnaline konfiguratsioon, vaikevalija, JVM-i võrguomadused ja toetatud operatsioonisüsteemi seaded. Kui logi mainib ootamatult SOCKSit, tehke kindlaks, milline allikas selle valis.
Vaikevalijat kasutava koodi puhul kontrollige otsust täpse sihtkoha jaoks:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
See väljastab valija kandidaadid. See ei tõenda, milline ühendus lõpuks õnnestus, ja klient, kellel on oma selgesõnaline marsruut, võib teha teistsuguse valiku.
Kontrollige kehtivaid seadeid
Vaadake üle http.proxyHost, https.proxyHost, socksProxyHost, nende pordid ja java.net.useSystemProxies. JDK võrguomaduste dokumentatsioon kirjeldab nende ulatust ja tähtsust. Süsteemse proxy tuvastamist kontrollitakse käivitamisel; määrake see teadlikult JVM-i käivitamisel.
Ajaloolised vastused kirjeldavad konkreetseid kombinatsioone vanadest Windowsi dialoogidest ja vanadest JDK-dest. Need aruanded võivad selgitada lahenduse päritolu, kuid ei tõenda, et praegusel käitusajal on sama viga. Enne operatsioonisüsteemi seadete muutmist iga rakenduse jaoks registreerige käitusaja versioon ja valija väljund.
Kui rakendus vajab ühe kliendi jaoks HTTP-proxyt, võib selgesõnaline proxy-konfiguratsioon seda nõuet selgemaks teha. Kui see vajab keskset automaatset marsruutimist, uurige, miks valija sai või tagastas ootamatu SOCKS-kirje.
Kohandatud valija peaks säilitama kavatsetud möödaviigud ja tõrgete käsitlemise. Kõigi SOCKS-kandidaatide valimatu filtreerimine võib katkestada ühendusi, mis pidid ühte kasutama. Parandage vale reegel väikseima ulatusega, mille suudate tuvastada.