Go 程序用于自定义传输的代理使用
在 Go 中,您可以配置标准库的 http.Client 以自动使用基于代理的代理关于环境变量。但是,当使用自定义传输时,不直接支持此功能。
解决方案是利用 http.ProxyFromEnvironment 方法。此方法根据 HTTP_PROXY 和 HTTPS_PROXY 等环境变量返回用于给定请求的代理 URL。
要在 Go 中使用具有自定义传输的代理,请按照以下步骤操作:
创建自定义 http.Transport 实例:
<code class="go">tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }</code>
使用 ProxyFromEnvironment 设置代理 URL:
<code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
使用自定义传输创建 http.Client:
<code class="go">client := http.Client{Transport: PTransport}</code>
使用客户端发出请求:
<code class="go">resp, err := client.Get(url)</code>
这里是代码演示此方法的示例:
<code class="go">package main import ( "fmt" "io/ioutil" "net/http" ) func main() { var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment} client := http.Client{Transport: PTransport} resp, err := client.Get("https://jsonplaceholder.typicode.com/todos/1") if err != nil { panic(err) } bodyBytes, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Printf("GET Response = %s \n", string(bodyBytes)) }</code>
请记住为您的代理服务器适当设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量。
以上是如何在 Go 中使用带有自定义传输的代理?的详细内容。更多信息请关注PHP中文网其他相关文章!