Прокси в Python requests: настройка за 5 минут
Библиотека requests — стандарт де-факто для HTTP в Python. Подключение прокси NEONPROXY занимает несколько строк, но детали зависят от протокола: HTTPS-прокси настраивается иначе, чем SOCKS5. В этом гайде — рабочие примеры с авторизацией, ротацией и обработкой типичных ошибок.
Формат данных NEONPROXY
После заказа в кабинете вы получаете строку вида host:port:login:password. Для HTTPS-прокси URL строится так: http://login:password@host:port. Обратите внимание: схема http:// в URL прокси — это нормально даже для HTTPS-трафика; requests использует CONNECT-туннель.
Базовый запрос через HTTPS-прокси
Если ответ приходит с вашим реальным IP — прокси не применился. Проверьте логин, пароль и что порт совпадает с выданным в кабинете.
SOCKS5 с PySocks
Для SOCKS5 установите зависимость: pip install requests[socks]. Формат URL: socks5://login:password@host:port.
SOCKS5 удобен, когда нужен единый туннель для HTTP и нестандартных портов без отдельной настройки на каждый протокол.
Ротация пула адресов
При парсинге распределяйте запросы по списку прокси, чтобы снизить нагрузку на один IP. Простейший round-robin:
Список можно подгружать из API NEONPROXY — см. статью про интеграцию API.
Обработка ошибок
Типичные исключения: requests.exceptions.ProxyError — неверные учётные данные или мёртвый прокси; ConnectTimeout — перегрузка или блокировка; SSLError — редко при корректном HTTPS-прокси, чаще при MITM на стороне сети.
Оборачивайте запросы в retry с экспоненциальной паузой и переключением на следующий адрес из пула. Не делайте больше 3–5 повторов на один URL без смены прокси — иначе усилите блокировку.
Сессии и заголовки
requests.Session() переиспользует соединения и cookies — полезно для многошагового парсинга. Прокси задаётся на сессию один раз:
Не передавайте в заголовках X-Forwarded-For с реальным IP — это снижает анонимность. Подробнее о мифах — в материале про анонимность.
IPv6 в requests
Если прокси выдан на IPv6-адресе, заключите host в квадратные скобки в URL: http://user:pass@[2a01:4f8:...]:8080. Убедитесь, что целевой сайт тоже доступен по IPv6.