
Прокси для парсинга сайтов: как выбрать и настроить
Прокси задаёт внешний IP и сетевой маршрут запросов парсера. Для выбора важны доступность целевого сайта, регион, длительность сессии и стоимость полученных данных. Ниже разберём типы прокси, ротацию, настройку Python Requests и проверку ошибок.
Начните с одного разрешённого сценария сбора данных и небольшого набора страниц. Сначала проверьте содержимое ответа, затем увеличивайте объём. Прокси не гарантирует отсутствие ограничений со стороны сайта.
Какой прокси нужен вашему парсеру
| Сценарий | С чего начать проверку |
|---|---|
| Доступные публичные страницы, один регион | Датацентровый прокси и ограниченная частота запросов |
| Длительная авторизованная сессия | Постоянный ISP-адрес или sticky-сессия |
| Независимые запросы из разных регионов | Резидентский пул с подходящими локациями |
| Проверка контента в сети мобильного оператора | Мобильный прокси |
| Данные доступны через официальный API | Сначала оценить API и его лимиты |
Сравнивайте решения на одинаковых страницах и настройках клиента. HTTP 200 не всегда означает успех: сервер может вернуть форму входа или проверочную страницу.
Что меняет прокси при веб-скрапинге
Парсер подключается к промежуточному серверу, который передаёт запрос к сайту. Сайт обычно видит выходной IP этого соединения. cookies, авторизация и признаки клиента могут сохраняться.
Прокси полезен для проверки региональных версий сайта и управления сетевыми выходами. Он не выполняет JavaScript за ваш скрипт, не исправляет CSS-селекторы и не даёт автоматического доступа к закрытым данным.
IPv4 и IPv6
Проверьте совместимость всей цепочки: парсер, вход прокси и целевой ресурс. Прокси с выходом только по IPv6 не откроет ресурс, доступный лишь по IPv4, если сервис не предоставляет подходящий механизм перехода.

Версия IP не определяет тип адреса, его репутацию или наличие шифрования. Перед массовой загрузкой проверьте конкретный целевой домен.
HTTP, HTTPS и SOCKS5
HTTP-прокси подходит для обычных веб-запросов и может создавать туннель CONNECT к HTTPS-сайту. HTTPS-прокси дополнительно использует TLS на участке от клиента до самого прокси, если обе стороны поддерживают этот режим.
SOCKS5 передаёт соединение на транспортном уровне и сам по себе не шифрует данные. Поддержка UDP зависит от клиента и сервиса. Для Requests режим SOCKS требует дополнительного пакета.
Выбирайте протокол, который указан для выданного входа. Изменение префикса адреса в коде не превращает HTTP-сервер в SOCKS5.
Типы прокси для парсинга
Датацентровые
Адреса серверной инфраструктуры подходят для проверки доступных страниц и контролируемой нагрузки. Оценивайте задержку и долю нужных ответов. Некоторые сайты ограничивают такие диапазоны.
ISP
ISP-продукт подходит, когда требуется стабильный адрес с провайдерской принадлежностью. Условия постоянства, срок аренды и замены зависят от тарифа.
Резидентские
Резидентский пул даёт выходы через адреса пользовательских подключений. Он полезен для региональных проверок. Учитывайте расход трафика и правила ротации или sticky-сессии.
Мобильные
Выход через сеть мобильного оператора нужен для соответствующего сетевого сценария. Он не превращает настольный браузер в мобильное приложение.
Происхождение IP, общий или индивидуальный доступ и режим ротации описываются отдельно. Подробное сравнение есть в обзоре типов прокси.
Ротация и sticky-сессия
Для независимых запросов можно использовать смену IP. Для последовательности с авторизацией, cookies и корзиной обычно нужен один выходной адрес на время сессии.
Ротация может происходить по новому соединению, интервалу или явной команде. Это зависит от сервиса. Новая HTTP-операция не обязательно означает новый IP: клиент может повторно использовать соединение.
Sticky-сессия закрепляет выход на предусмотренный сервисом срок. Если узел недоступен, условия замены зависят от продукта. Сохраняйте идентификатор сессии и cookies для связанных действий.
Пример Python Requests
Установите Requests в окружение проекта:
python -m pip install requests
Пример делает один запрос через HTTP-прокси. Введите хост, порт и реквизиты из кабинета. При авторизации по IP оставьте логин пустым.
from getpass import getpass
from urllib.parse import quote
import requests
endpoint = input("Хост и порт HTTP-прокси: ").strip()
username = input("Логин или пустая строка: ").strip()
credentials = ""
if username:
password = getpass("Пароль: ")
credentials = quote(username, safe="") + ":" + quote(password, safe="") + "@"
proxy_url = "http" + "://" + credentials + endpoint
proxies = dict(http=proxy_url, https=proxy_url)
try:
response = requests.get(
"https://proxywing.com/ru/",
proxies=proxies,
timeout=(10, 30),
allow_redirects=False,
)
print("HTTP:", response.status_code)
print("Content-Type:", response.headers.get("Content-Type"))
response.raise_for_status()
print(response.text[:200])
except requests.exceptions.ProxyError:
print("Не удалось подключиться через прокси. Проверьте адрес и авторизацию.")
except requests.exceptions.Timeout:
print("Превышено время ожидания соединения или ответа.")
except requests.exceptions.RequestException:
print("Запрос завершился сетевой ошибкой или ошибочным HTTP-статусом.")
В примере один сервер задаётся для обеих схем. Строка https в словаре относится к адресу целевого сайта. Пароль кодируется для размещения в URL и не записывается в исходник.
Тайм-ауты 10 и 30 секунд относятся к соединению и ожиданию данных; это не общий предел времени всей загрузки. Для больших ответов добавьте потоковое чтение и лимит размера. Редиректы отключены, чтобы сначала увидеть фактический ответ.
Для ротационного шлюза используйте его реквизиты. Частота смены IP определяется правилами шлюза и сессии. Автоматические повторные попытки намеренно не добавлены: сначала нужно определить причину ошибки.

