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 फिरवते, सत्यापित सार्वजनिक एक्झिट ओळखी किंवा स्वतंत्रपणे तपासलेली उपलब्धता नाही.

संबंधित लेख