Go 代理接入示例
使用 net/http、环境变量、Transport 和请求超时完成 HTTP 代理访问。
只只HTTP技术团队维护更新于 2026年9月20日
Go 标准库可以通过 http.Transport.Proxy 使用 HTTP 代理。账密网关固定为 us.zzhttp.com:7878,代码从环境读取凭据。
Go
package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
username, password := os.Getenv("PROXY_USERNAME"), os.Getenv("PROXY_PASSWORD")
if username == "" || password == "" { panic("代理凭据缺失") }
proxyURL, err := url.Parse("http://us.zzhttp.com:7878")
if err != nil { panic(err) }
proxyURL.User = url.UserPassword(username, password)
transport := &http.Transport{Proxy: http.ProxyURL(proxyURL)}
client := &http.Client{Transport: transport, Timeout: 30 * time.Second}
response, err := client.Get("https://ipinfo.io/json")
if err != nil { panic(err) }
defer response.Body.Close()
fmt.Println(response.StatusCode)
if _, err := io.Copy(os.Stdout, response.Body); err != nil { panic(err) }
}
配置
- 使用
url.Parse解析固定网关,再从PROXY_USERNAME和PROXY_PASSWORD注入凭据。 - 不要把解析后的 URL 输出到日志。
连接
- 设置客户端整体超时。
- 响应结束后关闭 Body。
复用
- 相同代理身份复用 Transport。
- 配置变化时关闭空闲连接。
错误处理
- 区分配置解析、网络错误和目标状态。
- 生产代码为 DNS、拨号和 TLS 增加分层指标。
这篇内容解决了你的问题吗?
反馈只用于改进公开文档,不会提交账号或请求信息。