在 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,则使用代理。