是的,可以在 Golang 中设置多个代理。在使用 net/http
包时,可以通过 http.ProxyFromEnvironment
函数来获取当前系统环境下的代理设置。如果需要设置自定义的代理,可以使用 http.Transport
结构体,并通过 Dial
方法传递一个 ProxyFunc
函数,该函数可以返回代理地址和错误信息。
以下是一个示例代码,演示了如何设置多个代理:
package main
import (
"log"
"net/http"
"net/url"
)
func main() {
// 设置第一个代理
proxyURL1, _ := url.Parse("http://localhost:8080")
transport1 := &http.Transport{
Proxy: http.ProxyURL(proxyURL1),
}
client1 := &http.Client{
Transport: transport1,
}
// 设置第二个代理
proxyURL2, _ := url.Parse("http://localhost:8888")
transport2 := &http.Transport{
Proxy: http.ProxyURL(proxyURL2),
}
client2 := &http.Client{
Transport: transport2,
}
// 使用第一个代理发送请求
resp1, err := client1.Get("http://example.com")
if err != nil {
log.Fatalln(err)
}
defer resp1.Body.Close()
// 使用第二个代理发送请求
resp2, err := client2.Get("http://example.com")
if err != nil {
log.Fatalln(err)
}
defer resp2.Body.Close()
}