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/")

Usate github.com/gocolly/colly/v2 e il suo pacchetto proxy nella funzione dell'applicazione, mantenendo la normale gestione degli errori. Configurate il selettore prima che inizino le richieste o le visite asincrone. L'elenco di proxy HTTP fornisce candidati pubblici per gli input endpoint dello switcher.

SetProxy sceglie un endpoint fisso; SetProxyFunc consente al transport HTTP di scegliere per ogni richiesta. Così si evita di sostituire la configurazione condivisa dentro ogni callback OnRequest.

In questa implementazione, SetProxyFunc imposta anche DisableKeepAlives su true. Aggiorna un *http.Transport esistente, ma sostituisce un diverso tipo di transport con un nuovo transport HTTP. Preservate deliberatamente qualsiasi comportamento personalizzato di RoundTripper invece di dare per scontato che sopravviva.

Collector.Clone condivide il backend HTTP, quindi cambiare il proxy di un clone può cambiare quel backend condiviso. Stabilite la proprietà prima del lavoro concorrente. La selezione round-robin ruota gli endpoint forniti, non le identità di uscita pubbliche verificate né la disponibilità controllata in modo indipendente.

Articoli correlati