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 به transport در HTTP اجازه می‌دهد برای هر درخواست انتخاب کند. این کار از جایگزینی پیکربندی مشترک درون هر callback OnRequest پرهیز می‌کند.

در این پیاده‌سازی، SetProxyFunc همچنین DisableKeepAlives را روی true قرار می‌دهد. یک *http.Transport موجود را به‌روزرسانی می‌کند، اما نوع transport متفاوت را با یک transport HTTP جدید جایگزین می‌کند. هر رفتار سفارشی RoundTripper را آگاهانه حفظ کنید، نه اینکه فرض کنید باقی می‌ماند.

Collector.Clone backend مربوط به HTTP را به اشتراک می‌گذارد، بنابراین تغییر پروکسی یک کلون می‌تواند آن backend مشترک را تغییر دهد. پیش از کار همروند، مالکیت را روشن کنید. انتخاب نوبتی endpointهای ارائه‌شده را می‌چرخاند، نه هویت‌های خروج عمومی تأییدشده یا دسترس‌پذیری مستقلاً بررسی‌شده را.

مقالات مرتبط