# Прокси в Python requests: статический ISP-прокси | ProxyJam

Как задать прокси в Python requests: для запроса, для сессии и через SOCKS5 с удалённым DNS, с проверенным кодом для одного статического ISP-адреса.

- Canonical: https://proxyjam.com/ru/integrations/python-requests/
- Updated: 2026-10-23
- Language: ru

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


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


## Как задать прокси в 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](/ru/what-is-my-ip/) через тот же прокси и убедитесь, что это купленный вами адрес.
5. **Запускайте задачу с тайм-аутом** Всегда передавайте `timeout=`: по умолчанию requests ждёт бесконечно, и зависшее соединение тогда выглядит как зависший скрипт.

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

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

### Для запроса

Прокси для одного вызова.

```
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)
```

### SOCKS5

SOCKS5 с разрешением имён хостов на стороне прокси.

```
# 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

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

По документации requests, проверено примерами кода с этой страницы на локальном прокси с аутентификацией. Если задано несколько вариантов, аргумент proxies в вызове важнее окружения, а окружение важнее Session.proxies, если только сессия не задаёт trust_env равным False, как в примере с сессией.


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

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

## Что идёт не так с 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. Устаревшая переменная на сервере может отправить трафик сессии не туда, куда вы собирались, или в обход прокси.


## Вопросы о прокси в 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, пока его не переключат.

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

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

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

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

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

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

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

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


Статический адрес подходит задачам, которые каждый раз должны приходить из одного и того же места: мониторингу, региональной проверке, тесту, который сравнивает сегодняшний результат с прошлонедельным. Закажите по адресу на каждую задачу на странице [ISP-прокси](/ru/isp-proxies/), посмотрите [цены](/ru/pricing/), а если та же задача работает в браузере, руководства по [Selenium](/ru/integrations/selenium/) и [Playwright](/ru/integrations/playwright/) задают там тот же адрес.



## Источники

- [Requests documentation, Proxies](https://requests.readthedocs.io/en/latest/user/advanced/#proxies): аргумент proxies, переменные окружения и поддержка SOCKS
- [RFC 1928, SOCKS Protocol Version 5](https://www.rfc-editor.org/rfc/rfc1928): как клиент запрашивает у SOCKS5-прокси адрес назначения по имени или по IP
- [RFC 3986, URI Generic Syntax](https://www.rfc-editor.org/rfc/rfc3986#section-3.2.1): часть URL с данными пользователя (userinfo) и символы, которые в ней нужно кодировать




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

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

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

