Go 代理接入示例
使用 net/http、环境变量、Transport 和请求超时完成 HTTP 代理访问。
只只HTTP技术团队维护更新于 2026年7月31日
Go 标准库可以通过 http.Transport.Proxy 使用 HTTP 代理。PROXY_URL 从受控环境注入,代码不保存明文凭据。
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 增加分层指标。
这篇内容解决了你的问题吗?
反馈只用于改进公开文档,不会提交账号或请求信息。