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 घुमाता है, सत्यापित सार्वजनिक एग्ज़िट पहचान या स्वतंत्र रूप से जाँची गई उपलब्धता नहीं।

संबंधित लेख