Wybieranie proxy w Colly metodą round-robin z SetProxyFunc
Użyj SetProxyFunc do wyboru round-robin, pamiętając o wpływie keep-alive, wymiany transportu i sklonowanego backendu.
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/")W funkcji aplikacji użyj github.com/gocolly/colly/v2 i jego pakietu proxy, zachowując normalną obsługę błędów. Skonfiguruj selektor, zanim rozpoczną się żądania lub asynchroniczne wizyty. Lista proxy HTTP dostarcza publicznych kandydatów do wejść endpoint przełącznika.
SetProxy wybiera stały endpoint; SetProxyFunc pozwala transportowi HTTP wybierać przy każdym żądaniu. Dzięki temu nie trzeba podmieniać wspólnej konfiguracji w każdym wywołaniu zwrotnym OnRequest.
W tej implementacji SetProxyFunc ustawia też DisableKeepAlives na true. Aktualizuje istniejący *http.Transport, ale inny typ transportu zastępuje nowym transportem HTTP. Świadomie zachowaj wszelkie niestandardowe zachowanie RoundTrippera, zamiast zakładać, że przetrwa.
Collector.Clone współdzieli backend HTTP, więc zmiana proxy klona może zmienić ten wspólny backend. Ustal własność przed równoległą pracą. Wybór round-robin rotuje podane endpointy, a nie zweryfikowane publiczne tożsamości wyjściowe ani niezależnie sprawdzoną dostępność.