gotd / td

Telegram client, in Go. (MTProto API)
MIT License
1.48k stars 131 forks source link

Can I set a proxy login when I log in? #1451

Open NoSugarTing opened 5 days ago

NoSugarTing commented 5 days ago

Can I set a proxy login when I log in? I don't see any way to configure it, please help me, thank you very much !!!

Flipped199 commented 4 days ago

yes


sock5, _ := proxy.SOCKS5("tcp", "10.0.0.14:7890", &proxy.Auth{
    User:     "",
    Password: "",
}, proxy.Direct)
dc := sock5.(proxy.ContextDialer)

client := telegram.NewClient(appID, appHash, telegram.Options{
    Resolver:       dcs.Plain(dcs.PlainOptions{Dial: dc.DialContext}), 
})
prdsrm commented 1 day ago

Yes, it is possible just like @Flipped199 said it. You can also abstract a little bit and use proxy.FromURL so, you will be able to mix between SOCKS5 & HTTP/HTTP(s) proxies, like this:

func NewDialer(proxyConnStr string) (proxy.Dialer, error) {
    url, err := url.Parse(proxyConnStr)
    if err != nil {
        return nil, err
    }
    socks5, err := proxy.FromURL(url, proxy.Direct)
    if err != nil {
        return nil, err
    }
    return socks5, nil
}

func NewResolver(proxyConnStr string) (dcs.Resolver, error) {
    var resolver dcs.Resolver
    socks5, err := NewDialer(proxyConnStr)
    if err != nil {
        return nil, err
    }
    dc := socks5.(proxy.ContextDialer)
    resolver = dcs.Plain(dcs.PlainOptions{
        Dial: dc.DialContext,
    })
    return resolver, nil
}

proxy := "https://proxy_userid:proxy_password@proxy_ip:proxy_port"
resolver, err = NewResolver(proxy)
if err != nil {
    return err
}
client := telegram.NewClient(appID, appHash, telegram.Options{
    Resolver:       dcs.Plain(dcs.PlainOptions{Dial: dc.DialContext}), 
})

You need to use the package"golang.org/x/net/proxy" and import "github.com/gotd/td/telegram/dcs" as well.

This question should be asked in the "discussions" section to be honest, and it was already answered here: https://github.com/gotd/td/discussions/714. same here: https://github.com/gotd/td/issues/790.