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

Vo funkcii aplikácie použite github.com/gocolly/colly/v2 a jeho balík proxy so zachovaním bežného ošetrenia chýb. Selektor nastavte pred začiatkom požiadaviek alebo asynchrónnych návštev. Zoznam HTTP proxy poskytuje verejných kandidátov pre vstupy endpointov prepínača.

SetProxy volí pevný endpoint; SetProxyFunc umožňuje HTTP transportu voliť pri každej požiadavke. Vyhýba sa nahrádzaniu zdieľanej konfigurácie v každom callbacku OnRequest.

V tejto implementácii SetProxyFunc tiež nastavuje DisableKeepAlives na true. Aktualizuje existujúci *http.Transport, ale iný typ transportu nahrádza novým HTTP transportom. Akékoľvek vlastné správanie RoundTrippera vedome zachovajte, namiesto toho, aby ste predpokladali, že prežije.

Collector.Clone zdieľa HTTP backend, takže zmena proxy klonu môže zmeniť tento zdieľaný backend. Pred súbežnou prácou určte vlastníctvo. Kruhové striedanie otáča dodané endpointy, nie overené verejné výstupné identity alebo nezávisle overenú dostupnosť.

Súvisiace články