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

Käytä github.com/gocolly/colly/v2-pakettia ja sen proxy-pakettia sovelluksen funktiossa ja säilytä tavallinen virheenkäsittely. Määritä valitsin ennen kuin pyynnöt tai asynkroniset vierailut alkavat. HTTP-välityspalvelinluettelo tarjoaa julkisia ehdokkaita vaihtajan endpoint-syötteiksi.

SetProxy valitsee kiinteän endpointin; SetProxyFunc antaa HTTP-transportin valita pyyntökohtaisesti. Näin vältetään jaetun kokoonpanon korvaaminen jokaisen OnRequest-takaisinkutsun sisällä.

Tässä toteutuksessa SetProxyFunc asettaa myös DisableKeepAlives-arvon todeksi. Se päivittää olemassa olevan *http.Transport, mutta korvaa eri transport-tyypin uudella HTTP-transportilla. Säilytä mahdollinen mukautettu RoundTripper-käyttäytyminen tarkoituksella sen sijaan, että olettaisit sen säilyvän.

Collector.Clone jakaa HTTP-backendin, joten kloonin välityspalvelimen muuttaminen voi muuttaa tuota jaettua backendia. Sovita omistajuus ennen samanaikaista työtä. Vuorottelu kiertää annettuja endpointteja, ei vahvistettuja julkisia lähtöidentiteettejä tai itsenäisesti tarkistettua saatavuutta.

Aiheeseen liittyvät artikkelit