首页 > 后端开发 > Golang > 正文

如何在 Go 中使用带有自定义传输的代理?

Susan Sarandon
发布: 2024-10-26 05:24:30
原创
667 人浏览过

How to Use a Proxy with a Custom Transport in Go?

Go 程序用于自定义传输的代理使用

在 Go 中,您可以配置标准库的 http.Client 以自动使用基于代理的代理关于环境变量。但是,当使用自定义传输时,不直接支持此功能。

解决方案是利用 http.ProxyFromEnvironment 方法。此方法根据 HTTP_PROXY 和 HTTPS_PROXY 等环境变量返回用于给定请求的代理 URL。

要在 Go 中使用具有自定义传输的代理,请按照以下步骤操作:

  1. 创建自定义 http.Transport 实例:

    <code class="go">tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }</code>
    登录后复制
  2. 使用 ProxyFromEnvironment 设置代理 URL:

    <code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
    登录后复制
  3. 使用自定义传输创建 http.Client:

    <code class="go">client := http.Client{Transport: PTransport}</code>
    登录后复制
  4. 使用客户端发出请求:

    <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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!