ProxyScrape Python и веб: как получать, проверять и ротировать прокси
ProxyScrape предлагает загружаемые списки прокси и API, но бесплатные списки — это не продакшн-инфраструктура. Вот безопасный рабочий процесс на Python для получения, проверки и ротации прокси, а также что стоит проверять в веб-панели.
ProxyScrape часто ищут вместе с Python, потому что пользователи хотят получать список прокси, тестировать его и ротировать в скрипте. Веб-панель и API пересекаются, но служат разным целям. Это руководство посвящено безопасному рабочему процессу: получить, проверить, ротировать и понимать, когда бесплатные прокси — неподходящий инструмент.
Что вы получаете от ProxyScrape: веб-списки, API и платные пулы
ProxyScrape предоставляет загрузку списков прокси и доступ к API, а также коммерческие прокси-услуги. Точные эндпоинты, протоколы, форматы, лимиты и доступные локации могут меняться, поэтому всегда уточняйте их в своей панели ProxyScrape или в актуальной документации. Не прописывайте жёстко в коде эндпоинт, найденный в старом руководстве, не проверив его.
Бесплатные списки прокси лучше всего подходят для обучения и тестирования. Они обычно непригодны для продакшн-скрапинга, входов в аккаунты или любых чувствительных данных, потому что аптайм, скорость и надёжность сильно различаются.
Получение списка прокси в Python
Начните с сохранения URL API в переменной окружения, а не с добавления его в код.
import os
import requests
API_URL = os.environ['PROXYSCRAPE_API_URL'] # copy from your ProxyScrape dashboard/docs
response = requests.get(API_URL, timeout=15)
response.raise_for_status()
lines = [line.strip() for line in response.text.splitlines() if line.strip()]
print(f'Fetched {len(lines)} proxies')
print(lines[:5])
Если API возвращает JSON, проверьте структуру ответа, прежде чем выбирать поля. Имена полей могут меняться.
data = response.json()
# Adjust this to match the current API response
proxies = [item['proxy'] for item in data.get('proxies', [])]
Проверка прокси, прежде чем они начнут тратить ваше время
Список прокси бесполезен, пока вы его не протестируете. Проверяйте через безобидный эндпоинт, возвращающий IP, и записывайте, какие прокси работают.
import concurrent.futures
import requests
TEST_URL = 'https://api.ipify.org?format=json'
def check(proxy):
# Use http:// for HTTP proxies.
# For SOCKS5, install requests[socks] and use socks5h://host:port.
proxy_url = f'http://{proxy}'
proxies = {'http': proxy_url, 'https': proxy_url}
try:
response = requests.get(TEST_URL, proxies=proxies, timeout=8)
response.raise_for_status()
return proxy, response.json()
except Exception:
return proxy, None
working = []
with concurrent.futures.ThreadPoolExecutor(max_workers=50) as pool:
for proxy, result in pool.map(check, lines[:200]):
if result:
working.append(proxy)
print('OK', proxy, result)
print(f'Working: {len(working)}')
Для прокси SOCKS5 используйте socks5h://host:port, когда нужен удалённый DNS. Для прокси с аутентификацией формат обычно http://user:pass@host:port или socks5h://user:pass@host:port, но уточните формат у провайдера.
Ротация прокси в скрипте Python
Когда у вас есть пул работающих прокси, ротируйте их по предсказуемой стратегии. Ротация на каждый запрос проста, но она может разрывать сессии и вызывать проверки входа.
import itertools
import requests
from requests.adapters import HTTPAdapter
working_proxies = working # from the validator above
proxy_cycle = itertools.cycle(working_proxies)
session = requests.Session()
session.mount('https://', HTTPAdapter(max_retries=2))
urls = [
'https://example.com/page/1',
'https://example.com/page/2',
'https://example.com/page/3',
]
for url in urls:
proxy = next(proxy_cycle)
proxies = {
'http': f'http://{proxy}',
'https': f'http://{proxy}',
}
try:
response = session.get(url, proxies=proxies, timeout=12)
print(response.status_code, proxy, url)
except requests.RequestException as exc:
print('FAILED', proxy, exc)
Если целевому сайту нужна стабильная сессия, используйте липкие сессии (sticky sessions) вместо ротации на каждый запрос. Многие провайдеры реализуют это через ID сессии в имени пользователя. Проверьте документацию провайдера для точного формата; не угадывайте.
Использование веб-панели ProxyScrape
Веб-часть полезна для быстрых проверок:
- Скачайте список в нужном вам формате.
- Фильтруйте по протоколу, например HTTP или SOCKS5, если доступно.
- Фильтруйте по стране или уровню анонимности, если доступно.
- Скопируйте эндпоинт API для автоматизации.
- Проверьте, является ли список бесплатным или привязанным к платному плану.
- Убедитесь, что целевой сайт разрешает тип доступа, который вы планируете.
Если скачанный список устаревает за считанные минуты, это нормально для бесплатных прокси. Относитесь к нему как к расходному материалу.
Этика, безопасность и юридические проверки
- Уважайте условия целевого сайта, robots.txt и лимиты запросов.
- Не передавайте учётные данные, персональные данные или платёжные данные через недоверенные бесплатные прокси.
- Используйте TLS и проверяйте сертификаты.
- Если вы обрабатываете персональные данные, проверьте GDPR, CCPA и другие применимые правила.
- Используйте платные резидентные или дата-центровые прокси, когда вам нужна надёжность и поддержка.
Главное
ProxyScrape можно использовать как из веб-панели, так и из Python, но рабочий процесс важнее источника. Получите актуальный список, проверьте его, ротируйте осознанно и оставьте бесплатные прокси там, где им место: в тестировании и обучении.