Eine SOCKS-Verbindung kann lokal fehlschlagen, bevor der Proxy das Ziel auflösen kann. Prüfen Sie, ob Ihr Code das Ziel beim Erstellen der Socket-Adresse aufgelöst hat.

Behalten Sie bei einem Java-SOCKS-Socket den Zielhostnamen mit einer unaufgelösten Zieladresse bei:

Proxy proxy = new Proxy(Proxy.Type.SOCKS,
    new InetSocketAddress("203.0.113.10", 1080));
Socket socket = new Socket(proxy);
socket.connect(InetSocketAddress.createUnresolved(
    "destination.example", 443), 5000);

Endpunkt und Hostname sind Platzhalter; verwenden Sie Ihren SOCKS5-Dienst oder einen Kandidaten aus der SOCKS5-Proxy-Liste für zulässige Tests öffentlicher Ziele. Die wichtige Unterscheidung ist die zwischen dem Auflösen des Proxys, damit Sie ihn erreichen, und dem Beibehalten des Zielnamens für den SOCKS-Austausch.

Nach dem Verbinden benötigt ein HTTPS-Client weiterhin eine TLS-Sitzung für den Zielhostnamen. Ein TLS-Wrapper sollte den Hostnamen des Proxys nicht als Peer-Identität verwenden.

Prüfen Sie auch übergeordneten Code: Eine Bibliothek kann ihre eigene Namensauflösung durchführen, bevor sie Ihren Connector aufruft. Ein Hostname in dieser Socket-Adresse kann eine an anderer Stelle der Anwendung durchgeführte Auflösung nicht rückgängig machen.

Ähnliche Artikel