client.TcpHandler = (address, port) =>
{
    var proxy = new Socks5ProxyClient(
        proxyHost, proxyPort, proxyUsername, proxyPassword);
    return System.Threading.Tasks.Task.FromResult(
        proxy.CreateConnection(address, port));
};
await client.LoginUserIfNeeded();

Usa o WTelegram.Client existente e importa a biblioteca SOCKS compatible que escolliches. proxyHost, o porto e a conta identifican o intermediario; address/port da lambda son os destinos que solicita WTelegram.

CreateConnection debe devolver un TcpClient conectado despois de negociar co proxy. Chegar só ao porto do proxy non permite esa entrega.

O exemplo usa un método síncrono da biblioteca. Envolver o resultado en Task.FromResult non fai que a conexión deixe de bloquear; usa un método asíncrono compatible cando o precises.

Conserva o handler para as conexións posteriores e para o inicio de sesión. A autenticación da conta de Telegram segue separada da conta SOCKS.

Artigos relacionados