Selección round-robin de proxy en Colly con SetProxyFunc
Use SetProxyFunc para a selección round-robin, tendo en conta os efectos sobre keep-alive, a substitución do transporte e o backend clonado.
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/")Use github.com/gocolly/colly/v2 e o seu paquete proxy na función da aplicación, mantendo o tratamento normal de erros. Configure o selector antes de que comezas as peticións ou as visitas asíncronas. A lista de proxies HTTP fornece candidatos públicos para as entradas de endpoint do conmutador.
SetProxy escolle un endpoint fixo; SetProxyFunc permite que o transporte HTTP escolla por petición. Así evítase substituír a configuración compartida dentro de cada callback OnRequest.
Nesta implementación, SetProxyFunc tamén pon DisableKeepAlives en true. Actualiza un *http.Transport existente, pero substitúe outro tipo de transporte por un transporte HTTP novo. Preserve deliberadamente calquera comportamento personalizado de RoundTripper en vez de supoñer que sobrevivirá.
Collector.Clone comparte o backend HTTP, así que cambiar o proxy dun clon pode cambiar ese backend compartido. Determine a propiedade antes do traballo concorrente. A selección round-robin rota os endpoints fornecidos, non identidades de saída públicas verificadas nin dispoñibilidade comprobada de forma independente.