Гайд: как настроить прокси на Python (2025)
Использовать Python для направления ваших HTTP-запросов через промежуточный сервер может стать настоящей революцией, когда вам нужно, чтобы весь трафик использовал промежуточный узел. Как использовать прокси python Requests? Все достаточно просто — нужно задать директиву, которая заставит клиент направлять запросы через заданный адрес. Независимо от того, используете ли вы веб-скрейпинг, пытаетесь получить доступ к ресурсам, заблокированным в вашем регионе, или просто используете ради эксперимента с подключением, умение задействовать возможности библиотеки для для настройки переадресации трафика невероятно полезно. Такой подход помогает сохранить анонимность, предотвращает, чтобы сайты использовали блокировку против вас, и даже позволяет настраивать ротацию IP-адресов для большей приватности. В этом гайде мы охватим всё: начиная с того, как настроить подключение, и заканчивая тем, как применить продвинутые приёмы — такие как настроить авторизацию, работать с сессиями, задать переменные окружения, использовать ротацию ip адресов для скрейпинга, использовать лучшие сетевые пулы, применить методы устранения распространённых проблем, а также использовать советы по оптимизации. Кроме того, прокси-серверы применяются не только для обхода блокировок, но и при тестировании сайтов, геолокационных сервисов, анализа цен в маркетплейсах и автоматизации задач, связанных с сетью. Всё это делает их незаменимыми в арсенале любого разработчика.
Опубликовано:
25.04.2025
Время чтения:
10 min
Настройка прокси в Python Requests

Давайте сразу перейдём к отправке HTTP-запросов. Сначала установите библиотеку requests, а затем настройте её так, чтобы все обращения шли через прокси сервер на python. Заодно увидим, как указать имя пользователя и пароль для аутентификации.
Установка библиотеки Requests
Установите библиотеку requests с помощью pip, если она ещё не поставлена:
bash
pip install requests
После установки импортируйте её в свою программу (import requests), чтобы использовать. Убедитесь, что вы работаете в виртуальном окружении — это поможет избежать конфликтов версий библиотек и сделает ваш проект более переносимым.
Базовая конфигурация прокси в Python Requests
Библиотека requests позволяет направлять HTTP-запросы, задав словарь proxies. В этом словаре ключами служат протоколы (‘http’, ‘https’), а значениями — URL. Предположим, сервер доступен по адресу 123.45.67.89:8080; тогда в Python его объявляют так. Здесь словарь proxies передаётся в requests.get(). Он перехватывает запрос, отправляет его к целевому сайту и возвращает ответ. Поскольку наружу выходит IP-адрес, в ответе вы увидите другой адрес, что подтверждает прохождение запроса через промежуточный сервер. Такой способ особенно удобен при написании ботов или при интеграции с внешними API, где важно сохранить стабильность соединения и не превышать лимиты по IP.
python
import requests
# Define proxy server address for HTTP and HTTPS
proxies = {
'http': 'http://<YOUR_PROXY_HERE>:8080',
'https': 'http://<YOUR_PROXY_HERE>:8080'
}
response = requests.get('http://httpbin.org/ip', proxies=proxies)
print(response.text)
Всегда используйте в словаре proxies оба ключа — ‘http’ и ‘https’. Если вы пропустите один из них и затем обратитесь к URL с этим протоколом, запрос пойдёт напрямую.
Аутентификация на прокси (логин и пароль)
Если для подключения требуется авторизация, используйте учётные данные прямо в URL. Синтаксис такой:
perl
http://username:password@proxy_host:proxy_port
# For example, with username myuser and password mypassword:
python
import requests
proxies = {
'http': 'http://myuser:mypassword@<YOUR_PROXY_HERE>:8080',
'https': 'http://myuser:mypassword@<YOUR_PROXY_HERE>:8080'
}
response = requests.get('http://httpbin.org/ip', proxies=proxies)
print(response.status_code)
Мы использовали myuser:mypassword@ в адреcе. Если учётные данные верны, соединение будет установлено и запрос выполнен. При ошибке аутентификации вы получите ответ 407 «Proxy Authentication Required». Убедитесь, что имя пользователя и пароль указаны правильно.
Не рекомендуется хранить логин и пароль в открытом виде в коде. Используйте переменные окружения или шифрованные хранилища для защиты конфиденциальных данных.
Такой подход особенно актуален в продакшн-среде или при развертывании скриптов на сервере, где параметры подключения не должны быть зашиты в исходный код.
Использование Python Requests с различными конфигурациями подключения

