35% Скидка на Резидентские прокси на 9 месяцев — используйте код WING35 при оформлении заказа

Получить предложение

Гайд: как настроить прокси на 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-запросов. Мы разобрали, как настроить подключение, как использовать аутентификацию, как использовать сессии и переменные окружения, а также как использовать ротацию адресов, чтобы избежать блокировок. Кроме того, мы обсудили, как выбирать надёжные прокси и устранять распространенные ошибки. Применяя все эти методы, вы сможете уверенно применять настройку подключения для веб-скрейпинга, тестов или любых других задач. Всегда действуйте этично и соблюдайте правила сайтов, с которыми работаете.

Похожие статьи

Остались вопросы?