Sélection de proxy en round-robin avec SetProxyFunc dans Colly
Utilisez SetProxyFunc pour une sélection en round-robin, en gardant à l'esprit les effets sur le keep-alive, le remplacement du transport et le backend cloné.
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/")Utilisez github.com/gocolly/colly/v2 et son paquet proxy dans la fonction de l'application, en conservant la gestion normale des erreurs. Configurez le sélecteur avant le démarrage des requêtes ou des visites asynchrones. La liste de proxys HTTP fournit des candidats publics pour les entrées d'endpoint du commutateur.
SetProxy choisit un endpoint fixe ; SetProxyFunc laisse le transport HTTP choisir à chaque requête. Cela évite de remplacer la configuration partagée dans chaque rappel OnRequest.
Dans cette implémentation, SetProxyFunc met aussi DisableKeepAlives à true. Il met à jour un *http.Transport existant, mais remplace un autre type de transport par un nouveau transport HTTP. Préservez délibérément tout comportement personnalisé de RoundTripper au lieu de supposer qu'il survivra.
Collector.Clone partage le backend HTTP, donc changer le proxy d'un clone peut modifier ce backend partagé. Fixez la propriété avant tout travail concurrent. La sélection en round-robin fait tourner les endpoints fournis, pas les identités de sortie publiques vérifiées ni une disponibilité contrôlée indépendamment.