Главная / Сценарии / Веб-скрейпинг
Бесплатные прокси для веб-скрейпинга
Скрейпинг с одного IP быстро приводит к бану. Ротация свежего проверенного списка распределяет запросы по многим IP — вот как это сделать с бесплатным списком, проверяемым каждый час.
Зачем ротировать прокси
Большинство сайтов ограничивают или банят IP, отправляющий слишком много запросов. Пул прокси заставляет каждый запрос (или пакет) выходить с другого адреса, поэтому ни один IP не упирается в лимит. С бесплатными прокси любой может умереть за минуты, поэтому надёжный шаблон — ротация + повтор по многим проверенным прокси, а не опора на один.
Ротация проверенного списка в Python
Этот пример загружает JSON-список (уже отсортированный от быстрых к медленным) и перебирает его, повторяя со следующим прокси при сбое.
import requests
LIST = "https://raw.githubusercontent.com/xyzs996/free-proxy-health-list/main/proxies/all/data.json"
# 1
pool = requests.get(LIST, timeout=15).json()
def scheme(p):
proto = p["protocol"]; host = p["proxy"]
return f"socks5h://{host}" if proto.startswith("socks5") else \
f"socks4://{host}" if proto.startswith("socks4") else f"http://{host}"
def fetch(url):
for p in pool: # 2
px = scheme(p)
try:
r = requests.get(url, proxies={"http": px, "https": px}, timeout=8)
if r.ok:
return r.text
except requests.RequestException:
continue # 3
raise RuntimeError("all proxies failed")
print(fetch("https://httpbin.org/ip")[:200])
Делайте вежливо
- Добавьте задержку с джиттером между запросами (напр. 1-5 с).
- Задайте реалистичный
User-Agent. - Соблюдайте
robots.txtи условия сайта. - Делайте backoff при
429 Too Many Requests. - Периодически обновляйте список — он перепроверяется каждый час.
Собирайте только те данные, которые вам разрешено использовать. Не используйте прокси для обхода контроля доступа или нарушения условий сайта.
Частые вопросы
Годятся ли бесплатные прокси для скрейпинга?
Отлично подходят для небольшого и среднего скрейпинга публичных страниц, тестов и прототипов. Отдельные прокси быстро умирают, поэтому ротируйте и повторяйте по многим.
Как не получить бан по IP?
Ротируйте по запросу, добавляйте задержки и джиттер, используйте реалистичный User-Agent, соблюдайте robots.txt и делайте backoff на 429.