在Go中如何设置HTTP代理?
时间: 2024-09-09 17:02:01 浏览: 77
在Go语言中,可以通过`net/http`包提供的`Transport`结构体来设置HTTP代理。下面是具体的步骤和示例代码:
1. 导入`net/http`包。
2. 创建一个`Transport`结构体实例。
3. 使用`Transport`实例的`Proxy`字段设置代理函数。这个函数会为每个请求返回代理URL。
4. 创建`Client`时,使用上面创建的`Transport`实例。
示例代码如下:
```go
package main
import (
"fmt"
"net"
"net/http"
)
func main() {
// 设置环境变量HTTP_PROXY或http_proxy
// os.Setenv("HTTP_PROXY", "http://proxy.example.com:8080")
// 创建一个Transport实例
tr := &http.Transport{
// 这里设置代理,可以是HTTP或SOCKS5代理
Proxy: http.ProxyURL(&url.URL{Scheme: "http", Host: "proxy.example.com:8080"}),
}
// 使用上面创建的Transport实例来创建一个HTTP客户端
client := &http.Client{Transport: tr}
// 发起请求
resp, err := client.Get("http://example.com")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
// 打印响应状态
fmt.Println("Status:", resp.Status)
}
```
在上述代码中,`proxy.example.com:8080`代表代理服务器的地址和端口,你需要根据实际情况进行替换。使用环境变量`HTTP_PROXY`或`http_proxy`也可以设置代理,但这种方法不够灵活,因为它不能针对不同的请求设置不同的代理。
阅读全文