Setzen Sie Nettys SOCKS-Aushandlung vor Ihr Anwendungsprotokoll
Ordnen Sie einen Netty-SOCKS-Proxy-Handler vor dem Anwendungsverkehr an und bewahren Sie ein unaufgelöstes Ziel, wenn DNS auf der Proxy-Seite gewünscht ist.
Für einen bestehenden Netty-Bootstrap/Pipeline, bei dem der SOCKS-Server das Ziel auflösen soll:
bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);
pipeline.addFirst(
new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);
bootstrap.connect(
InetSocketAddress.createUnresolved("example.com", 443)
);Der Proxy-Endpunkt ist der lokale Port 1080; das unaufgelöste Verbindungsziel ist example.com:443. Verwenden Sie die Proxy-Adresse nicht für beide Rollen und lösen Sie den Namen nicht auf, bevor der Handler ihn erhält. Für öffentliche Ziele auf einer erlaubten öffentlichen Proxy-Route liefert die SOCKS5-Proxy-Liste Kandidaten für den Proxy-Endpunkt des Handlers.
Platzieren Sie den Socks5ProxyHandler vor Handlern, die Zielverkehr austauschen. Warten Sie auf das Proxy-Verbindungs-Future, nicht nur auf einen Kanal, der den Listener erreicht. Eine abgelehnte Methode oder ein abgelehntes Ziel gehört zu dieser Einrichtungsphase.
Bei HTTPS verwendet die nächste TLS-Schicht den Hostnamen des Ziels, die erforderliche Prüfung und das Vertrauen—nicht die Identität des SOCKS-Endpunkts. Erst dann beginnt der HTTP-/Anwendungsaustausch.
Das Fragment liefert keine Event-Loops, Kanaltypen, TLS-/HTTP-Handler oder normale Fehlerbehandlung. Wählen Sie den SOCKS-Konstruktor, der zu den Authentifizierungsanforderungen passt; ein HTTP-Basic-Handler ist ein anderes Protokoll.
Verwenden Sie den No-Op-Resolver nur dort, wo dieser nachgelagerte Handler die Hostnamenauflösung besitzt. Andere Verbindungen benötigen möglicherweise eine lokale Auflösung. Halten Sie Resolver-Ausgabe, Proxy-Future, TLS und Anwendungsergebnis bei der Fehlerdiagnose getrennt.