提问人:Rodrigo 提问时间:11/8/2015 更新时间:1/22/2019 访问量:17639
创建 go socks5 客户端
Creating a go socks5 client
问:
所以我正在查看文档,根本没有如何使用其任何方法的示例。我正在考虑使用 socks5。这是函数的样子:net/proxy
func SOCKS5(network, addr string, auth *Auth, forward Dialer) (Dialer, error)
现在一切都是有道理的,除了我对哪个是类型感到困惑,并且函数本身返回一个 .其他一切都有意义,只是向前,让我失望。我将如何设置我的客户端以使用 socks5 拨号器?forward
Dialer
Dialer
network, add, auth
答:
17赞
Rodrigo
11/8/2015
#1
因此,我能够找到任何有兴趣的人的问题的答案,如何在go中设置socks5客户端:
dialSocksProxy, err := proxy.SOCKS5("tcp", "proxy_ip", nil, proxy.Direct)
if err != nil {
fmt.Println("Error connecting to proxy:", err)
}
tr := &http.Transport{Dial: dialSocksProxy.Dial}
// Create client
myClient := &http.Client{
Transport: tr,
}
评论
4赞
ufk
5/8/2018
Dial 在 1.10 中已弃用。如何获取 DialContext?
1赞
AmaHacka
4/7/2020
@ufk play.golang.org/p/dMGu7rdXaJ3 你对这个解决方案有什么看法?
0赞
aquaman
8/30/2020
@AmaHacka我尝试了您的代码(它需要一些重构),但它没有为我成功运行。你能看看吗 - 这里
8赞
likebike
3/31/2018
#2
最新版本的 Go 还通过环境变量支持 SOCKS5 代理。您将像往常一样编写代码,然后在运行时设置环境变量,例如:HTTP_PROXY
http.Client
HTTP_PROXY="socks5://127.0.0.1:1080/" ./myGoHttpClient
1赞
bigspawn
1/22/2019
#3
如果你需要 socks5 客户端代理和 auth,你可以使用如下:
auth := proxy.Auth{
User: "YOUR_PROXY_LOGIN",
Password: "YOUR_PROXY_PASSWORD",
}
dialer, err := proxy.SOCKS5("tcp", "PROXY_IP", &auth, proxy.Direct)
if err != nil {
fmt.Fprintln(os.Stderr, "can't connect to the proxy:", err)
}
tr := &http.Transport{Dial: dialer.Dial}
myClient := &http.Client{
Transport: tr,
}
评论