Selecció de proxy round-robin amb SetProxyFunc a Colly
Feu servir SetProxyFunc per a la selecció round-robin, tenint en compte els efectes sobre keep-alive, la substitució del transport i el backend clonat.
collector := colly.NewCollector()
switcher, err := proxy.RoundRobinProxySwitcher(
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
)
if err != nil {
return err
}
collector.SetProxyFunc(switcher)
err = collector.Visit("https://www.example.com/")Utilitzeu github.com/gocolly/colly/v2 i el seu paquet proxy a la funció de l'aplicació, mantenint el tractament normal d'errors. Configureu el selector abans que comencin les peticions o les visites asíncrones. La llista de proxys HTTP proporciona candidats públics per a les entrades d'endpoint del commutador.
SetProxy tria un endpoint fix; SetProxyFunc permet que el transport HTTP triï per cada petició. Això evita substituir la configuració compartida dins de cada callback OnRequest.
En aquesta implementació, SetProxyFunc també posa DisableKeepAlives a true. Actualitza un *http.Transport existent, però substitueix un tipus de transport diferent per un transport HTTP nou. Preserveu deliberadament qualsevol comportament personalitzat de RoundTripper en lloc de suposar que sobreviurà.
Collector.Clone comparteix el backend HTTP, així que canviar el proxy d'un clon pot canviar aquest backend compartit. Determineu la propietat abans de la feina concurrent. La selecció round-robin rota els endpoints proporcionats, no identitats de sortida públiques verificades ni disponibilitat comprovada independentment.