Warum Java für Ihre HTTP-Anfrage einen SOCKS-Proxy gewählt hat
Prüfen Sie das ProxySelector-Ergebnis und die effektiven JVM-Einstellungen, bevor Sie alte Windows-Proxy-Workarounds anwenden.
Eine Java-Anfrage kann auf mehrere Proxy-Quellen treffen: explizite Client-Konfiguration, den Standardselektor, JVM-Netzwerkeigenschaften und unterstützte Betriebssystemeinstellungen. Wenn ein Protokoll unerwartet SOCKS erwähnt, stellen Sie fest, welche Quelle ihn gewählt hat.
Bei Code, der den Standardselektor verwendet, prüfen Sie die Entscheidung für das genaue Ziel:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
Dies meldet die Kandidaten des Selektors. Es belegt nicht, welche Verbindung letztlich erfolgreich war, und ein Client mit einem eigenen expliziten Weg kann anders entscheiden.
Die effektiven Einstellungen prüfen
Prüfen Sie http.proxyHost, https.proxyHost, socksProxyHost, deren Ports und java.net.useSystemProxies. Die JDK-Dokumentation zu Netzwerkeigenschaften beschreibt ihren Geltungsbereich und ihre Rangfolge. Die System-Proxy-Erkennung wird beim Start geprüft; legen Sie sie beim Starten der JVM bewusst fest.
Historische Antworten beschreiben bestimmte Kombinationen aus alten Windows-Dialogen und alten JDKs. Diese Berichte können die Herkunft eines Workarounds erklären, belegen aber nicht, dass eine aktuelle Laufzeit denselben Fehler hat. Notieren Sie die Laufzeitversion und die Ausgabe des Selektors, bevor Sie Betriebssystemeinstellungen für alle Anwendungen ändern.
Wenn die Anwendung für einen Client einen HTTP-Proxy benötigt, kann eine explizite Proxy-Konfiguration diese Anforderung klarer machen. Wenn sie zentrales automatisches Routing benötigt, untersuchen Sie, warum der Selektor den unerwarteten SOCKS-Eintrag erhalten oder zurückgegeben hat.
Ein benutzerdefinierter Selektor sollte beabsichtigte Umgehungen und Fehlerbehandlung erhalten. Das unterschiedslose Filtern aller SOCKS-Kandidaten kann Verbindungen unterbrechen, die einen verwenden sollten. Beheben Sie die falsche Regel mit dem kleinsten Umfang, den Sie identifizieren können.