Сменить язык
Русский English Deutsch Español Français Italiano Українська Tiếng Việt Türkçe Bahasa Indonesia हिन्दी 日本語 中文
Меню
Цены
Прокси
ТИПЫ ПРОКСИ
ПО ЛОКАЦИЯМ77 локации
Решения
Ресурсы

Как использовать прокси в Python requests

Направьте requests через один статический ISP-адрес: один IP в сети названного интернет-провайдера, закреплённый за вами на оплаченный период. Код ниже перед публикацией проверили на прокси с аутентификацией.

Коротко: Передайте словарь proxies с ключами http и https, каждому из которых задано http://USERNAME:PASSWORD@HOST:PORT, и requests отправит вызов через прокси; запросы к HTTPS-адресам идут через него туннелем. Для SOCKS5 установите requests[socks], переключите прокси на SOCKS5 в заказе и используйте схему socks5h, чтобы имена хостов разрешал прокси, а не ваш компьютер.

Python requests берёт прокси из словаря, который сопоставляет схему целевого URL с URL прокси. В этом руководстве такой словарь задаётся для одного статического ISP-адреса и показаны три места, где он может находиться: в вызове, в сессии или в окружении.

Прокси в Python requests с логином и паролем

Большинство прокси, включая наши, требуют логин и пароль. requests берёт их из URL прокси и отправляет прокси при каждом подключении. Для HTTPS-адреса прокси открывает туннель и никогда не видит содержимое запроса. На вкладках с кодом показаны вариант для одного запроса и вариант с сессией.

Как задать прокси в Python requests

  1. Скопируйте четыре значения из заказа

    Хост, порт, логин и пароль: из раздела «Мои прокси» в панели управления или из заказа в API. У каждого адреса свои четыре значения; общего шлюза нет.

  2. Соберите один URL прокси

    http://USERNAME:PASSWORD@HOST:PORT. Если в пароле есть /, ?, # или %, сначала закодируйте его для URL с помощью urllib.parse.quote(password, safe="").

  3. Задайте его для обеих схем

    Передайте один и тот же URL ключу http и ключу https. Если задан только http, каждый HTTPS-запрос идёт мимо прокси и уходит с вашего собственного адреса.

  4. Один раз проверьте выходной адрес

    Запросите страницу, которая показывает IP отправителя, или откройте What Is My IP через тот же прокси и убедитесь, что это купленный вами адрес.

  5. Запускайте задачу с тайм-аутом

    Всегда передавайте timeout=: по умолчанию requests ждёт бесконечно, и зависшее соединение тогда выглядит как зависший скрипт.

import requests

# The four values come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
response.raise_for_status()
print(response.status_code)
import requests

proxy = "http://USERNAME:PASSWORD@HOST:PORT"

with requests.Session() as session:
    # HTTP_PROXY / HTTPS_PROXY in the environment would override
    # session.proxies; this makes the session use only its own setting.
    session.trust_env = False
    session.proxies.update({"http": proxy, "https": proxy})
    response = session.get("https://example.com/", timeout=30)
    response.raise_for_status()
    print(response.status_code)
# pip install "requests[socks]"
import requests

# Switch the proxy to SOCKS5 first; use the values the order then shows.
# socks5h: the proxy resolves the hostname, not your machine.
proxy = "socks5h://USERNAME:PASSWORD@HOST:PORT"

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
response.raise_for_status()
print(response.status_code)

Проверенный код для requests

Каждый пример подключается через HTTP-прокси с логином и паролем, кроме примера для SOCKS5: для него прокси сначала нужно переключить на SOCKS5, после чего в заказе появятся новый порт и новые учётные данные. Замените четыре слова, набранные заглавными буквами, значениями из своего заказа.

Полная документация API

Где можно задать прокси в requests

По документации requests, проверено примерами кода с этой страницы на локальном прокси с аутентификацией. Если задано несколько вариантов, аргумент proxies в вызове важнее окружения, а окружение важнее Session.proxies, если только сессия не задаёт trust_env равным False, как в примере с сессией.
ОхватУчётные данныеКогда использовать
proxies= в вызовеОдин этот запросВ URLСкрипт с несколькими вызовами
Session.proxiesВсе запросы сессииВ URLВсё, что длиннее, с trust_env, равным False
HTTP_PROXY и HTTPS_PROXYВсе вызовы requests в процессеВ URLКод, который нельзя править; в NO_PROXY перечисляются хосты, которые нужно обойти
URL socks5h://Тот охват, на котором он заданВ URLКогда имена хостов должен разрешать прокси

