SetProxyFunc দিয়ে Colly-র রাউন্ড-রবিন প্রক্সি নির্বাচন
রাউন্ড-রবিন নির্বাচনের জন্য SetProxyFunc ব্যবহার করুন, keep-alive, transport প্রতিস্থাপন ও ক্লোন করা backend-এর প্রভাব মনে রেখে।
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 ঘুরিয়ে দেয়, যাচাই করা পাবলিক exit পরিচয় বা স্বতন্ত্রভাবে পরীক্ষিত উপলব্ধতা নয়।