Разобравшись с основами, перейдём к особым случаям. Поговорим о том, как настроить постоянную сессию, как задавать параметры подключения через переменные окружения и как работать с SOCKS-соединениями.
Настройка сессии для постоянных соединений
Если вы собираетесь отправлять много запросов через одно и то же подключение, лучше применить объект requests.Session(). Он позволяет один раз указать настройки и не прописывать их в каждом вызове, а также повторно задействовать TCP-соединение, что положительно сказывается на производительности.
python
import requests
session = requests.Session()
session.proxies = {
'http': 'http://<YOUR_PROXY_HERE>:8080',
'https': 'http://<YOUR_PROXY_HERE>:8080'
}
response = session.get('http://httpbin.org/ip')
print(response.text)
В этом примере мы задаём подключение один раз в рамках сессии. Любой запрос, выполненный через session.get() или session.post(), по умолчанию пойдёт через заданный маршрут. Такой подход особенно полезен при веб-скрейпинге, когда нужно, чтобы каждый запрос проходил по одному и тому же маршруту, не повторяя конфигурацию снова и снова.
Использование переменных окружения для настройки прокси
Библиотека Requests автоматически считывает параметры из переменных окружения, поэтому не нужно жёстко прописывать их в коде. Достаточно задать переменные HTTP_PROXY (и при необходимости HTTPS_PROXY) в системе — командой export на Linux/macOS или set в Windows.
bash
export HTTP_PROXY="http://<YOUR_PROXY_HERE>:8080"
export HTTPS_PROXY="http://<YOUR_PROXY_HERE>:8080"
Если вы указали эти переменные в терминале (вместе с сетевыми учётными данными), любой Python-скрипт, который использует библиотеку requests, по умолчанию будет работать через заданное подключение. Например, введя:
python
import requests
response = requests.get('http://httpbin.org/ip')
print(response.text)
При таком подходе будет использоваться прокси-сервер, заданный в переменных окружения, даже если в коде мы не передаём словарь proxies. Это удобно, поскольку позволяет при необходимости включать или отключать его использование, не изменяя сам скрипт.
Работа с HTTP-, HTTPS- и SOCKS-прокси
По умолчанию библиотека requests поддерживает HTTP- и HTTPS-прокси. Чтобы настроить SOCKS-прокси (например, socks5:// для Tor и аналогичных сервисов), необходимо установить дополнительный пакет командой:
bash
pip install requests[socks]
Then you can use a SOCKS proxy by specifying the scheme in the URL:
python
import requests
proxies = {
'http': 'socks5://<YOUR_PROXY_HERE>:1080',
'https': 'socks5://<YOUR_PROXY_HERE>:1080'
}
response = requests.get('http://httpbin.org/ip', proxies=proxies)
print(response.text)
Это позволит организовать трафик через SOCKS5. Если вашему серверу требуются логин и пароль, их можно использовать, добавив прямо в URL. HTTP-прокси библиотека Requests поддерживает «из коробки», а SOCKS-прокси тоже можно использовать, установив дополнительный пакет. Мы уже научились использовать базовые прокси, сессии, переменные окружения и SOCKS-прокси. Далее будем использовать более продвинутый приём — ротацию смену IP для веб-скрейпинга.
Ротация прокси в Python Requests для веб-скрейпинга

Когда вы выполняете веб-скрейпинг, слишком много запросов с одного IP часто приводит к блокировкам. Лекарство — использовать ротацию прокси: менять IP-адрес для каждого запроса. Имея набор Ip адресов в скрипте, вы используете новый IP при каждом обращении, поэтому каждая связь выглядит как пришедшая «из другого места». Это заметно снижает риск блокировки при массовом сборе данных. По сути, регулярная смена IP — главный секрет успешного скрейпинга.
Зачем нужна ротация прокси при веб-скрейпинге
Сайты охотнее метят или замедляют трафик, который идёт с одного и того же IP-адреса с высокой интенсивностью. Когда вы используете ip пул, запросы распределяются по разным IP, и создаётся впечатление, что их отправляют разные люди. Таким образом, постоянное использование разных IP-адресов существенно уменьшает шанс блокировки при работе с большими объёмами данных
Простейший скрипт ротации прокси
Ниже пример, как можно использовать простой список адресов (пусть даже бесплатных) и менять адрес подключения на каждом запросе случайным образом:
python
import requests, random
proxy_list = [
"http://proxy1.example.com:8080",
"http://proxy2.example.com:8080",
"http://proxy3.example.com:8080"
]
for i in range(5):
proxy = random.choice(proxy_list)
proxies = { 'http': proxy, 'https': proxy }
try:
resp = requests.get("http://httpbin.org/ip", proxies=proxies, timeout=5)
print(f"Request {i+1} via {proxy} -> {resp.text}")
except requests.exceptions.ProxyError:
print(f"Proxy {proxy} failed, trying another.")
В каждой итерации цикла ваш код на Python выбирает случайный прокси из proxy_list и использует его для запроса. В ответе вы увидите IP-адрес именно этого прокси. Я добавил таймаут и обработку ошибок на уровне Python, чтобы, если он не отвечает, скрипт пропускал его и пробовал следующий. В рабочем проекте имеет смысл также удалять нерабочие прокси из списка, чтобы они больше не использовались.
Пулы прокси для предотвращения блокировок
Вместо того чтобы самостоятельно использовать и менять прокси в коде, можно подключить сервис ротации с готовым пулом IP-адресов. Такие провайдеры поставляют множество адресов и автоматически выдают новый на каждый запрос. Чем больше адресов в пуле, тем меньше запросов приходится на каждый IP, а значит, вероятность блокировки заметно падает. Распределяя трафик по разным IP-адресам, вы резко снижаете шанс, что какой-то из них окажется заблокирован.
Выбор лучших прокси для Python Requests

При выборе подключения для работы с requests учитывайте несколько факторов.
- Платные vs бесплатные. Бесплатные сервисы легко найти, но они часто медленные, нестабильные или уже занесены в чёрные списки. Платные поставщики предлагают более быстрые и надёжные решения; при серьёзном массовом скрейпинге стоит приобрести стабильный сервис, где есть круглосуточная поддержка.
- Датацентр vs резидентские. Дата-центровые подключения работают быстрее и стоят дешевле, однако сайты легко их узнают и блокируют. Домашние (ISP)-прокси выглядят как трафик реальных пользователей — их сложнее обнаружить, но стоят дороже.
- Удобство и аутентификация. Уточните, какие способы авторизации доступны: логин/пароль или белый список IP. Чем проще подключение (одна точка доступа, единый порт), тем легче интеграция в код.
Устранение проблем при работе с прокси

Даже при правильной настройке прокси могут вызывать ошибки. Ниже самые частые ситуации и их решения.
- Сбои соединения / тайм-ауты. Прокси может быть недоступен или неверно указан в коде. Попробуйте другой адрес.
- Ошибки SSL-сертификата. HTTPS-прокси иногда провоцируют сбой проверки SSL. В режиме отладки можно временно передать verify=False, однако помните: это отключает проверку сертификатов, используйте только для диагностики.
Регулярно проверяйте эти аспекты и корректируйте настройки — так вы сведёте к минимуму проблемы с прокси Python Requests и сможете без лишних препятствий выполнять скрейпинг или API-запросы.
Заключение
Прокси в связке с библиотекой requests позволяют контролировать, какой IP-адрес использовать при отправке HTTP-запросов. Мы разобрали, как настроить подключение, как использовать аутентификацию, как использовать сессии и переменные окружения, а также как использовать ротацию адресов, чтобы избежать блокировок. Кроме того, мы обсудили, как выбирать надёжные прокси и устранять распространенные ошибки. Применяя все эти методы, вы сможете уверенно применять настройку подключения для веб-скрейпинга, тестов или любых других задач. Всегда действуйте этично и соблюдайте правила сайтов, с которыми работаете.
Похожие статьи