Что идёт не так с requests и прокси

Задан только ключ http

Ключ обозначает схему целевого адреса, а не прокси. Словарь только с http направляет через прокси обычный HTTP, а каждый HTTPS-вызов отпускает напрямую, и никакой ошибки об этом не будет.

socks5 там, где нужен был socks5h

С socks5 имя хоста разрешает ваш компьютер и передаёт прокси IP. С socks5h его разрешает прокси, поэтому DNS-запрос и ответ на него приходят из сети прокси, а это важно для сайтов, которые отвечают в зависимости от местоположения.

Пароль, который ломает URL

Косая черта, вопросительный знак или решётка в пароле обрывают URL, и requests выдаёт ошибку, не дойдя до прокси; знак процента декодируется как экранирование. Закодируйте пароль для URL или используйте аутентификацию по белому списку IP и уберите учётные данные.

Забытая переменная окружения

requests читает HTTP_PROXY, HTTPS_PROXY и NO_PROXY, если в сессии не задать trust_env равным False, и эти переменные важнее Session.proxies. Устаревшая переменная на сервере может отправить трафик сессии не туда, куда вы собирались, или в обход прокси.

К чему подключается requests

Протоколы
HTTP, через который идёт и HTTPS, или SOCKS5, переключается в заказе
Аутентификация
Логин и пароль или белый список IP, который задаётся через API
Адрес
Один статический IP на весь период, в сети названного интернет-провайдера
Ротация
Нет: один и тот же адрес на каждый запрос

Другие руководства и продукт

Вопросы о прокси в Python requests

Как использовать прокси с аутентификацией в Python requests?

Впишите логин и пароль в URL прокси, http://USERNAME:PASSWORD@HOST:PORT, и передайте его и для ключа http, и для ключа https. requests отправляет учётные данные прокси, а тот отвечает 407, если они неверны. Пароль с зарезервированными символами закодируйте или используйте вместо него белый список IP.

Как использовать SOCKS5-прокси в requests?

Установите дополнение командой pip install requests[socks], переключите сам прокси на SOCKS5 в заказе и укажите порт и учётные данные, которые после этого покажет заказ, в URL socks5h://. Одной смены схемы недостаточно: адрес, настроенный на HTTP, не отвечает по SOCKS5, пока его не переключат. SOCKS5

Можно ли вместо пароля использовать аутентификацию по белому списку IP?

Да. Добавьте публичный IPv4-адрес, с которого работает ваш скрипт, в белый список прокси одним вызовом API, PUT /orders/ORDER_ID/whitelist, или через MCP-сервер; в панели управления для этого пока нет настройки. После этого прокси принимает подключения с этого адреса без учётных данных, по HTTP и по SOCKS5, а URL становится http://HOST:PORT. Пока белый список задан, прокси пропускает только адреса из него, а логин и пароль для этого заказа перестают работать; если отправить пустой список, белый список выключается и вход по паролю снова работает.

Меняется ли адрес между запросами?

Нет. Статический ISP-прокси даёт один адрес на оплаченный период, и каждый запрос через него уходит с этого адреса. Если задаче нужен новый адрес на каждый запрос, это ротационный пул, а его мы пока не продаём.

Как проверить, какой IP видит сайт?

Запросите через тот же прокси страницу, которая возвращает адрес отправителя, или откройте What Is My IP в браузере, настроенном на этот прокси. Если там ваш собственный адрес, скорее всего, не задан ключ https. Мой IP

Для чего можно использовать прокси?

Тестирование собственных сайтов по регионам, проверка качества, верификация рекламы, исследование цен и рынка и защита бренда не требуют проверки по нашей политике допустимого использования. Прокси не обходит CAPTCHA, обнаружение ботов, ограничения частоты запросов и блокировки аккаунтов, а политика запрещает использовать его для таких попыток. Политика допустимого использования

Статический адрес подходит задачам, которые каждый раз должны приходить из одного и того же места: мониторингу, региональной проверке, тесту, который сравнивает сегодняшний результат с прошлонедельным. Закажите по адресу на каждую задачу на странице ISP-прокси, посмотрите цены, а если та же задача работает в браузере, руководства по Selenium и Playwright задают там тот же адрес.

Источники