---
title: Как настроить прокси в Python Requests
description: Узнайте, как настроить прокси в библиотеке requests для Python. Примеры кода, пошаговая инструкция и лучшие практики по ротации IP-адреса и обходу блокировок.
image: https://blog.froxy.com/hubfs/blog/python-requests-proxy/python-requests-proxy.png
---

<https://froxy.com/ru>

 Продукты

- [Резидентные прокси](https://froxy.com/ru/residential-proxies)
- [Мобильные прокси](https://froxy.com/ru/mobile-proxies)
- [Серверные прокси](https://froxy.com/ru/datacenter-proxies)

 Цены

- [Резидентные прокси](https://froxy.com/ru/residential-proxies/pricing)
- [Мобильные прокси](https://froxy.com/ru/mobile-proxies/pricing)
- [Серверные прокси](https://froxy.com/ru/datacenter-proxies/pricing)

[Локации](https://froxy.com/ru/locations)

Русский

- [English](https://blog.froxy.com/en/python-requests-proxy?hsLang=en)
- [Русский](https://blog.froxy.com/ru?hsLang=ru)

[![Вход](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/25353777/628aa0b1-d701-49a3-9fc1-64cf181b50a5.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/25353777/628aa0b1-d701-49a3-9fc1-64cf181b50a5) [![Регистрация](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/25353777/526abaec-b188-4330-8b34-97e181ba893d.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/25353777/526abaec-b188-4330-8b34-97e181ba893d)

<https://blog.froxy.com/ru?hsLang=ru>

- [Прокси](https://blog.froxy.com/ru/tag/прокси)
- [Парсинг](https://blog.froxy.com/ru/tag/парсинг)
- [Кейсы](https://blog.froxy.com/ru/tag/кейсы)
- [Новости](https://blog.froxy.com/ru/tag/новости)
- [Приватность и безопасность](https://blog.froxy.com/ru/tag/приватность-и-безопасность)
- [Антидетект](https://blog.froxy.com/ru/tag/антидетект)
- [Данные и аналитика](https://blog.froxy.com/ru/tag/данные-и-аналитика)
- [AI](https://blog.froxy.com/ru/tag/ai)
- [Поиск](https://blog.froxy.com/hs-search-results?hsLang=ru)
- Русский
- [English](https://blog.froxy.com/en/python-requests-proxy?hsLang=en)
- [Русский](https://blog.froxy.com/ru?hsLang=ru)
- Продукты
- [Резидентные прокси](https://froxy.com/ru/residential-proxies)
- [Мобильные прокси](https://froxy.com/ru/mobile-proxies)
- [Серверные прокси](https://froxy.com/ru/datacenter-proxies)
- Цены
- [Резидентные прокси](https://froxy.com/ru/residential-proxies/pricing)
- [Мобильные прокси](https://froxy.com/ru/mobile-proxies/pricing)
- [Серверные прокси](https://froxy.com/ru/datacenter-proxies/pricing)
- [Локации](https://froxy.com/ru/locations)
- [![Вход](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/25353777/8d0caf92-c619-4aca-a35e-94e08ab2d732.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/25353777/8d0caf92-c619-4aca-a35e-94e08ab2d732)
- [![Регистрация](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/25353777/466a3309-1a3b-40b0-9230-bf10233341cd.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/25353777/466a3309-1a3b-40b0-9230-bf10233341cd)

1. [Блог](https://blog.froxy.com/ru?hsLang=ru)
2. Как задать прокси в Python Requests: подробное руководство

Прокси

# Как задать прокси в Python Requests: подробное руководство

Узнайте, как настроить прокси в библиотеке requests для Python. Примеры кода, пошаговая инструкция и лучшие практики по ротации IP-адреса и обходу блокировок.

Команда Froxy 15 мая 2025 11 мин

[Facebook](http://www.facebook.com/share.php?u=https://blog.froxy.com/ru/python-requests-proxy?utm_medium=social&utm_source=facebook) [linkedIn](http://www.linkedin.com/shareArticle?mini=true&url=https://blog.froxy.com/ru/python-requests-proxy?utm_medium=social&utm_source=linkedin) [Twitter](https://twitter.com/intent/tweet?original_referer=https://blog.froxy.com/ru/python-requests-proxy?utm_medium=social&utm_source=twitter&url=https://blog.froxy.com/ru/python-requests-proxy?utm_medium=social&utm_source=twitter&source=tweetbutton&text=)

![Как задать прокси в Python Requests: подробное руководство](https://blog.froxy.com/hubfs/blog/python-requests-proxy/python-requests-proxy.png)

- [Что такое Python Requests?](https://blog.froxy.com/ru/python-requests-proxy#what-is-requests)
- [Типы прокси для Python Requests](https://blog.froxy.com/ru/python-requests-proxy#proxy-types)
- [Пошаговый гайд](https://blog.froxy.com/ru/python-requests-proxy#setup)
- [Типичные ошибки](https://blog.froxy.com/ru/python-requests-proxy#common-errors)
- [Лучшие практики](https://blog.froxy.com/ru/python-requests-proxy#best-practices)
- [Заключение и рекомендации](https://blog.froxy.com/ru/python-requests-proxy#conclusion)
- [FAQ](https://blog.froxy.com/ru/python-requests-proxy#faq)

Для пары страниц хватит и ручного контроля капчи. Но на объемах без автоматических защит от ботов не обойтись. Самый простой и надежный путь: парсинг через прокси с ротацией. Разберем, как правильно связать прокси с библиотекой Python Requests, каких ошибок избегать и как не словить бан.

В гайде разобрано всё, что нужно для работы с прокси в Python Requests: базовая настройка, аутентификация, HTTP и SOCKS5, прокси на уровне сессии, ротация IP и разбор типичных ошибок. Подойдёт и для одного скрипта с одним прокси, и для полноценной схемы с пулом адресов и ротацией.

**Вкратце,** чтобы отправить запрос через прокси в Python Requests, передайте в requests.get() параметр proxies: словарь с ключами http и https, значения которых указывают на адрес прокси-сервера. После этого запрос идёт через прокси, и сайт видит его IP, а не ваш. Всё остальное (авторизация, SOCKS5, сессии, ротация) надстраивается над этой конструкцией.

## Что такое Python Requests?

Python Requests — главная библиотека для работы с HTTP-запросами на Python. Она работает поверх urllib3, но дает разработчику понятный «человечный» синтаксис.

Основные возможности:

- **HTTP-методы:** полная поддержка GET, POST, PUT, DELETE и др.
- **Управление сессиями:** сохранение кук, заголовков и соединений через requests.Session.
- **Форматы данных:** автоматическое кодирование в Unicode и встроенная обработка JSON.
- **Безопасность:** проверка SSL/TLS-сертификатов и таймаутов.
- **Работа с прокси:** поддержка HTTP/HTTPS из коробки, а также SOCKS4/SOCKS5 через пакет requests\[socks\].

Настройки прокси передаются прямо в запрос, отдельной обвязки для этого не нужно.

## Типы прокси для Python Requests

![Типы прокси для Python Requests](https://blog.froxy.com/hs-fs/hubfs/blog/python-requests-proxy/proxies.png?width=1548&height=409&name=proxies.png)

Requests из коробки работает с тремя схемами, и различаются они тем, что происходит с трафиком.

**HTTP-прокси** принимает обычный HTTP-запрос, читает его целиком и пересылает дальше от своего имени. Схема в URL — http://.

**HTTPS через HTTP-прокси** работает иначе: клиент отправляет прокси метод CONNECT, тот открывает TCP-туннель до целевого хоста, и внутри туннеля TLS устанавливается напрямую между вашим скриптом и сайтом. Прокси видит только домен и объём трафика, но не содержимое. Именно поэтому в словаре proxies для ключа https чаще всего указывают схему http:// — она описывает, как вы подключаетесь к прокси, а не то, каким протоколом идёт запрос к сайту.

**SOCKS4/SOCKS5** — прокси уровня транспорта: он не разбирает HTTP вообще, а просто перекладывает TCP-поток. Поэтому меньше следов в заголовках. Требует пакета requests\[socks\], подробнее — в разделе про SOCKS5 ниже.

Конфигурация всегда одна и та же: словарь proxies с ключами http и https, в значениях — URL прокси. Меняется только схема в URL.

## Python Requests + Proxy: пошаговый гайд

![Python Requests + Proxy: пошаговый гайд](https://blog.froxy.com/hs-fs/hubfs/blog/python-requests-proxy/setup.png?width=1548&height=502&name=setup.png)

*В Windows-системах позаботьтесь о том, чтобы Python добавился в переменные среды (Path). По аналогии нужно добавить вызов апплета pip (это менеджер пакетов для Python).*

*Пример того, как это может выглядеть:*

![Python](https://blog.froxy.com/hs-fs/hubfs/blog/scrape-google-people-also-ask/1.png?width=889&height=500&name=1.png)

### Установка библиотеки Python Requests

Ставим саму библиотеку requests, а если понадобится SOCKS5 или защита от TLS-фингерпринтинга — дополнительные пакеты.

```
pip install requests
pip install requests[socks]   # если нужен SOCKS5
pip install curl_cffi         # если понадобится обходить TLS-фингерпринтинг (см. ниже)
```

Если pip не находится в консоли — используйте python -m pip install requests, это обходит проблемы с PATH.

### Базовый запрос через proxy

Проверяем самый простой случай: один GET-запрос идёт через прокси-сервер, и сайт увидит IP прокси, а не ваш.

```
import requests

proxies = {
    'http': 'http://123.58.199.17:8168',
    'https': 'http://123.58.199.17:8168',
}

response = requests.get('https://example.com', proxies=proxies, timeout=5)
print(response.status_code)
```

В ответ возвращается обычный объект Response — с ним работаем как без прокси: status\_code, text, json().

123.58.199.17:8168 — это просто пример-заглушка. Его нужно заменить на данные вашего реального прокси-сервера. Креды можно найти в личном аккаунте. Вот как это выглядит у Froxy:

Ключи 'http' и 'https' задаются отдельно — прокси может обрабатывать оба протокола одинаково, но библиотека всё равно требует разделения.

timeout=5 обязателен на практике: без него при недоступном прокси запрос может зависнуть на десятки секунд (зависит от TCP-стека ОС).

**Проверка, что прокси реально применился — сравните exit IP с вашим собственным:**

```
response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=5)
print(response.json()) # должен показать IP прокси, а не ваш
```

**Парочка ошибок:**

- Если получаете 407 Proxy Authentication Required — нужна авторизация (см. раздел ниже).
- Если ловите ConnectTimeout — прокси мёртв или не принимает соединения на этот порт.
- Если SSLError при HTTPS через HTTP-прокси — часто помогает явно указать схему http:// для обоих ключей, даже для 'https'.

Полный разбор кодов и ошибок в разделе «Типичные ошибки и что с ними делать».

### С User-Agent и обработкой ошибок

Дополняем базовый запрос двумя вещами: заголовком, который маскирует запрос под обычный браузер (по умолчанию requests честно сообщает сайту, что это скрипт), и блоком try/except, чтобы скрипт не падал целиком при сетевой ошибке.

```
import requests

proxies = {
    'http': 'http://198.49.68.80:80',
    'https': 'http://198.49.68.80:80',
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36'
}

try:
    response = requests.get('https://example.com', proxies=proxies, headers=headers, timeout=5)
    print(response.status_code)
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
```

requests.exceptions.RequestException — это базовый класс для всех ошибок библиотеки (ConnectionError, Timeout, TooManyRedirects и т.д.), поэтому except на нём ловит любую проблему сети/прокси разом.

User-Agent нужен, потому что многие сайты возвращают другой (упрощённый или блокирующий) контент, если видят дефолтный python-requests/x.x.x в заголовке.

Если сайт всё равно блокирует — добавьте ещё Accept-Language и Referer, некоторые анти-бот системы проверяют их согласованность с User-Agent.

### Ограничение: TLS-фингерпринтинг (JA3/JA4)

У метода выше есть потолок: User-Agent — это просто заголовок, а вот сам TLS-хендшейк requests делает через urllib3/OpenSSL, и его «отпечаток» (набор шифров, порядок extensions) не совпадает с хендшейком настоящего браузера. Cloudflare, Akamai, DataDome и подобные системы сверяют этот отпечаток отдельно от IP и заголовков — то есть даже через идеальный прокси с правильным User-Agent запрос может блокироваться на уровне TLS, до того как сайт вообще посмотрит на заголовки.

**Как понять, что дело в этом?** блок стабилен независимо от смены прокси/User-Agent, часто 403 без внятного тела или JS-челлендж.

**Что делать:**

```
from curl_cffi import requests as cf_requests

response = cf_requests.get(
    'https://example.com',
    proxies={'https': 'http://user:pass@host:port'},
    impersonate='chrome124',   # подделывает TLS/HTTP2-отпечаток конкретного браузера
)
print(response.status_code)
```

Альтернатива — httpx с HTTP/2 (pip install httpx\[http2\]) ближе к браузеру по протоколу, но сам TLS-отпечаток не подделывает. Если блокировка именно по JA3/JA4, нужен curl\_cffi или headless-браузер.

### Proxy на уровне сессии

Если нужно сделать много запросов подряд, Session задаёт настройки прокси один раз и, что важнее, держит пул уже открытых TCP-соединений (urllib3.PoolManager) на каждый хост — новые запросы переиспользуют их вместо повторного TCP+TLS handshake на каждый вызов. Для одного запроса разницы нет, экономия заметна на десятках и сотнях запросов на один хост.

```
import requests
from requests.adapters import HTTPAdapter

session = requests.Session()
session.trust_env = False   # см. пояснение ниже

session.proxies.update({
    'http': 'http://45.155.226.176:3128',
    'https': 'http://172.67.182.20:1080',
})

adapter = HTTPAdapter(pool_connections=10, pool_maxsize=10)  # размер пула соединений на хост
session.mount("https://", adapter)
session.mount("http://", adapter)

response = session.get('https://example.com', timeout=5)
```

**Почему trust\_env = False:** по умолчанию Session подмешивает прокси из переменных окружения (HTTP\_PROXY/HTTPS\_PROXY) поверх того, что вы задали в коде через session.proxies. Это давняя особенность (issue в repo requests с 2014 года, актуальна до сих пор) — она путает, потому что поведение выглядит так, будто ваши настройки просто игнорируются. trust\_env = False отключает это подмешивание, и session.proxies работает предсказуемо.

### Как отключить прокси для одного запроса

Иногда прокси задан глобально (в сессии или в переменных окружения), а один конкретный запрос нужно отправить напрямую: проверить свой реальный IP, обратиться к внутреннему сервису, скачать что-то с локального хоста. Для этого нужно передать в запрос None вместо адресов:

```
response = session.get('https://httpbin.org/ip', proxies={'http': None, 'https': None}, timeout=5)
```

Ключи со значением None из итоговой конфигурации удаляются полностью, поэтому такой вызов перебивает и настройки сессии, и переменные окружения. Сравните IP из такого ответа с тем, что возвращается без None, чтобы проверить как вообще отрабатывают прокси.

### Ретраи через HTTPAdapter + urllib3.Retry

Для одного прокси или сайта, который иногда просто флапает (таймауты, 502/503), ручной цикл не нужен: retry можно встроить прямо в транспорт сессии.

```
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

session = requests.Session()

retry_strategy = Retry(
    total=5,                                     # всего попыток
    backoff_factor=1,                            # пауза между попытками: 1s, 2s, 4s, 8s...
    status_forcelist=[429, 500, 502, 503, 504],  # какие HTTP-коды считать «повторить»
    allowed_methods=["GET", "POST"],
)

adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("https://", adapter)
session.mount("http://", adapter)

session.proxies.update({'http': 'http://host:port', 'https': 'http://host:port'})

response = session.get('https://example.com', timeout=5)
```

Это решает ту же задачу, что ручной for + sleep в разделе ротации ниже, но для **одного** прокси. Ручную ротацию из последнего раздела используйте, когда есть список из нескольких прокси и нужно переключаться между ними, а не повторять на том же самом.

### Аутентификация

Если прокси требует логин и пароль, они передаются прямо в URL прокси — отдельного параметра для них в requests нет. Логин и пароль можно также найти в личном кабинете.

```
proxies = {
    'http': 'http://login:password@45.155.226.176:3128',
    'https': 'http://login:password@45.155.226.176:3128',
}
```

Формат user:pass@host:port одинаков и для HTTP, и для SOCKS5. Прокси проверяет креды у себя и только потом пересылает запрос дальше, поэтому на целевой сайт эти логин и пароль не попадают.

Если логин или пароль содержат спецсимволы (@, :, /) — их нужно URL-энкодить (urllib.parse.quote), иначе парсер URL сломается на границе логина/пароля/хоста:

```
from urllib.parse import quote

user = quote("my@login")
pwd = quote("p@ss:word")
proxy_url = f"http://{user}:{pwd}@45.155.226.176:3128"
```

**Важно!** Не коммитьте прокси с логином/паролем в открытый код или репозиторий — выносите в переменные окружения или .env-файл (смотрите гайд ниже).

#### Через переменные окружения

Чтобы не хранить адрес и пароль прокси прямо в коде, их можно задать в окружении ОС — requests подхватит их сам, без единого упоминания proxies= в скрипте.

```
export HTTP_PROXY="http://45.155.226.176:80"
export HTTPS_PROXY="http://45.155.226.176:8080"
```

Windows (PowerShell):

```
$env:HTTP_PROXY="http://45.155.226.176:80"
$env:HTTPS_PROXY="http://45.155.226.176:8080"
```

**Если не работает:** переменные, заданные через export/$env:, живут только в текущей сессии терминала — если открыть новый терминал или перезапустить IDE, они пропадут. Для постоянного эффекта прописывайте в ~/.bashrc, ~/.zshrc или системные переменные Windows.

### SOCKS5

SOCKS5 — отдельный тип прокси-протокола — часто быстрее и менее заметен для анти-бот систем, чем обычный HTTP-прокси. В коде отличается только префиксом схемы в URL.

```
proxies = {
    'http': 'socks5://user:pass@proxy-host:port',
    'https': 'socks5://user:pass@proxy-host:port',
}
```

```
export ALL_PROXY="socks5://45.155.226.176:3434"
```

SOCKS-поддержка работает через отдельный пакет PySocks, который подтягивается флагом requests\[socks\] при установке. Если поставить только requests, схема socks5:// вызовет ошибку вроде MissingSchema/InvalidSchema.

**Совет:** socks5h:// (вместо socks5://) заставляет резолвить DNS-имена через сам прокси, а не локально — полезно, если нужно скрыть DNS-запросы или прокси в другой сети видит хосты, недоступные вам напрямую.

SOCKS5 не разбирает HTTP, а просто проксирует TCP-поток, поэтому его используют не только для скрапинга, но и для любого другого трафика. В связке с Requests это остаётся TCP: SOCKS5 библиотека не задействует UDP-режим, так что выигрыш здесь только в меньшем количестве следов на уровне заголовков.

### Ротация IP-адреса

По желанию, при каждом запросе можно брать случайный (или следующий по кругу) прокси из списка, чтобы не долбить сайт с одного и того же IP. Ниже рабочий код для такой схемы:

```
import requests
import random
import time

proxy_list = [
    "http://222.252.194.204:5000",
    "http://162.223.90.130:5100",
    "http://login:password@45.155.226.176:3128",
    "http://50.217.226.41:5050",
]

def proxy_request(request_type, url, max_attempts=5, **kwargs):
    for attempt in range(max_attempts):
        proxy = random.choice(proxy_list)
        current_proxies = {"http": proxy, "https": proxy}
        try:
            response = requests.request(request_type, url, proxies=current_proxies, timeout=5, **kwargs)
            print(f"Proxy used: {proxy}")
            return response
        except requests.exceptions.RequestException as e:
            print(f"Attempt {attempt + 1} failed via {proxy}: {e}")
            time.sleep(1)
    raise RuntimeError("All proxy attempts failed")

response = proxy_request('GET', 'https://example.com')
```

Если вместо случайного выбора нужен обход по кругу (round-robin):

```
from itertools import cycle

proxy_cycle = cycle(proxy_list)

def next_proxy():
    return next(proxy_cycle)
```

Если прокси много и часто отваливаются, проще настроить ротацию на стороне провайдера — тогда для requests это один статичный endpoint, а ротация IP происходит на стороне сервиса, без своего кода вроде того, что выше. У Froxy ротацию можно настроить в личном аккаунте, в разделе управления подписками: строка подключения при этом остаётся фиксированной, меняется только выходной IP на стороне сервиса.

###### Residential Proxies

Резидентные прокси с ротацией для сбора данных по всему миру.

[Попробовать](https://froxy.com/ru/residential-proxies) $1.99, 100Mb

## Типичные ошибки и что с ними делать

![Типичные ошибки прокси в Python Requests](https://blog.froxy.com/hs-fs/hubfs/blog/python-requests-proxy/troubleshooting.png?width=1548&height=544&name=troubleshooting.png)

Все сетевые ошибки Requests наследуются от requests.exceptions.RequestException, поэтому в скрипте достаточно ловить его. Но полезно смотреть, какая конкретно ошибка вылезла.

| Код/ошибка | Причина | Что делать |
| --- | --- | --- |
| 407 Proxy Authentication Required | Прокси не получил креды или не принял их | Добавить user:pass@ в URL прокси, спецсимволы надо URL-энкодить |
| 401 Unauthorized | Ошибка авторизации на целевом сайте, а не на прокси | Проверять креды сайта |
| 403 Forbidden | Прокси блокирует ваш IP или сам целевой сайт | Проверить IP в allowlist провайдера и разрешён ли таргет |
| Timeout / ProxyError | Прокси не работает, перегружен или таргет висит | Всегда ставить timeout=, делать fallback на следующий прокси из пула |
| SSLError | Прокси подменяет сертификат или HTTPS идёт не через CONNECT | Указать схему http:// для обоих ключей; в тестах — свой CA через verify='/path/ca.pem' |

verify=False действительно снимает проверку сертификата и может починить SSLError, но вместе с ней снимает защиту от подмены трафика. В тестовом окружении можно попробовать, но точно не в рабочем скрипте. Безопаснее будет передать в verify= путь к сертификату прокси.

## Лучшие практики и соображения безопасности

![Парсинг через прокси в Python Requests](https://blog.froxy.com/hs-fs/hubfs/blog/python-requests-proxy/tips.png?width=1548&height=545&name=tips.png)

Одного лишь прокси часто недостаточно: современные антибот-системы (Cloudflare, Akamai) анализируют не только IP, но и цифровой отпечаток.

- **Случайные задержки.** Не отправляйте запросы с равными интервалами — добавляйте рандомные паузы между ними.
- **Ротация заголовков.** Регулярно обновляйте User-Agent и заголовок Accept-Language.
- **TLS-отпечаток (JA3/JA4).** Защиты видят отпечаток библиотеки Requests, который отличается от браузерного. Для защищенных ресурсов используйте Headless-браузеры (Playwright, Selenium) или специализированные библиотеки вроде curl\_cffi.
- **Ловушки (Honeypot).** Не переходите по скрытым ссылкам в коде страницы.
- **Авторазгадывание капчи.** Подключайте сервисы решения капч для первой линии обороны.
- **Официальный API.** Если у сайта есть открытый API, всегда используйте его — это быстрее и надежнее скрапинга.
- **Качество прокси.** Бесплатные публичные прокси годятся только чтобы убедиться, что скрипт работает через прокси. Серверные прокси дают максимальную скорость и подходят, если таргет не проверяет происхождение IP. Резидентные и мобильные медленнее, но детектировать их сложнее.

## Заключение и рекомендации

![Прокси в Python Requests](https://blog.froxy.com/hs-fs/hubfs/blog/python-requests-proxy/conclusion.png?width=1548&height=634&name=conclusion.png)

Requests — удобный инструмент для базового парсинга. Однако успех работы на объемах зависят от качества прокси. Лучший выбор — анонимные ротируемые резидентные или мобильные IP.

Подключение прокси Froxy к Python Requests занимает несколько минут: пул из 120+ млн IP в 200+ локациях, таргетинг до города и провайдера, автоматическая ротация. Оценить сеть можно на триале — 3 дня полного доступа за $1.99.

## FAQ

### Как отправить запрос через прокси в Python Requests?

Передайте параметру proxies словарь с настройками для HTTP- и HTTPS-запросов:

```
import requests

proxies = {
    'http': 'http://host:port',
    'https': 'http://host:port',
}

response = requests.get(
    'https://example.com',
    proxies=proxies,
    timeout=(5, 20),
)
```

Ключ словаря соответствует протоколу целевого URL. Поэтому для ключа https допустимо значение, начинающееся с http://: HTTPS-запрос будет передан через HTTP-прокси с использованием метода CONNECT.

В кортеже timeout=(5, 20) первое значение определяет время ожидания подключения, второе — время ожидания данных. Это не общий лимит продолжительности запроса.

### Как передать логин и пароль прокси?

Данные авторизации указываются в URL:

```
http://user:password@host:port
```

Если логин или пароль содержат @, :, /, #, % или другие специальные символы, их необходимо кодировать отдельно с помощью urllib.parse.quote и параметра safe=''.

URL с данными авторизации не следует хранить непосредственно в исходном коде или системе контроля версий.

### Чем отличаются HTTP-, HTTPS- и SOCKS5-прокси?

HTTP-прокси принимает HTTP-запросы и передаёт их целевому серверу. Для HTTPS обычно используется метод CONNECT: прокси создаёт TCP-туннель, внутри которого клиент устанавливает TLS-соединение с сайтом.

HTTPS-прокси дополнительно использует TLS на участке между клиентом и самим прокси. Это защищает параметры подключения от перехвата в локальной сети.

SOCKS5 работает на транспортном уровне и передаёт TCP-трафик без анализа HTTP-запросов. Поэтому его можно использовать не только для HTTP и HTTPS, но и для других протоколов.

### Как использовать SOCKS5 в Requests?

Сначала установите дополнительные зависимости командой python -m pip install "requests\[socks\]".

В адресе прокси укажите схему socks5:// или socks5h://. В первом случае DNS-разрешение выполняется на стороне клиента, во втором — через прокси.

Без дополнительных зависимостей Requests вернёт ошибку InvalidSchema.

### Как задать прокси через переменные окружения?

Requests поддерживает переменные HTTP\_PROXY, HTTPS\_PROXY, ALL\_PROXY и NO\_PROXY. Допустимы имена как в верхнем, так и в нижнем регистре.

В Linux и macOS переменные задаются через export, в PowerShell — через $env:. После этого указывать proxies в каждом запросе не требуется.

Параметр proxies, переданный непосредственно методу запроса, имеет приоритет над переменными окружения. При этом значения из session.proxies могут быть переопределены настройками окружения.

### Как исключить отдельные адреса из проксирования?

Используйте переменную NO\_PROXY. В ней через запятую перечисляются домены и IP-адреса, к которым Requests должен подключаться напрямую.

Например, значение localhost,127.0.0.1,.example.com исключает локальные адреса и поддомены example.com.

### Как отключить прокси для одного запроса?

Для стандартной конфигурации можно передать словарь {'http': None, 'https': None, 'all': None}. Однако этот способ не учитывает отдельные правила, заданные для конкретных хостов.

Надёжнее выполнить запрос через временную сессию, которая не читает настройки окружения:

```
import requests

with requests.Session() as session:
    session.trust_env = False
    response = session.get(url, timeout=(5, 20))
```

Параметр trust\_env = False отключает использование прокси и некоторых других настроек из окружения.

### Почему прокси не работает и сайт видит реальный IP?

Наиболее распространённые причины:

- прокси указан только для HTTP, а запрос выполняется по HTTPS;
- в URL прокси отсутствует схема;
- неверно указан адрес, порт, логин или пароль;
- специальные символы в данных авторизации не закодированы;
- настройки окружения переопределяют session.proxies;
- при использовании socks5:// DNS-запросы выполняются локально;
- прокси передаёт исходный IP в служебных заголовках;
- часть трафика отправляется другой библиотекой без настроек прокси.

Ошибочная или неподдерживаемая схема обычно приводит к исключению, например InvalidSchema, а не игнорируется без уведомления.

Проверить выходной IP можно запросом к https://httpbin.org/ip или другому сервису определения IP.

### Что означает ошибка 407 Proxy Authentication Required?

Код 407 означает, что прокси требует авторизацию или отклонил переданные данные.

Необходимо проверить формат URL, логин, пароль, кодирование специальных символов и поддерживаемый прокси способ авторизации.

Код 401 Unauthorized относится к авторизации на целевом сайте, а не на прокси.

### Как организовать ротацию прокси в Python Requests?

Есть два основных варианта:

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

При самостоятельной ротации необходимо обрабатывать ProxyError, ConnectTimeout, ReadTimeout и ограничивать количество повторных попыток. Ротация на стороне провайдера обычно проще при работе с большим пулом адресов.

### Замедляет ли прокси работу Requests?

Да. Прокси добавляет промежуточный узел в сетевой маршрут. Для HTTPS также требуется создание туннеля и установка TLS-соединения.

Задержка зависит от расположения, загрузки и типа прокси. Резидентные и мобильные прокси обычно медленнее дата-центровых.

Для серии запросов рекомендуется использовать Session:

```
with requests.Session() as session:
    session.trust_env = False
    session.proxies.update(proxies)
    response = session.get(url, timeout=(5, 20))
```

Сессия переиспользует соединения и сокращает количество повторных TCP- и TLS-согласований. Эффект наиболее заметен при нескольких запросах к одному хосту через один прокси.

###### Резидентные Прокси

Получите доступ к глобальной прокси-сети и собирайте данные, не подвергаясь блокировке.

[Начать с триала](https://froxy.com/ru/residential-proxies) $1.99, 100Mb

### Получайте уведомления о новых функциях и обновлениях Froxy

Узнайте первыми о новых функциях Froxy, чтобы оставаться в курсе событий происходящих на рынке цифровых технологий и получать новости о новых функциях Froxy.

## Статьи по Теме

![Как сделать ваш скрипт веб-парсинга легальным в 2026](https://blog.froxy.com/hubfs/blog/how-to-make-your-web-scraping-script-legal/how-to-make-your-web-scraping-script-legal.png)

Парсинг

### Как сделать ваш скрипт веб-парсинга легальным в 2026

Гид по легальному веб-скрейпингу в 2026 году. Как собирать данные в сети без нарушения авторских прав и судебных исков. Практические советы и...

Команда Froxy 1 июл. 2026 7 мин 

<https://blog.froxy.com/ru/how-to-make-your-web-scraping-script-legal?hsLang=ru>

![Проблемы с ротацией: как обеспечить смену IP в нужный момент](https://blog.froxy.com/hubfs/blog/fix-proxy-rotation/fix-proxy-rotation.png)

Прокси

### Проблемы с ротацией: как обеспечить смену IP в нужный момент

IP не меняется вовремя? Разбираем причины: правила, провайдер, сессии. Настройка ротации по времени, запросу и сессии, защита от блокировок и падений...

Команда Froxy 5 нояб. 2025 7 мин 

<https://blog.froxy.com/ru/fix-proxy-rotation?hsLang=ru>

Лучшие резидентные и мобильные прокси в своем классе

<https://t.me/+wVO9fgNQk7M1ZDA6> [mailto:support@froxy.com](mailto:support@froxy.com) 

[![TrustPilot](https://blog.froxy.com/hs-fs/hubfs/trustpilot-2.png?height=22&name=trustpilot-2.png) ![4.7](https://cdn.trustpilot.net/brand-assets/4.1.0/stars/stars-4.5.svg) 4.7](https://www.trustpilot.com/review/froxy.com)

Продукты [Резидентные прокси](https://froxy.com/ru/residential-proxies) [Мобильные прокси](https://froxy.com/ru/mobile-proxies) [Серверные прокси](https://froxy.com/ru/datacenter-proxies)

Кейсы [Мониторинг цен](https://froxy.com/ru/use-cases/price-monitoring) [Маркетинг](https://froxy.com/ru/use-cases/market-research) [Социальные тренды](https://froxy.com/ru/use-cases/social-listening) [Сбор данных](https://froxy.com/ru/use-cases/web-scraping) [SEO Мониторинг](https://froxy.com/ru/use-cases/seo-monitoring)

Компания [Цены](https://froxy.com/ru/get-started) [О нас](https://froxy.com/ru/about) [Отдел продаж](https://froxy.com/ru/contact-us) [Поддержка](https://froxy.com/ru/contact-us)

Ресурсы [Интеграции](https://froxy.com/ru/integrations) [Локации](https://froxy.com/ru/locations) [Партнерство](https://froxy.com/ru/referral-system) [Помощь](https://help.froxy.com/ru?hsLang=ru) [Способы оплаты](https://froxy.com/ru/payment-methods)

Copyright © 2021 – 2026. Wergames OÜ. All rights reserved. Harju maakond, Tallinn, Kesklinna linnaosa, Endla tn 4, 10142

[Terms of Use](https://froxy.com/ru/terms-of-use) [Privacy Policy](https://froxy.com/ru/privacy-policy) [Cookie Policy](https://froxy.com/ru/cookie-policy) [Refund & Cancellation Policy](https://froxy.com/ru/refund-policy) [SLA](https://froxy.com/ru/service-level-agreement)