Para um bootstrap/pipeline Netty existente em que o servidor SOCKS deve resolver o destino:

bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);

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

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

O endpoint do proxy é a porta local 1080; o alvo de conexão não resolvido é example.com:443. Não use o endereço do proxy para as duas funções nem resolva o nome antes de o manipulador recebê-lo. Para alvos públicos numa rota de proxy público permitida, a lista de proxies SOCKS5 fornece candidatos para o endpoint de proxy do manipulador.

Coloque Socks5ProxyHandler antes dos manipuladores que trocam tráfego de destino. Aguarde o future da conexão do proxy, não apenas um canal que chegue ao listener. Um método ou destino rejeitado pertence a esta etapa de configuração.

Para HTTPS, a camada TLS seguinte usa o nome do host do destino, a verificação e a confiança necessárias—não a identidade do endpoint SOCKS. Só então começa a troca HTTP/aplicação.

O fragmento não fornece event loops, tipos de canal, manipuladores TLS/HTTP nem tratamento normal de erros. Escolha o construtor SOCKS adequado às necessidades de autenticação; um manipulador HTTP Basic é outro protocolo.

Use o resolver no-op apenas onde este manipulador a jusante detém a resolução de nomes de host. Outras conexões podem precisar de busca local. Mantenha separados a saída do resolver, o future do proxy, o TLS e o resultado da aplicação ao diagnosticar uma falha.

Artigos relacionados