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

Koristite github.com/gocolly/colly/v2 i njegov paket proxy u funkciji aplikacije, uz uobičajeno rukovanje pogreškama. Konfigurirajte birač prije nego što zahtjevi ili asinkroni posjeti počnu. Popis HTTP proxyja daje javne kandidate za ulaze endpointa preklopnika.

SetProxy bira fiksni endpoint; SetProxyFunc dopušta HTTP transportu da bira po svakom zahtjevu. Time se izbjegava zamjena dijeljene konfiguracije unutar svakog povratnog poziva OnRequest.

U ovoj implementaciji SetProxyFunc također postavlja DisableKeepAlives na true. Ažurira postojeći *http.Transport, ali zamjenjuje drugu vrstu transporta novim HTTP transportom. Namjerno sačuvajte svako prilagođeno ponašanje RoundTrippera umjesto da pretpostavljate da će preživjeti.

Collector.Clone dijeli HTTP backend, pa promjena proxyja klona može promijeniti taj dijeljeni backend. Odredite vlasništvo prije paralelnog rada. Kružni odabir rotira dostavljene endpointe, a ne provjerene javne izlazne identitete ni neovisno provjerenu dostupnost.

Povezani članci