Round-robin na pagpili ng proxy sa Colly gamit ang SetProxyFunc
Gamitin ang SetProxyFunc para sa round-robin na pagpili, isinasaalang-alang ang mga epekto ng keep-alive, pagpapalit ng transport at na-clone na backend.
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/")Gamitin ang github.com/gocolly/colly/v2 at ang proxy na pakete nito sa function ng aplikasyon, pinananatili ang normal na paghawak ng error. I-configure ang selector bago magsimula ang mga kahilingan o asynchronous na pagbisita. Ang listahan ng HTTP proxy ay nagbibigay ng mga pampublikong kandidato para sa mga input ng endpoint ng switcher.
SetProxy ay pumipili ng fixed endpoint; pinapayagan ng SetProxyFunc ang HTTP transport na pumili bawat kahilingan. Iniiwasan nito ang pagpapalit ng shared configuration sa loob ng bawat callback na OnRequest.
Sa implementasyong ito, itinatakda rin ng SetProxyFunc ang DisableKeepAlives sa true. Ina-update nito ang umiiral na *http.Transport, ngunit pinapalitan ang ibang uri ng transport ng bagong HTTP transport. Sinasadyang pangalagaan ang anumang custom na pag-uugali ng RoundTripper sa halip na ipagpalagay na ito ay mananatili.
Ginagamit na shared ng Collector.Clone ang HTTP backend, kaya ang pagbabago ng proxy ng isang clone ay maaaring magbago ng shared backend na iyon. Tukuyin ang pagmamay-ari bago ang sabay-sabay na trabaho. Ang round-robin na pagpili ay umiikot sa mga ibinigay na endpoint, hindi sa na-verify na pampublikong exit identity o sa independiyenteng sinuri na availability.