一尘不染

为HTTP客户端设置代理

go

我正在尝试设置HTTP客户端,以便它使用代理,但是我不太明白该怎么做。该文档有多个对“代理”的引用,但是似乎没有一个功能允许定义代理。我需要的是这样的:

client := &http.Client{}
client.SetProxy("someip:someport") // pseudo code
resp, err := client.Get("http://example.com") // do request through proxy

知道如何在Go中执行此操作吗?


阅读 358

收藏
2020-07-02

共1个答案

一尘不染

lukad是正确的,您可以设置HTTP_PROXY环境变量,如果这样做,Go将默认使用它。

重击:

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客户端)。

proxyUrl, err := url.Parse("http://proxyIp:proxyPort")
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
2020-07-02