
1. Rotasi dengan pelacakan kegagalan
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")Catatan yang menghemat waktu
Menghitung kegagalan per proxy dan melewati yang berulang kali gagal adalah kunci mengubah daftar mentah menjadi kumpulan yang bisa dipakai; tanpa itu Anda terus membayar timeout untuk entri mati yang sama. Segarkan berkas sesuai irama penerbitan dan setel ulang penghitungnya saat itu. Untuk beban produksi yang tak sanggup menanggung tingkat kegagalan ini, endpoint berputar yang terkelola adalah alat yang lebih tepat.
Panduan terkait
Batas cuplikan publik
Proxy publik gratis dipakai bersama dan dioperasikan pihak yang tidak dikenal. Jangan pernah mengirim kata sandi, token, atau data pribadi melaluinya. Patuhi Kebijakan Penggunaan yang Dapat Diterima GitHub: tanpa spam, tanpa serangan, tanpa melewati kontrol akses, tanpa scraping yang melanggar kebijakan situs.
Proxy publik gratis dipakai bersama dan dioperasikan pihak yang tidak dikenal. Jangan pernah mengirim kata sandi, token, atau data pribadi melaluinya. Patuhi Kebijakan Penggunaan yang Dapat Diterima GitHub: tanpa spam, tanpa serangan, tanpa melewati kontrol akses, tanpa scraping yang melanggar kebijakan situs.