Giới hạn tốc độ khi cào dữ liệu: cào nhanh đến đâu là vừa

Cập nhật:

Giới hạn tốc độ (rate limit) khi cào dữ liệu là ngưỡng số request mà website chấp nhận từ một nguồn trong một khoảng thời gian; vượt ngưỡng, bạn nhận lỗi 429, trang CAPTCHA hoặc bị chặn hẳn. Cách cào bền là đi chậm hơn ngưỡng đó: đọc robots.txt và điều khoản, giới hạn số kết nối đồng thời trên mỗi domain, thêm độ trễ ngẫu nhiên, lùi lại theo cấp số nhân khi bị từ chối, và chia tải cho đủ số IP. Bài này giải thích website đo tốc độ theo những gì, cách tự đặt nhịp trong code và cách tính bạn thực sự cần bao nhiêu IP.

Chia tải cào dữ liệu cho nhiều IP riêng

Website đo tốc độ của bạn theo những gì

Nhiều người nghĩ rate limit chỉ tính theo IP, nên cứ thêm IP là cào nhanh hơn. Thực tế website có thể đếm request theo nhiều khoá cùng lúc, và thêm IP chỉ giải quyết được một trong số đó. Hiểu website đang đếm theo khoá nào giúp bạn sửa đúng chỗ thay vì mua thêm proxy vô ích.

Khoá đếmVí dụThêm IP có giúp không
Địa chỉ IPMỗi IP chỉ được một số request mỗi phútCó, chia tải cho nhiều IP
Dải IP hoặc ASNCả một subnet hay một nhà cung cấp hạ tầng bị siết chungÍt, nếu các IP nằm cùng dải
Cookie, phiênMột phiên duyệt quá nhiều trang trong thời gian ngắnKhông, phải giảm nhịp mỗi phiên
Tài khoản, API keyHạn mức request của mỗi tài khoản đăng nhậpKhông, hạn mức gắn với tài khoản
Vân tay trình duyệt, hành viCùng một mẫu header, cùng nhịp đều đặnKhông, phải sửa cách gửi request

Đọc robots.txt, điều khoản và header trước khi cào

Mở https://ten-mien/robots.txt để xem những đường dẫn website không muốn bot truy cập. Một số website còn khai báo Crawl-delay, tức số giây nên chờ giữa hai request; không phải công cụ nào cũng đọc chỉ thị này, nhưng đó là gợi ý rõ ràng nhất về nhịp mà chủ website chấp nhận. Đọc thêm điều khoản sử dụng: có website cấm thu thập tự động, có website cung cấp API chính thức hoặc file dữ liệu tải về, vốn nhanh và ổn định hơn nhiều so với cào HTML.

Khi đã chạy, hãy để ý header phản hồi. Retry-After đi kèm mã 429 hoặc 503 cho biết bao lâu nữa mới nên thử lại. Một số API trả thêm các header dạng X-RateLimit-Remaining hoặc RateLimit-Remaining cho biết còn bao nhiêu request trong cửa sổ hiện tại. Code tốt đọc các header này và tự giảm tốc, thay vì đợi đến khi bị chặn mới phản ứng.

Tự đặt nhịp trong code

Nguyên tắc chung là giới hạn ở hai tầng: số request đồng thời trên mỗi domain và khoảng cách tối thiểu giữa hai request trên cùng một IP. Bắt đầu chậm, theo dõi tỷ lệ lỗi, rồi mới tăng dần.

  • Scrapy: đặt CONCURRENT_REQUESTS_PER_DOMAIN, DOWNLOAD_DELAY và bật AUTOTHROTTLE_ENABLED = True để Scrapy tự giãn nhịp theo độ trễ phản hồi. Xem cách gắn proxy ở trang cài proxy cho Scrapy.
  • Python requests: sau mỗi request trên một IP, chờ time.sleep(base + random.uniform(0, jitter)). Độ trễ ngẫu nhiên tránh nhịp đều như máy.
  • Token bucket: mỗi IP có một xô chứa tối đa N lượt, nạp lại một lượt sau mỗi khoảng cố định; request chỉ được gửi khi xô còn lượt. Cách này cho phép bùng ngắn nhưng giữ tốc độ trung bình ổn định.
  • Giới hạn đồng thời: dùng asyncio.Semaphore hoặc hàng đợi proxy rảnh để mỗi IP chỉ xử lý một request tại một thời điểm.
  • Tách theo domain: nếu cào nhiều website, mỗi domain cần bộ đếm riêng; website nhỏ chịu tải kém hơn nhiều so với sàn lớn.

