Een Java-verzoek kan verschillende proxy-invoer tegenkomen: expliciete clientconfiguratie, de standaardselector, JVM-netwerkeigenschappen en ondersteunde instellingen van het besturingssysteem. Wanneer een log onverwacht SOCKS vermeldt, stel dan vast welke invoer dat heeft gekozen.

Voor code die de standaardselector gebruikt, controleer de beslissing voor de exacte bestemming:

URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
    System.out.println(selector.select(target));
}

Dit rapporteert de kandidaten van de selector. Het bewijst niet welke verbinding uiteindelijk is geslaagd, en een client met een eigen expliciete route kan een andere keuze maken.

Controleer de effectieve instellingen

Bekijk http.proxyHost, https.proxyHost, socksProxyHost, hun poorten en java.net.useSystemProxies. De JDK-documentatie over netwerkeigenschappen beschrijft hun bereik en voorrang. Detectie van de systeemproxy wordt bij het opstarten gecontroleerd; stel dit bewust in wanneer je de JVM start.

Historische antwoorden beschrijven specifieke combinaties van oude Windows-dialoogvensters en oude JDK's. Die rapporten kunnen de oorsprong van een oplossing verklaren, maar ze bewijzen niet dat een huidige runtime dezelfde bug heeft. Noteer de runtimeversie en de selectoruitvoer voordat je de instellingen van het besturingssysteem voor elke applicatie wijzigt.

Als de applicatie een HTTP-proxy nodig heeft voor één client, kan een expliciete proxyconfiguratie die eis duidelijker maken. Als zij centrale automatische routering nodig heeft, onderzoek dan waarom de selector de onverwachte SOCKS-vermelding ontving of teruggaf.

Een aangepaste selector moet bewuste bypasses en foutafhandeling behouden. Alle SOCKS-kandidaten zonder onderscheid filteren kan verbindingen verbreken die er een hadden moeten gebruiken. Repareer de onjuiste regel met de kleinste scope die je kunt identificeren.

Gerelateerde artikelen