我可以使用具有以下代码的特定代理使用net / http包发出get请求:
proxyURL, err := url.Parse("http://111.222.333.444:80")
if err != nil {
fmt.Println("Bad proxy URL", err)
return
}
client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)}}
req, _ := http.NewRequest("GET", "https://www.google.com", nil)
res, err := client.Do(req)
if err != nil {
fmt.Println("Error")
}
else {
defer res.Body.Close()
respBody, _ := ioutil.ReadAll(res.Body) //read the response
fmt.Println(string(respBody))
}
阅读docs表示
ProxyURL返回始终返回相同URL的代理函数(用于传输)。
但是,在同一个线程中使用不同的代理服务器后,我又该如何发出另一个get请求呢?我应该使用其他代理设置创建另一个Transport对象吗?但我发现这种方式非常慢。我正在寻找的是重用Transport和Client对象,并仅更改代理URL。
最好的方法是什么?