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.

Ähnliche Artikel