Selecție round-robin de proxy în Colly cu SetProxyFunc
Folosiți SetProxyFunc pentru selecția round-robin, ținând cont de efectele asupra keep-alive, înlocuirii transportului și backend-ului 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/")Folosiți github.com/gocolly/colly/v2 și pachetul său proxy în funcția aplicației, păstrând tratarea normală a erorilor. Configurați selectorul înainte de începerea cererilor sau a vizitelor asincrone. Lista de proxy HTTP oferă candidați publici pentru intrările endpoint ale comutatorului.
SetProxy alege un endpoint fix; SetProxyFunc permite transportului HTTP să aleagă pentru fiecare cerere. Astfel se evită înlocuirea configurației partajate în fiecare callback OnRequest.
În această implementare, SetProxyFunc setează și DisableKeepAlives la true. Actualizează un *http.Transport existent, dar înlocuiește un alt tip de transport cu un transport HTTP nou. Păstrați deliberat orice comportament personalizat al RoundTripper în loc să presupuneți că supraviețuiește.
Collector.Clone partajează backend-ul HTTP, așa că schimbarea proxy-ului unui clon poate schimba acel backend partajat. Stabiliți proprietatea înainte de lucrul concurent. Selecția round-robin rotește endpoint-urile furnizate, nu identități de ieșire publice verificate și nici disponibilitatea verificată independent.