Backoff: lùi lại khi bị từ chối

Khi nhận 429, 503 hoặc trang thử thách, đừng thử lại ngay. Backoff theo cấp số nhân nghĩa là lần thử lại thứ nhất chờ một khoảng, lần thứ hai gấp đôi, lần thứ ba gấp bốn, kèm một phần ngẫu nhiên để các luồng không cùng thử lại một lúc. Nếu có Retry-After, ưu tiên giá trị đó. Sau vài lần thất bại liên tiếp trên một IP, cho IP đó nghỉ hẳn một thời gian và giảm tốc độ chung của cả job.

Một lỗi phổ biến là chỉ chuyển request bị 429 sang IP khác mà không giảm nhịp. Kết quả là cả nhóm IP lần lượt chạm ngưỡng. Chi tiết về mã lỗi này và cách đọc nó nằm trong bài lỗi 429 Too Many Requests.

Tính số IP bạn cần

Không có con số chung cho mọi website, nên bạn phải tự đo. Chạy thử với một IP ở nhịp chậm, tăng dần cho đến khi bắt đầu thấy 429 hoặc CAPTCHA, rồi lấy khoảng một nửa mức đó làm nhịp an toàn cho mỗi IP. Sau đó áp dụng phép tính đơn giản: số IP cần bằng tổng số request mỗi giờ chia cho số request an toàn của một IP mỗi giờ, làm tròn lên và cộng thêm vài IP dự phòng.

Ví dụ giả định: bạn cần tải 6.000 trang trong 5 giờ, tức 1.200 trang mỗi giờ. Nếu đo được một IP chạy ổn ở khoảng 200 trang mỗi giờ, bạn cần 6 IP, cộng thêm 1 đến 2 IP dự phòng cho lúc có IP phải nghỉ. Nếu kết quả ra quá nhiều IP, hãy xem lại phạm vi: có thật cần tải lại mọi trang mỗi lần không. Bài cần bao nhiêu proxy có thêm cách ước lượng cho các việc khác ngoài cào dữ liệu.

Giảm số request trước khi tăng số IP

  • Dùng API chính thức hoặc sitemap nếu website có, thay vì duyệt từng trang danh mục.
  • Lưu cache và gửi If-Modified-Since hoặc ETag để chỉ tải lại trang đã thay đổi.
  • Chỉ cào trường dữ liệu bạn cần; đừng tải ảnh, CSS, font khi chỉ cần HTML.
  • Lên lịch chạy vào giờ thấp điểm của website đích.
  • Gộp các job trùng nhau để không cào cùng một URL nhiều lần trong ngày.

Proxy phù hợp cho cào dữ liệu có kiểm soát

Với cào dữ liệu công khai, proxy IPv4 datacenter dùng riêng thường là lựa chọn hợp lý: nhanh, không giới hạn băng thông, mỗi IP chỉ một mình bạn dùng nên không bị người khác làm bẩn. Chọn quốc gia của IP theo nội dung bạn cần xem, vì nhiều website trả giá, tồn kho hay kết quả khác nhau theo vị trí. Xem thêm proxy cho cào dữ liệu và kịch bản cào dữ liệu thực tế để chọn cấu hình.

Proxy không phải giấy phép để cào bất cứ thứ gì. Hãy tôn trọng điều khoản website, không thu thập dữ liệu cá nhân trái phép và không gây quá tải cho máy chủ người khác.

Câu hỏi thường gặp

Website có thể chặn dù tôi đã dùng nhiều IP không?

Có. Nếu website đếm theo phiên, tài khoản, vân tay trình duyệt hoặc cả dải IP, thêm IP không đủ. Bạn cần giảm nhịp, sửa header và hành vi, hoặc dùng API chính thức.

