Round-Robin-Proxyauswahl in Colly mit SetProxyFunc
SetProxyFunc für die Round-Robin-Auswahl nutzen und dabei Keep-Alive, Transportaustausch und geklontes Backend beachten.
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/")Verwenden Sie github.com/gocolly/colly/v2 und sein proxy-Paket in der Funktion der Anwendung und behalten Sie die normale Fehlerbehandlung bei. Konfigurieren Sie den Selektor, bevor Anfragen oder asynchrone Besuche starten. Die HTTP-Proxy-Liste liefert öffentliche Kandidaten für die Endpunkt-Eingaben des Umschalters.
SetProxy wählt einen festen Endpunkt; SetProxyFunc lässt den HTTP-Transport pro Anfrage wählen. So wird vermieden, die gemeinsame Konfiguration in jedem OnRequest-Callback zu ersetzen.
In dieser Implementierung setzt SetProxyFunc außerdem DisableKeepAlives auf true. Es aktualisiert einen vorhandenen *http.Transport, ersetzt aber einen anderen Transporttyp durch einen neuen HTTP-Transport. Bewahren Sie benutzerdefiniertes RoundTripper-Verhalten bewusst, statt anzunehmen, dass es erhalten bleibt.
Collector.Clone teilt das HTTP-Backend, daher kann eine Proxyänderung eines Klons dieses gemeinsame Backend ändern. Klären Sie die Zuständigkeit vor paralleler Arbeit. Die Round-Robin-Auswahl rotiert die bereitgestellten Endpunkte, nicht verifizierte öffentliche Ausgangsidentitäten oder unabhängig geprüfte Verfügbarkeit.