
1. Xoay vòng kèm đếm thất bại
import collections, itertools, requests
proxies = [l.strip() for l in open("proxies.txt") if l.strip()]
failures = collections.Counter()
pool = itertools.cycle(proxies)
def get(url, attempts=10):
for _ in range(attempts):
proxy = next(pool)
if failures[proxy] >= 3:
continue
try:
return requests.get(
url,
proxies={"http": f"http://{proxy}", "https": f"http://{proxy}"},
timeout=8,
)
except requests.RequestException:
failures[proxy] += 1
raise RuntimeError("pool exhausted")Vài lưu ý giúp tiết kiệm thời gian
Đếm số lần hỏng theo từng proxy và bỏ qua những kẻ hỏng nhiều lần chính là thứ biến một danh sách thô thành pool dùng được; không có nó bạn cứ trả giá bằng thời gian chờ cho cùng những mục đã chết. Hãy làm mới tệp theo nhịp phát hành và đặt lại bộ đếm khi đó. Với tải sản xuất không chịu nổi tỷ lệ hỏng này, một điểm cuối xoay vòng được vận hành sẵn là công cụ phù hợp hơn.
Hướng dẫn liên quan
Giới hạn của ảnh chụp công khai
Proxy công khai miễn phí được dùng chung và vận hành bởi các bên không rõ danh tính. Đừng bao giờ gửi mật khẩu, token hay dữ liệu cá nhân qua chúng. Hãy tuân thủ Chính sách Sử dụng Chấp nhận được của GitHub: không spam, không tấn công, không vượt kiểm soát truy cập, không thu thập trái chính sách của trang.
Proxy công khai miễn phí được dùng chung và vận hành bởi các bên không rõ danh tính. Đừng bao giờ gửi mật khẩu, token hay dữ liệu cá nhân qua chúng. Hãy tuân thủ Chính sách Sử dụng Chấp nhận được của GitHub: không spam, không tấn công, không vượt kiểm soát truy cập, không thu thập trái chính sách của trang.