我正在尝试设置HTTP客户端,以便它使用代理,但是我不太明白该怎么做。该文档有多个对“代理”的引用,但是似乎没有一个功能允许定义代理。我需要的是这样的:
client := &http.Client{} client.SetProxy("someip:someport") // pseudo code resp, err := client.Get("http://example.com") // do request through proxy
知道如何在Go中执行此操作吗?
lukad是正确的,您可以设置HTTP_PROXY环境变量,如果这样做,Go将默认使用它。
HTTP_PROXY
重击:
export HTTP_PROXY="http://proxyIp:proxyPort"
走:
os.Setenv("HTTP_PROXY", "http://proxyIp:proxyPort")
您还可以构造自己的http.Client,无论环境如何配置,该客户端都必须使用代理:
proxyUrl, err := url.Parse("http://proxyIp:proxyPort") myClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}}
如果您不能依赖环境的配置,或者不想修改它,这将很有用。
您也可以修改“ net/http”包使用的默认传输方式。这将影响您的整个程序(包括默认的HTTP客户端)。
net/http
proxyUrl, err := url.Parse("http://proxyIp:proxyPort") http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}