跳到正文
本中心目录
代码示例

Go 代理接入示例

使用 net/http、环境变量、Transport 和请求超时完成 HTTP 代理访问。

只只HTTP技术团队维护更新于 2026年7月31日

Go 标准库可以通过 http.Transport.Proxy 使用 HTTP 代理。PROXY_URL 从受控环境注入,代码不保存明文凭据。

Go

Go
package main

import (
  "fmt"
  "net/http"
  "net/url"
  "os"
  "time"
)

func main() {
  proxyURL, err := url.Parse(os.Getenv("PROXY_URL"))
  if err != nil { panic(err) }

  transport := &http.Transport{Proxy: http.ProxyURL(proxyURL)}
  client := &http.Client{Transport: transport, Timeout: 30 * time.Second}
  response, err := client.Get("https://<public-test-host>/ip")
  if err != nil { panic(err) }
  defer response.Body.Close()
  fmt.Println(response.StatusCode)
}

配置

  • 使用 url.Parse 解析代理 URL 并处理错误。
  • 不要把解析后的 URL 输出到日志。

连接

  • 设置客户端整体超时。
  • 响应结束后关闭 Body。

复用

  • 相同代理身份复用 Transport。
  • 配置变化时关闭空闲连接。

错误处理

  • 区分配置解析、网络错误和目标状态。
  • 生产代码为 DNS、拨号和 TLS 增加分层指标。

这篇内容解决了你的问题吗?

反馈只用于改进公开文档,不会提交账号或请求信息。