在 GO 中使用 net/http 的代理
Using proxies with net/http in GO
我正在尝试将代理与 net/http 包一起使用。我的代理是一个轮流代理,带有用户名、密码、代理地址和端口。
我尝试使用 os.setEnv()
将其设置为环境变量,并将其添加到我的 windows 10 env 变量中,但结果可能 windows 不支持用户通过身份验证的代理。
我也尝试了 http 传输方法,但无法正常工作
func SetProxy() *http.Client {
cfg := GetConfig()
if cfg.UseProxy {
proxyUrl, err := url.Parse("http://" + cfg.Proxy)
if err != nil {
panic(err)
}
myClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}}
return myClient
}
return &http.Client{}
}
如果有人可以向我指出使用代理的教程或文档,特别是具有用户密码身份验证的代理!
注意:我到处都使用这种格式:username:password@proxyaddress:port
作为调试尝试,您可以打印 client.Transport.Proxy
函数;如果它不是零,调用它并打印它的内容 returns。如果 Proxy
不是 nil
且 returns 不是 nil
*URL
,则使用代理。
我正在尝试将代理与 net/http 包一起使用。我的代理是一个轮流代理,带有用户名、密码、代理地址和端口。
我尝试使用 os.setEnv()
将其设置为环境变量,并将其添加到我的 windows 10 env 变量中,但结果可能 windows 不支持用户通过身份验证的代理。
我也尝试了 http 传输方法,但无法正常工作
func SetProxy() *http.Client {
cfg := GetConfig()
if cfg.UseProxy {
proxyUrl, err := url.Parse("http://" + cfg.Proxy)
if err != nil {
panic(err)
}
myClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}}
return myClient
}
return &http.Client{}
}
如果有人可以向我指出使用代理的教程或文档,特别是具有用户密码身份验证的代理!
注意:我到处都使用这种格式:username:password@proxyaddress:port
作为调试尝试,您可以打印 client.Transport.Proxy
函数;如果它不是零,调用它并打印它的内容 returns。如果 Proxy
不是 nil
且 returns 不是 nil
*URL
,则使用代理。