Как снизить число неуспешных запросов
Используйте доступный API, кэшируйте уже полученные данные и ограничьте параллельность. Согласуйте частоту запросов с условиями источника. robots.txt содержит правила обхода для роботов, но не заменяет условия доступа.
При 429 снизьте нагрузку и учитывайте Retry-After, если он есть. При 401 или 403 проверьте авторизацию и права доступа. Бесконечное переключение IP не исправляет эти причины.
Для повторных попыток задайте максимальное число, задержку с увеличением интервала и журнал результата. Не меняйте случайным образом все заголовки внутри одной авторизованной сессии: это может нарушить её согласованность.
Как считать бюджет
Оценивайте стоимость полезного результата: расходы на прокси и загрузку разделите на число страниц, из которых действительно извлечены нужные данные.
Например, при условных расходах 20 единиц и 8 000 пригодных страницах стоимость составляет 0,0025 единицы за страницу. Это расчётный пример, он не описывает тариф ProxyWing.
Отдельно измеряйте повторные запросы, редиректы, загрузку изображений и работу браузера. Сохранение ответов и устранение повторов часто снижают расход сильнее, чем выбор самой низкой цены за IP.
Когда нужен headless-браузер
Если данные появляются после выполнения JavaScript, сначала проверьте, существует ли доступный API или разрешённый сетевой запрос, возвращающий эти данные. Если нужен полноценный браузер, используйте Playwright, Puppeteer или Selenium с подходящей конфигурацией прокси.
Ожидайте конкретный элемент или ответ, необходимый для вашей задачи. Факт загрузки страницы ещё не означает готовность данных. Браузер обычно потребляет больше ресурсов и трафика, поэтому его стоит включать для тех страниц, где он нужен.
Частые ошибки прокси при парсинге
| Симптом | Следующий шаг |
|---|---|
| 407 или отказ CONNECT | Проверить авторизацию прокси, порт и разрешённый IP |
| Ошибка DNS | Проверить имя шлюза и способ разрешения имени сайта |
| Тайм-аут | Проверить доступность, нагрузку и время ожидания |
| 403 | Проверить права, политику сайта и тело ответа |
| 429 | Снизить частоту и учесть Retry-After |
| 200, но нет данных | Проверить страницу входа, JavaScript и селекторы |
| Ошибка XML или JSON | Сравнить ожидаемый формат с фактическим ответом |
Не выводите URL с паролем в журнал. Сохраняйте статус, время запроса, размер ответа и обезличенный идентификатор настройки.

Как проверить прокси перед масштабированием
- Подготовьте небольшой набор типичных страниц.
- Зафиксируйте клиент, тайм-ауты, регион и параллельность.
- Выполните запросы через выбранный продукт.
- Проверьте содержимое и количество извлечённых записей.
- Измерьте задержку, расход и долю пригодных ответов.
- Увеличивайте нагрузку постепенно в допустимых пределах.
Уточните у сервиса правила авторизации, ротации, длительность сессии, ограничения трафика и порядок замены недоступного выхода. Универсального типа прокси с гарантированным результатом для всех сайтов нет.
Где купить прокси для парсинга
Выберите прокси для парсинга в ProxyWing под свой клиент и регион. Для постоянного адреса сравните ISP-прокси. Для разных выходных IP и локаций используйте резидентский пул.
Для резидентских прокси действует промокод WINGRESI10: скидка 10% на резидентские прокси ProxyWing.
Перед рабочей загрузкой проверьте один запрос, затем небольшой набор страниц. Для связанных действий сохраните параметры sticky-сессии.

Что проверить после получения ответа
Успешное подключение к прокси подтверждает только сетевой этап. Проверьте статус, формат ответа и нужные поля. Для XML продолжите по примеру парсинга XML в Python, а при ошибке разбора используйте диагностику Python, XML и JSON.
Статью написал:
Руководитель продукта и операций поддержки
Максимилиан выстроил службу поддержки Proxywing с нуля, превратив разрозненные процессы в структурированный, самостоятельный отдел с задокументированными рабочими процессами, чёткими путями эскалации и стабильным качеством сервиса. Сегодня он выступает связующим звеном между CEO и инженерными командами, переводя бизнес-приоритеты в конкретные задачи и обеспечивая своевременную реализацию проектов, связанных с прокси-инфраструктурой. Академическая база в области психологии — с формальной подготовкой в методологии исследований и анализе данных — усиливает его подход к проектированию процессов и интерпретации обратной связи от пользователей. Вне работы Максимилиан исследует пересечения человеческого поведения, принятия решений и продуктового мышления.
Все статьи автора (68)

