Chọn proxy vòng lặp trong Colly với SetProxyFunc
Dùng SetProxyFunc cho việc chọn vòng lặp, lưu ý các tác động của keep-alive, thay thế transport và backend đã nhân bản.
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/")Dùng github.com/gocolly/colly/v2 và gói proxy của nó trong hàm của ứng dụng, giữ nguyên cách xử lý lỗi thông thường. Cấu hình bộ chọn trước khi các yêu cầu hoặc lượt truy cập bất đồng bộ bắt đầu. Danh sách proxy HTTP cung cấp các ứng viên công khai cho đầu vào endpoint của bộ chuyển.
SetProxy chọn một endpoint cố định; SetProxyFunc cho phép transport HTTP chọn theo từng yêu cầu. Cách này tránh việc thay thế cấu hình dùng chung bên trong mỗi callback OnRequest.
Trong cách triển khai này, SetProxyFunc cũng đặt DisableKeepAlives thành true. Nó cập nhật một *http.Transport hiện có, nhưng thay thế loại transport khác bằng một transport HTTP mới. Hãy chủ động giữ lại mọi hành vi RoundTripper tùy chỉnh thay vì giả định rằng nó sẽ tồn tại.
Collector.Clone dùng chung backend HTTP, nên việc đổi proxy của một bản sao có thể thay đổi backend dùng chung đó. Xác định quyền sở hữu trước khi làm việc đồng thời. Việc chọn vòng lặp luân phiên các endpoint được cung cấp, không phải danh tính thoát công khai đã xác minh hay khả dụng được kiểm tra độc lập.