Кругавы выбар проксі ў Colly з SetProxyFunc
Выкарыстоўвайце SetProxyFunc для кругавога выбару, улічваючы ўплыў keep-alive, замены transport і скапіяванага 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/")Выкарыстоўвайце github.com/gocolly/colly/v2 і яго пакет proxy у функцыі праграмы, захоўваючы звычайную апрацоўку памылак. Наладзьце селектар да пачатку запытаў або асінхронных наведванняў. Спіс HTTP-проксі дае публічныя кандыдаты для ўваходаў endpoint пераключальніка.
SetProxy выбірае фіксаваны endpoint; SetProxyFunc дазваляе HTTP transport выбіраць для кожнага запыту. Гэта пазбягае замены агульнай канфігурацыі ўнутры кожнага зваротнага выкліку OnRequest.
У гэтай рэалізацыі SetProxyFunc таксама ўсталёўвае DisableKeepAlives у true. Ён абнаўляе існуючы *http.Transport, але замяняе іншы тып transport новым HTTP transport. Захоўвайце любыя карыстальніцкія паводзіны RoundTripper свядома, а не мяркуйце, што яны застануцца.
Collector.Clone агульны HTTP backend, таму змена проксі клона можа змяніць гэты агульны backend. Вызначце ўласнасць перад паралельнай працай. Кругавы выбар чаргуе прадастаўленыя endpoint, а не правераныя публічныя выхадныя ідэнтычнасці ці незалежна правераную даступнасць.