Golang HTTP.Client代理设置详解
在使用Golang的HTTP.Client时,如何正确设置代理服务器?我尝试通过Transport的Proxy字段配置,但有时会出现连接失败的情况。能否详细说明几种常见的代理设置方法,包括HTTP、HTTPS和SOCKS5代理的配置方式?另外,如何验证代理是否生效,以及遇到代理连接问题时应该如何排查?
2 回复
在Golang中,为http.Client设置代理主要有两种方式:
- 使用http.ProxyURL函数
proxyURL, _ := url.Parse("http://proxy-server:port")
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyURL),
},
}
- 自定义代理选择函数
client := &http.Client{
Transport: &http.Transport{
Proxy: func(req *http.Request) (*url.URL, error) {
// 根据请求动态返回代理
if req.URL.Host == "example.com" {
return url.Parse("http://special-proxy:8080")
}
return http.ProxyFromEnvironment(req)
},
},
}
注意事项:
- 支持HTTP/HTTPS/SOCKS5代理
- 设置后所有请求都走代理
- 记得处理代理认证:
http://user:pass@proxy:port - 可通过环境变量
HTTP_PROXY设置全局代理
示例完整代码约20行,简单实用,适合爬虫、API调用等场景。
更多关于Golang HTTP.Client代理设置详解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


