3 回答
TA贡献1828条经验 获得超4个赞
您可以修改选择Proxy函数,以便保存选定的代理。为此,您可以将 chooseProxy func 转换为一种类型的方法,该方法将用作要保留的信息的存储:
type proxySelector string
func (sel *proxySelector) chooseProxy(request *http.Request) (*url.URL, error) {
proxies := []string{"proxy1", "proxy2", "proxy3"}
proxyToUse := proxies[rand.Intn(len(proxies))]
*sel = proxySelector(proxyToUse) // <-----
return url.Parse(proxyToUse)
}
func main() {
var proxy proxySelector
transport := &http.Transport{Proxy: proxy.chooseProxy} // <-----
client := http.Client{Transport: transport}
request, err := http.NewRequest(http.MethodGet, "https://www.google.com", nil)
checkErr(err)
// How to know here which proxy was used? Suppose the same client will perform several requests to different URL's.
response, err := client.Do(request)
checkErr(err)
dump, _ := httputil.DumpRequest(response.Request, false)
fmt.Println(dump)
fmt.Println("Proxy:", string(proxy)) // <-----
}
TA贡献1744条经验 获得超4个赞
TA贡献1829条经验 获得超13个赞
包含目标 URI 的请求作为参数提供给 。因此,您可以在函数中已经拥有正确的映射,您只需要检查vs。 那里。request
chooseProxy
chooseProxy
proxyToUse
request.URL
如果您并不真正信任此映射实际完成的代码,则需要查看代码外部。例如,您可以使用Wireshark查看实际的网络流量,以查看访问哪个代理。
- 3 回答
- 0 关注
- 100 浏览
添加回答
举报