The essential points from this guide -- each one is explained in detail below.
Библиотека requests принимает словарь proxies с ключами http и https, а также поддерживает прокси на уровне Session для многих запросов подряд.
httpx поддерживает синхронный и асинхронный режим через один и тот же параметр proxy, без разных API для двух сценариев.
aiohttp требует передавать прокси в каждом запросе отдельно, поэтому при парсинге в больших объёмах удобнее вынести его в отдельную функцию.
Переменные окружения HTTP_PROXY и HTTPS_PROXY автоматически считывают requests, httpx и большинство других HTTP-клиентов на Python.
Для парсинга маркетплейсов и соцсетей логин и пароль от прокси удобнее хранить в .env-файле, а не прямо в коде скрипта.
requests -- самая распространённая HTTP-библиотека в Python, и прокси в ней настраиваются через обычный словарь. Ключи http и https указывают на один и тот же адрес прокси-шлюза, а логин с паролем передаются прямо в URL.
import requests
proxy_url = 'http://USER:PASS@gw.knoxproxy.com:7000'
proxies = {
'http': proxy_url,
'https': proxy_url,
}
# Прокси на один запрос
response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=30)
print(response.json())
# Прокси на уровне сессии -- удобно для многих запросов подряд
session = requests.Session()
session.proxies.update(proxies)
for url in urls:
r = session.get(url, timeout=30)Настройка на уровне сессии предпочтительна при обходе десятков или сотен страниц: сессия переиспользует пул TCP-соединений и не заставляет повторять proxies в каждом вызове. Это особенно заметно при парсинге каталогов маркетплейсов вроде Wildberries или Ozon, где скрипт делает сотни запросов подряд.
httpx -- современная библиотека, которая работает и синхронно, и асинхронно через один и тот же API. Она сама обрабатывает аутентификацию прокси, HTTP/2 и пул соединений. Параметр proxy принимает строку с адресом прокси.
import httpx
proxy_url = 'http://USER:PASS@gw.knoxproxy.com:7000'
# Синхронный клиент
with httpx.Client(proxy=proxy_url) as client:
r = client.get('https://httpbin.org/ip')
print(r.json())
# Асинхронный клиент -- для парсинга на высокой скорости
async with httpx.AsyncClient(proxy=proxy_url) as client:
r = await client.get('https://httpbin.org/ip')
print(r.json())Асинхронный клиент подходит для сбора данных в больших объёмах: он держит сотни одновременных соединений без потоков операционной системы. Через backconnect-шлюз KnoxProxy каждый запрос автоматически получает новый выходной IP-адрес.
aiohttp -- самая распространённая асинхронная HTTP-библиотека в Python, её часто используют вместе с asyncio для парсинга на большой скорости. В отличие от httpx, прокси в aiohttp указывается отдельно в каждом запросе, а не один раз на клиента.
import aiohttp
import asyncio
async def fetch(url):
proxy = 'http://USER:PASS@gw.knoxproxy.com:7000'
async with aiohttp.ClientSession() as session:
async with session.get(url, proxy=proxy, timeout=aiohttp.ClientTimeout(total=30)) as resp:
return await resp.text()
# Параллельные запросы с разными выходными IP
async def scrape(urls):
proxy = 'http://USER:PASS@gw.knoxproxy.com:7000'
async with aiohttp.ClientSession() as session:
tasks = [session.get(url, proxy=proxy) for url in urls]
responses = await asyncio.gather(*tasks, return_exceptions=True)
return responsesЧтобы не дублировать строку с прокси в каждом вызове, вынесите её в отдельную функцию или конфигурационный файл. При больших объёмах парсинга это упрощает смену прокси-провайдера в одном месте вместо правки всего кода.
requests, httpx и большинство других HTTP-клиентов на Python автоматически читают переменные окружения HTTP_PROXY и HTTPS_PROXY. Это удобно, когда логин и пароль от прокси не должны попадать в код скрипта или в git-репозиторий.
export HTTP_PROXY="http://USER:PASS@gw.knoxproxy.com:7000"
export HTTPS_PROXY="http://USER:PASS@gw.knoxproxy.com:7000"
export NO_PROXY="localhost,127.0.0.1"После установки этих переменных обычный вызов requests.get() без явного параметра proxies уже пойдёт через прокси. Переменная NO_PROXY исключает локальные адреса из проксирования -- это важно для health-check эндпоинтов и локальных сервисов. В продакшене храните эти значения в CI/CD-секретах или .env-файле, который загружает python-dotenv, а не прописывайте их напрямую в shell-профиле.
Python -- самый частый выбор для парсинга маркетплейсов (Wildberries, Ozon, Avito) и автоматизации в соцсетях, потому что requests, httpx и aiohttp покрывают весь диапазон задач: от простого GET-запроса до параллельного сбора тысяч страниц. Для таких задач важно не только настроить прокси в коде, но и выбрать правильный тип прокси под нагрузку.
Резидентные прокси -- это IP-адреса, которые интернет-провайдер выдаёт реальным домашним подключениям. Они реже попадают под блокировку антибот-систем маркетплейсов и соцсетей, чем адреса дата-центров, потому что выглядят как обычный трафик живого пользователя. У KnoxProxy резидентные прокси доступны от $2.10/ГБ и покрывают 195+ стран, что даёт геотаргетинг парсинга на нужный регион.
Для задач без строгой антибот-защиты, например мониторинга цен на собственном сайте, дата-центровые прокси от $0.60/ГБ обходятся дешевле при том же коде на Python. Смена типа прокси не требует переписывать код выше -- меняется только адрес шлюза, логин и пароль.
Ready to put this into practice? Смотреть резидентные прокси
KnoxProxy Research Team · Технический контент
Сетевые инженеры и специалисты по прокси-инфраструктуре с опытом 10+ лет в антибот-системах, веб-скрапинге и маршрутизации IP-адресов.
Ethically sourced residential IPs across 195 countries. Instant activation, 14-day money-back guarantee.