اختيار بروكسي Colly بالتناوب مع SetProxyFunc
استخدم 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 مرشّحين عامّين لمدخلات نقاط نهاية المبدّل.
يختار SetProxy نقطة نهاية ثابتة؛ أما SetProxyFunc فيتيح لـ transport الخاص بـ HTTP الاختيار عند كل طلب. وهو يتجنّب استبدال الإعدادات المشتركة داخل كل دالة OnRequest.
في هذا التنفيذ، يضبط SetProxyFunc أيضًا DisableKeepAlives على true. يحدّث *http.Transport موجودًا، لكنه يستبدل نوع transport مختلف بـ transport HTTP جديد. احتفظ بأي سلوك مخصّص لـ RoundTripper عن قصد بدلًا من افتراض بقائه.
يشترك Collector.Clone في الـ backend الخاص بـ HTTP، لذا قد يغيّر تغيير بروكسي النسخة ذلك الـ backend المشترك. احسم الملكية قبل العمل المتزامن. اختيار التناوب يبدّل نقاط النهاية المقدّمة، لا هويات الخروج العامة المتحقَّق منها ولا التوافر المفحوص بشكل مستقل.