Pro existující Netty bootstrap/pipeline, kde má SOCKS server rozlišit cíl:

bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);

pipeline.addFirst(
    new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);

bootstrap.connect(
    InetSocketAddress.createUnresolved("example.com", 443)
);

Koncový bod proxy je místní port 1080; nerozlišený cíl připojení je example.com:443. Nepoužívejte adresu proxy pro obě role a nerozlišujte název dřív, než ho handler obdrží. Pro veřejné cíle na povolené veřejné proxy trase seznam proxy SOCKS5 dodává kandidáty pro koncový bod proxy handleru.

Umístěte Socks5ProxyHandler před handlery, které vyměňují provoz cíle. Čekejte na future proxy připojení, ne jen na kanál, který dosáhne listeneru. Odmítnutá metoda nebo cíl patří do této fáze nastavení.

Pro HTTPS používá další vrstva TLS název hostitele cíle, požadované ověření a důvěru—ne identitu koncového bodu SOCKS. Teprve pak začíná výměna HTTP/aplikace.

Fragment nedodává smyčky událostí, typy kanálů, TLS/HTTP handlery ani běžné ošetření chyb. Zvolte konstruktor SOCKS odpovídající potřebám autentizace; handler HTTP Basic je jiný protokol.

Používejte no-op resolver jen tam, kde tento navazující handler vlastní rozlišení názvu hostitele. Jiná připojení mohou potřebovat místní vyhledání. Při diagnostice selhání udržujte výstup resolveru, future proxy, TLS a výsledek aplikace oddělené.

Související články