Hoekom Java 'n SOCKS-proxy vir jou HTTP-versoek gekies het
Ondersoek die ProxySelector-uitslag en effektiewe JVM-instellings voordat jy ou Windows-proxy-omwee toepas.
'n Java-versoek kan verskeie proxy-insette teekom: eksplisiete klientkonfigurasie, die verstekselekteerder, JVM-netwerkeienskappe en ondersteunde bedryfstelselinstellings. Wanneer 'n log onverwags SOCKS noem, bepaal watter inset dit gekies het.
Vir kode wat die verstekselekteerder gebruik, ondersoek die beslissing vir die presiese bestemming:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
Dit rapporteer die selekteerder se kandidate. Dit bewys nie watter verbinding uiteindelik geslaag het nie, en 'n kliënt met sy eie eksplisiete roete kan 'n ander keuse maak.
Kontroleer die effektiewe instellings
Hersien http.proxyHost, https.proxyHost, socksProxyHost, hul poorte en java.net.useSystemProxies. Die JDK-dokumentasie oor netwerkingseienskappe beskryf hul omvang en voorrang. Stelselproxy-ontdekking word by die opstart nagegaan; stel dit doelbewus wanneer jy die JVM begin.
Historiese antwoorde beskryf spesifieke kombinasies van ou Windows-dialoogvensters en ou JDK's. Daardie verslae kan die oorsprong van 'n omweg verduidelik, maar hulle bewys nie dat 'n huidige looptyd dieselfde fout het nie. Teken die looptydweergawe en die selekteerderuitset aan voordat jy bedryfstelselinstellings vir elke toepassing verander.
As die toepassing 'n HTTP-proxy vir een kliënt nodig het, kan 'n eksplisiete proxykonfigurasie daardie vereiste duideliker maak. As dit sentrale outomatiese routering nodig het, ondersoek waarom die selekteerder die onverwagte SOCKS-inskrywing ontvang of teruggegee het.
'n Pasgemaakte selekteerder moet doelbewuste oorpaaie en fouthantering behou. Om elke SOCKS-kandidaat onoordeelkundig te filter, kan verbindings breek wat veronderstel was om een te gebruik. Maak die verkeerde reël reg met die kleinste omvang wat jy kan identifiseer.