Free Proxy Health List

Актуальный срез · 3,287 proxies

Собрать пул прокси с ротацией

Рабочий цикл ротации с учётом состояния примерно в 20 строк.

Собрать пул прокси с ротацией

1. Ротация с подсчётом сбоев

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")

Заметки, которые сэкономят время

Подсчёт сбоев по каждому прокси и пропуск постоянных нарушителей — именно это превращает сырой список в пригодный пул; без этого вы снова и снова платите таймаутом за одни и те же мёртвые записи. Обновляйте файл с частотой публикации и сбрасывайте счётчик при обновлении. Для продакшена, где такой процент сбоев неприемлем, лучше подойдёт поддерживаемая ротационная точка входа.

Связанные руководства

Границы публичного среза
Бесплатные публичные прокси общедоступны и управляются неизвестными лицами. Никогда не передавайте через них пароли, токены и персональные данные. Соблюдайте правила допустимого использования GitHub: без спама, атак, обхода контроля доступа и парсинга вопреки правилам сайта.