Golang設(shè)置代理的3種實(shí)現(xiàn)方式及動態(tài)輪換技巧
proxyURL, _ := url.Parse("http://proxy.example.com:8080") transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL)
} client := &http.Client{Transport: transport}
type ProxySelector struct {
proxies []*url.URL
mu sync.RWMutex
}
func (p ProxySelector) Next() url.URL {
p.mu.RLock()
defer p.mu.RUnlock()
return p.proxies[rand.Intn(len(p.proxies))]
}
// 在Transport中動態(tài)切換 transport := &http.Transport{
Proxy: func(req *http.Request) (*url.URL, error) {
return proxySelector.Next(), nil
}
}
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由皇冠云發(fā)布,如需轉(zhuǎn)載請注明出處。