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, а не правераныя публічныя выхадныя ідэнтычнасці ці незалежна правераную даступнасць.

Падобныя артыкулы