TL;DR
Colly chấp nhận một hàm proxy tiêu chuẩn thông qua SetProxyFunc. Sử dụng proxy.RoundRobinProxySwitcher của nó cho việc luân chuyển điểm đầu vào đơn giản, thiết lập độ song song và độ trễ bảo thủ, và ghi lại kết quả mà không cần thông tin xác thực. Giữ một điểm đầu vào cố định cho các phiên trạng thái; chỉ luân chuyển các yêu cầu độc lập, đã được ủy quyền.
Configure a Proxy in Colly
Ví dụ ví dụ về bộ chuyển đổi proxy chính thức của Colly sử dụng RoundRobinProxySwitcher, hỗ trợ các URL proxy HTTP, HTTPS và SOCKS5.
go get github.com/gocolly/colly/v2
package main import ( "fmt" "log" "github.com/gocolly/colly/v2" "github.com/gocolly/colly/v2/proxy" ) func main() { switcher, err := proxy.RoundRobinProxySwitcher( "http://USER:PASS@gate-1.example:8000", "http://USER:PASS@gate-2.example:8000", ) if err != nil { log.Fatal(err) } c := colly.NewCollector( colly.AllowedDomains("example.com"), colly.Async(true), ) c.SetProxyFunc(switcher) c.OnResponse(func(r *colly.Response) { fmt.Printf("status=%d bytes=%d url=%s\n", r.StatusCode, len(r.Body), r.Request.URL) }) c.OnError(func(r *colly.Response, err error) { fmt.Printf("status=%d error=%v url=%s\n", r.StatusCode, err, r.Request.URL) }) c.Visit("https://example.com/authorized-page") c.Wait() }
Thay thế các cổng mẫu bằng các điểm đầu vào proxy dân cư Nstdata đã được ủy quyền của bạn. Lưu trữ thông tin xác thực bên ngoài tệp nguồn.
Mô hình tư duy: Colly kiểm soát hành vi thu thập dữ liệu; proxy thay đổi nguồn gốc mạng. Cả hai đều không thay thế xác thực hoặc kiểm soát tỷ lệ.
Add Bounded Parallelism and Delay
Áp dụng giới hạn trước khi tăng thông lượng:
err := c.Limit(&colly.LimitRule{ DomainGlob: "*example.com*", Parallelism: 4, Delay: 750 * time.Millisecond, RandomDelay: 500 * time.Millisecond, }) if err != nil { log.Fatal(err) }
Nhập time cho đoạn mã này. Đặt các giá trị từ ngân sách yêu cầu được phép của trang web, không phải từ tối đa mà máy của bạn có thể gửi.
Choose Rotation or Sticky Sessions
Luân chuyển vòng tròn là phù hợp cho các trang công cộng độc lập khi cần phân bố vị trí. Các quy trình đăng nhập, giỏ hàng, và điều hướng nhiều bước thường cần cùng một điểm ra và cookie jar. Đối với những điều đó, hãy dành riêng một bộ thu thập hoặc điểm đầu vào proxy cho phiên thay vì luân chuyển giữa chừng.
Nếu một phản hồi trả về 429, hãy tôn trọng Retry-After và giảm lưu lượng. Xem các trang 401, 403, hoặc thách thức như một lý do để xác minh quyền truy cập và tích hợp—không phải là một gợi ý để tăng cường chiến thuật vượt qua.
Production Checklist
- Cho phép các miền mục tiêu và mẫu URL.
- Cấu hình thời gian kết nối và thời gian phản hồi.
- Giới hạn kích thước hàng đợi, độ sâu, trang, số lần thử, và byte phản hồi.
- Ghi lại nhãn proxy, trạng thái, độ trễ, số lần thử lại, và kết quả phân tích.
- Xóa tên người dùng và mật khẩu khỏi các bản ghi.
- Xóa các URL chuẩn trước khi truy cập.
- Dừng tự động khi tỷ lệ lỗi hoặc tỷ lệ chặn vượt quá ngưỡng.
Final Verdict
Đối với việc tích hợp proxy Colly, hãy bắt đầu với RoundRobinProxySwitcher, sau đó thêm các hạn chế miền, tốc độ, thời gian chờ, và xử lý lỗi có thể quan sát. Sử dụng Nstdata khi khối lượng công việc được ủy quyền của bạn cần định tuyến dân cư hoặc quản lý proxy tập trung; sử dụng Nstdata Crawl thay vào đó khi đầu ra trang sạch quan trọng hơn việc kiểm soát từng yêu cầu.
Experience Nstdata — Start Your Free Trial Today
FAQ
Colly có tự động luân chuyển proxy không?
Không cho đến khi bạn cung cấp một hàm proxy. Gói proxy tích hợp cung cấp một bộ chuyển đổi vòng tròn.
Colly có thể sử dụng SOCKS5 không?
Có. Tài liệu về bộ chuyển đổi chính thức liệt kê các URL proxy SOCKS5.
Tại sao luân chuyển lại làm gãy một quy trình thu thập?
Các trang trạng thái có thể ràng buộc cookie hoặc phiên với một danh tính mạng duy nhất. Sử dụng một điểm đầu vào cố định cho toàn bộ quy trình.




