Crawl dữ liệu web mà không bị chặn: proxy giúp gì và dùng sao cho đúng?
Vì sao crawl nhiều là bị chặn?
Khi bạn bắn quá nhiều request từ cùng một IP, hầu hết website phản ứng ngay: giới hạn tốc độ (HTTP 429), chặn IP (403), hoặc bắt giải CAPTCHA. Lý do đơn giản là hành vi đó chẳng giống một người dùng bình thường chút nào.
Có bốn kiểu chặn hay gặp:
- Giới hạn số request mỗi IP trong một khoảng thời gian.
- Cấm IP tạm thời hoặc vĩnh viễn.
- Bắt CAPTCHA hoặc các thử thách chống bot.
- Chặn theo vị trí địa lý của IP.
Proxy giúp được gì?
Proxy giúp bạn rải request qua nhiều IP khác nhau, nên nhìn từ phía website thì lưu lượng trông giống nhiều người dùng riêng lẻ thay vì một con bot. Có mấy loại chính:
| Loại proxy | Ưu điểm | Nhược điểm | Hợp với |
|---|---|---|---|
| Datacenter | Nhanh, rẻ | Dễ bị nhận diện | Site ít phòng vệ |
| Dân cư (residential) | IP thật, khó chặn | Tốc độ thất thường | Site có chống bot |
| Dân cư xoay (rotating) | Mỗi request một IP mới | Phải quản lý | Crawl quy mô lớn |
| 4G/mobile | Ẩn danh cao nhất | Chi phí cao | Mục tiêu khó |
Với đa số nhu cầu crawl, proxy dân cư xoay là điểm cân bằng tốt giữa tỉ lệ thành công và chi phí.
Dùng sao cho đúng?
Vài nguyên tắc giúp bạn đỡ bị chặn hẳn:
- Xoay IP theo từng request hoặc từng nhóm request.
- Chèn khoảng nghỉ ngẫu nhiên giữa các request, đừng bắn liên tục.
- Đổi User-Agent và header, tránh để lộ một chữ ký cố định.
- Giới hạn số luồng chạy song song trên mỗi IP.
- Tôn trọng robots.txt và chỉ lấy dữ liệu công khai.
Một đoạn Python tối giản với proxy trông như thế này:
proxies = {
"http": "http://user:pass@ip:port",
"https": "http://user:pass@ip:port",
}
r = requests.get("https://example.com/products", proxies=proxies, timeout=20)
Nếu chạy số lượng lớn, bạn nên lấy IP tự động qua API thay vì copy tay. Nhiều dịch vụ trong nước có sẵn API kiểu "lấy proxy mới", trả về IP:port, SOCKS5, thông tin đăng nhập và cả mốc thời gian được phép đổi IP tiếp theo. Ở VN bạn có thể tham khảo tmproxy, nguồn IP dân cư theo phiên khá tiện cho việc này.
Vài lỗi hay mắc
- Dùng đúng một IP cho cả job.
- Crawl với tốc độ phi thực tế, hàng trăm request mỗi giây.
- Dùng datacenter proxy cho site có chống bot mạnh.
- Bỏ qua robots.txt và điều khoản của trang.
- Không xử lý retry và timeout khi lỗi.
Kết
Crawl ổn định không phải chuyện cày thật mạnh, mà là làm cho request của mình trông tự nhiên: xoay IP hợp lý, thêm độ trễ, đổi header và tự động hóa việc lấy proxy. Chọn đúng loại proxy dân cư xoay, cộng thêm vài thói quen ở trên, là bạn đã bớt được phần lớn rủi ro bị chặn.
All rights reserved