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

Naudokite github.com/gocolly/colly/v2 ir jo proxy paketą programos funkcijoje, išlaikydami įprastą klaidų apdorojimą. Su konfigūruokite selektorių prieš prasidedant užklausoms ar asinchroniniams apsilankymams. HTTP proxy sąrašas teikia viešus kandidatus jungiklio endpoint įvestims.

SetProxy pasirenka fiksuotą endpoint; SetProxyFunc leidžia HTTP transport pasirinkti kiekvienai užklausai. Taip išvengiama bendros konfigūracijos pakeitimo kiekviename OnRequest atgaliniame iškvietime.

Šioje įgyvendinimo versijoje SetProxyFunc taip pat nustato DisableKeepAlives į true. Jis atnaujina esamą *http.Transport, bet kitą transport tipą pakeičia nauju HTTP transport. Sąmoningai išsaugokite bet kokį pasirinktinį RoundTripper elgesį, o ne manykite, kad jis išliks.

Collector.Clone bendrina HTTP backend, todėl pakeitus klono proxy gali pasikeisti tas bendras backend. Prieš lygiagretų darbą nustatykite nuosavybę. Ciklinis pasirinkimas rotuoja pateiktus endpoint, o ne patikrintas viešas išėjimo tapatybes ar nepriklausomai patikrintą prieinamumą.

Susiję straipsniai