robots.txt có bắt buộc phải tuân theo không?

robots.txt là quy ước, không phải rào chắn kỹ thuật, nhưng nó thể hiện ý muốn của chủ website và thường đi cùng điều khoản sử dụng. Tuân theo nó là cách cào có trách nhiệm và giảm rủi ro pháp lý.

Nên đặt độ trễ bao nhiêu giây giữa hai request?

Không có con số chung. Bắt đầu chậm, theo dõi tỷ lệ lỗi và thời gian phản hồi, rồi tăng dần. Nếu robots.txt có Crawl-delay, dùng nó làm mức tối thiểu.

Proxy ISP có giúp cào nhanh hơn không?

Thường không cần. Tốc độ cho phép phụ thuộc nhịp request, không phải loại IP. Proxy ISP chỉ đáng cân nhắc khi website đích chặn riêng dải datacenter.

Băng thông có bị giới hạn khi cào nhiều không?

Proxy IPv4 và ISP của VinaProxy không giới hạn băng thông. Giới hạn bạn cần lo là ngưỡng request của website đích.

Chia tải cào dữ liệu cho nhiều IP riêng

Proxy IPv4 datacenter riêng ở 7 nước, không giới hạn băng thông, IP cố định suốt thời gian thuê, kích hoạt tự động sau khi thanh toán.

Xem bảng giá

Bài viết liên quan

Kiến thức proxy
Lỗi 429 Too Many Requests: vì sao bị và xử lý thế nào
Lỗi 429 Too Many Requests là gì, vì sao gặp khi dùng proxy hay chạy tool, cách đọc Retry-After, viết backoff và phân bổ IP để hết lỗi lâu dài.
Kiến thức proxy
Xoay danh sách proxy trong Python: tự xoay IP tĩnh bằng requests
Cách tự xoay danh sách proxy IP tĩnh trong Python requests: đọc file ip:port:user:pass, xoay vòng, gắn IP theo phiên, retry khi lỗi, kèm code mẫu.
Ứng dụng
Proxy cho web scraping và thu thập dữ liệu
Chọn proxy cào dữ liệu web: IPv4 riêng datacenter cho tốc độ, Static ISP cho web khó tính, không giới hạn băng thông, cùng cách thu thập dữ liệu đúng mực.
Cài đặt proxy
Cách cấu hình và xoay vòng bể proxy trong Python Scrapy
Hướng dẫn gắn danh sách proxy HTTP(S) vào Python Scrapy bằng HttpProxyMiddleware, request.meta['proxy'] và giới hạn CONCURRENT_REQUESTS_PER_IP.
Sản phẩm
Proxy tĩnh (IP tĩnh dân cư ISP) Việt Nam & Mỹ
Mua proxy tĩnh ISP dân cư tại Mỹ và Việt Nam: IP đăng ký nhà mạng dân dụng, mỗi IP chỉ một khách dùng, băng thông không giới hạn. Xem giá và mua ngay.
Sản phẩm
Proxy IPv4 datacenter riêng
Mua, thuê proxy IPv4 datacenter riêng tại Mỹ, Việt Nam, Nhật Bản, Hàn Quốc, Singapore, Anh, Hồng Kông. HTTP(S), băng thông không giới hạn, kích hoạt tự động.
ISP · vietnam
Proxy ISP tĩnh Việt Nam: IP mạng gia đình cho các tài khoản giá trị nhất của bạn
Proxy dân cư tĩnh Việt Nam (ISP tĩnh): proxy IP tĩnh từ nhà mạng dân cư cho shop Shopee chính, TikTok Shop, tài khoản quảng cáo Facebook và Zalo OA.
IPV4 · united states
Proxy IPv4 riêng Mỹ: IP datacenter Hoa Kỳ nhanh, dùng riêng và ổn định
Thuê proxy IPv4 Mỹ dùng riêng cho cào dữ liệu, theo dõi thứ hạng, duyệt quảng cáo và nghiên cứu Amazon. IP tĩnh, 1 người 1 IP, băng thông không giới hạn.