Прокси для парсинга на Python: requests, Scrapy, Selenium

Как подключить прокси в Python: примеры для requests, Scrapy и Selenium, ротация IP из пула и правила, чтобы не получить бан при парсинге.

Обновлено: 23 июня 2026 3 мин чтения

Python — главный язык веб-скрапинга: requests, Scrapy и Selenium закрывают почти все задачи сбора данных. Но без прокси любой парсер быстро упирается в бан по IP, капчу и rate-limit. Разберём, как подключить прокси в каждой библиотеке, как организовать ротацию и не получить блокировку — с примерами кода.

Зачем парсеру прокси

  • Обойти лимиты по IP. Сайты считают запросы с одного адреса и при превышении выдают 429/капчу.
  • Гео-доступ. Цены, выдача и контент часто зависят от страны — нужен IP нужного региона.
  • Параллелизм. Пул IP позволяет лить запросы в несколько потоков без бана.
  • Стабильность. Если один IP «лёг», ротация переключит на живой.

Какой прокси выбрать под парсинг

Тип IP подбирается под жёсткость антибота на сайте:

Сайт / задачаТип проксиРотация
Простые сайты, API, каталогиСерверныеПо таймеру / на ошибку
Маркетплейсы, агрегаторыРезидентскиеНа запрос или сессию
Соцсети, антибот-защитаМобильныеПо запросу

Подробнее о различиях — в статье «Мобильные, резидентские и серверные прокси». Готовые тарифы под сбор данных — на странице прокси для парсинга.

requests: подключаем прокси

Базовый способ — словарь proxies с протоколами. Формат строки прокси: schema://login:password@ip:port.

import requests

proxies = {
    "http":  "http://login:password@45.86.1.10:8000",
    "https": "http://login:password@45.86.1.10:8000",
}

r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=15)
print(r.json())  # увидите IP прокси, а не свой

Для SOCKS5 поставьте requests[socks] и используйте схему socks5://. О различиях протоколов — в статье «SOCKS5 или HTTP».

Ротация IP из пула

Если у вас список адресов, выбирайте случайный на каждый запрос — так нагрузка размазывается по пулу:

import random, requests

pool = [
    "http://user:pass@45.86.1.10:8000",
    "http://user:pass@45.86.1.11:8000",
    "http://user:pass@45.86.1.12:8000",
]

def get(url):
    p = random.choice(pool)
    return requests.get(url, proxies={"http": p, "https": p}, timeout=15)
С мобильными прокси PROXYLEET ротация не нужна на стороне кода: один порт сам меняет IP по таймеру или по ссылке. Это проще, чем держать пул из десятков адресов.

Scrapy: middleware для прокси

В Scrapy прокси задаётся через meta или middleware. Простой вариант — прокинуть адрес в каждый запрос:

import scrapy

class PriceSpider(scrapy.Spider):
    name = "prices"
    start_urls = ["https://example.com/catalog"]

    def start_requests(self):
        proxy = "http://user:pass@45.86.1.10:8000"
        for url in self.start_urls:
            yield scrapy.Request(url, meta={"proxy": proxy})

Для автоматической ротации используют пакеты вроде scrapy-rotating-proxies или собственный middleware, который берёт IP из пула и банит «мёртвые» адреса.

Selenium: прокси в браузере

Для динамических сайтов на JS нужен реальный браузер. Прокси без авторизации задаётся аргументом запуска:

from selenium import webdriver

opts = webdriver.ChromeOptions()
opts.add_argument("--proxy-server=http://45.86.1.10:8000")
driver = webdriver.Chrome(options=opts)
driver.get("https://httpbin.org/ip")

Если прокси с логином и паролем, Chrome не принимает их в строке — нужен мини-расширение с авторизацией или антидетект-браузер, который умеет прокси «из коробки».

Как не получить бан: правила

  1. Ставьте задержки и случайный User-Agent — не лейте сотни запросов в секунду с одного IP.
  2. Обрабатывайте 429 и капчу — при их появлении меняйте IP и снижайте темп.
  3. Проверяйте прокси перед работой на скорость и утечки: «Как проверить прокси».
  4. Уважайте robots.txt и не собирайте персональные данные.

Кейс: парсинг цен в 20 потоков

Команда собирала 500 тыс. товаров в сутки и с одного серверного IP ловила бан через 10–15 минут. Перешли на пул резидентских IP с ротацией на каждый запрос и распределением нагрузки: парсер пошёл в 20 потоков без капчи, сбор всего каталога ускорился с 9 часов до 40 минут. Под кабинеты и авторизованные зоны выделили отдельные статичные мобильные IP.

Частые вопросы

Какие прокси лучше для requests и Scrapy?

Для простых сайтов — серверные, для маркетплейсов и агрегаторов — резидентские с ротацией, для соцсетей — мобильные. Выбрать можно на странице прокси для парсинга.

Как сделать ротацию IP в Python?

Либо случайный выбор из пула на каждый запрос, либо мобильный прокси с автосменой IP по таймеру/ссылке — тогда ротацию не нужно писать в коде.

Почему прокси с паролем не работает в Selenium?

Chrome не принимает логин:пароль в --proxy-server. Нужно расширение с авторизацией или антидетект-браузер.

Где взять прокси для парсинга?

В каталоге PROXYLEET или на странице прокси для парсинга — выбирайте тип под жёсткость антибота.

Нужны рабочие прокси под вашу задачу? Мобильные, серверные и резидентские IP, MTProto для Telegram. Оплата картой РФ, СБП и криптой, выдача сразу после оплаты.
Наверх
Нужна помощь? Напишите нам
Чат с поддержкой
Офлайн