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.

Articole similare