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/")

Gunakan github.com/gocolly/colly/v2 dan pakej proxy-nya dalam fungsi aplikasi, sambil mengekalkan pengendalian ralat biasa. Konfigurasikan pemilih sebelum permintaan atau lawatan tak segerak bermula. Senarai proksi HTTP menyediakan calon awam untuk input endpoint pensuis.

SetProxy memilih endpoint tetap; SetProxyFunc membenarkan transport HTTP memilih bagi setiap permintaan. Ini mengelakkan penggantian konfigurasi kongsi di dalam setiap callback OnRequest.

Dalam pelaksanaan ini, SetProxyFunc juga menetapkan DisableKeepAlives kepada true. Ia mengemas kini *http.Transport sedia ada, tetapi menggantikan jenis transport lain dengan transport HTTP baharu. Kekalkan sebarang tingkah laku RoundTripper tersuai secara sengaja dan bukan menganggap ia akan bertahan.

Collector.Clone berkongsi backend HTTP, jadi menukar proksi klon boleh menukar backend kongsi itu. Tetapkan pemilikan sebelum kerja serentak. Pemilihan round-robin memutarkan endpoint yang dibekalkan, bukan identiti keluar awam yang disahkan atau ketersediaan yang diperiksa secara bebas.

Artikel berkaitan