Ứng dụng · Web scraping
Proxy cho web scraping
Website giới hạn số request trên mỗi IP: vượt ngưỡng là nhận 429, bị chặn 403 hoặc gặp captcha. Proxy chia tải ra nhiều IP, nhưng chỉ hiệu quả khi đúng cấu hình: giữ IP cho những trang cần phiên đăng nhập, xoay IP cho những lượt thu thập độc lập, và biết lúc nào nên chờ thay vì gửi tiếp. Trang này đưa ra cấu hình RoProxy khuyến nghị cho từng tình huống và một đoạn Python có retry, backoff và xoay IP khi bị chặn.
Vì sao scraper bị chặn
Hầu hết website đếm request theo IP. Một IP gửi quá nhanh sẽ bị trả 429 (Too Many Requests), bị chặn 403 hoặc bị đưa sang trang captcha.
Proxy giúp chia request ra nhiều IP, nhưng không thay được việc thu thập có chừng mực: chỉ lấy dữ liệu công khai, tôn trọng robots.txt, giữ tốc độ hợp lý và dừng lại khi website yêu cầu.
Cấu hình khuyến nghị
Trang cần đăng nhập hoặc giỏ hàng
Dùng session giữ IP để cookie và IP khớp nhau suốt phiên.
Thu thập danh sách nhiều trang
Dùng xoay IP theo chu kỳ, hoặc chia việc cho nhiều session chạy song song.
Nhiều request độc lập, khối lượng lớn
Dùng xoay IP mỗi request (gói Business).
Cần kết quả theo quốc gia
Chọn quốc gia cho session ở gói Pro hoặc Business.
Retry có backoff và xoay IP khi bị chặn
Khi nhận 403 hoặc 429, đoạn code xin IP mới cho session qua API rồi chờ tăng dần trước khi thử lại. Gói Free và Standard có thời gian chờ giữa hai lần xoay; gọi sớm hơn API sẽ trả 429, nên lỗi của lệnh xoay được bỏ qua.
import time
import requests
PROXY = "http://USERNAME:PASSWORD@GATEWAY_HOST:HTTP_PORT"
PROXIES = {"http": PROXY, "https": PROXY}
API = "https://backend-api.ro-proxy.com"
HEADERS = {"Authorization": "Bearer API_KEY"}
def fetch(url: str, retries: int = 4) -> requests.Response:
for attempt in range(retries):
r = requests.get(url, proxies=PROXIES, timeout=30)
if r.status_code not in (403, 429):
return r
# Bị chặn: xin IP mới cho session, rồi chờ tăng dần
requests.post(f"{API}/api/session/SESSION_ID/rotate", headers=HEADERS, timeout=30)
time.sleep(2 ** attempt)
r.raise_for_status()
return rLỗi thường gặp
403 hoặc 429
Website đang chặn IP hiện tại: giảm tốc độ, chờ rồi thử lại, xoay IP nếu cần.
407
Sai username/password hoặc session đã hết hạn. Sao chép lại thông tin kết nối từ dashboard.
Timeout
Tăng timeout, thử lại có backoff; lỗi lặp lại liên tục thì xoay IP.
503 khi gọi API
Kho IP của quốc gia đã chọn tạm hết. Chờ khoảng 30 giây rồi thử lại, hoặc chọn khu vực thay vì quốc gia.
Câu hỏi thường gặp
Scraping nên giữ IP hay xoay IP?
Giữ IP khi cần phiên đăng nhập hoặc giỏ hàng; xoay IP khi thu thập nhiều trang độc lập. Có thể dùng nhiều session, mỗi session một kiểu.
Xoay IP có giúp vượt captcha không?
Không hoàn toàn. IP mới giảm khả năng bị giới hạn theo IP, nhưng captcha còn dựa vào hành vi và dấu vết trình duyệt, nên tốc độ hợp lý vẫn quan trọng nhất.
Có giới hạn số lần xoay IP không?
Gói Free và Standard có thời gian chờ giữa hai lần xoay thủ công; gói Pro và Business thì không. Gọi sớm hơn thời gian chờ, API trả lỗi 429.
Scraping có hợp pháp không?
Tuỳ dữ liệu và điều khoản của từng website. Chỉ thu thập dữ liệu công khai, không thu thập dữ liệu cá nhân trái phép, và tôn trọng robots.txt cùng giới hạn tốc độ.
Trang liên quan
Việt Nam
IP Việt Nam cho gói Pro và Business, giữ IP hoặc xoay IP, qua HTTP hoặc SOCKS5.
Theo dõi giá
Kiểm tra giá công khai theo lịch, với IP Việt Nam và retry có backoff cho sàn thương mại điện tử.
Nghiên cứu thị trường
Thu thập dữ liệu công khai về giá, danh mục và quảng cáo theo vùng để phân tích thị trường.