WeProxy
Python

Язык / SDK

Настройка WeProxy proxy для Python

Частый способ использовать proxy в Python — библиотека requests. Не храните учётные данные в коде; читайте их из переменных окружения. Ниже примеры HTTP-туннеля и SOCKS5.

Один из самых распространённых способов использовать прокси в проектах Python — библиотека requests. Прокси можно применить к одному запросу, к сессии или ко всем совместимым запросам через переменные окружения. В этом руководстве показаны примеры HTTP и SOCKS5 для подключения WeProxy.

Схема подключения WeProxy

Требования

Установите Python 3 и библиотеку Requests:

python -m pip install requests

Если будете использовать SOCKS5, установите дополнительные зависимости:

python -m pip install "requests[socks]"

В панели WeProxy получите хост, порт, имя пользователя, пароль и протокол, который поддерживает ваш продукт.

Подготовка переменных окружения

Храните учётные данные в переменных окружения операционной системы, а не в исходном коде.

macOS/Linux:

export WEPROXY_HOST="PROXY_HOST"
export WEPROXY_PORT="PROXY_PORT"
export WEPROXY_USERNAME="PROXY_USERNAME"
export WEPROXY_PASSWORD="PROXY_PASSWORD"

PowerShell:

$env:WEPROXY_HOST="PROXY_HOST"
$env:WEPROXY_PORT="PROXY_PORT"
$env:WEPROXY_USERNAME="PROXY_USERNAME"
$env:WEPROXY_PASSWORD="PROXY_PASSWORD"

Эти переменные приведены лишь как пример. В продакшене используйте менеджер секретов и не добавляйте файлы .env в Git.

Использование HTTP-прокси с Requests

import os
from urllib.parse import quote

import requests

host = os.environ["WEPROXY_HOST"]
port = os.environ["WEPROXY_PORT"]
username = quote(os.environ["WEPROXY_USERNAME"], safe="")
password = quote(os.environ["WEPROXY_PASSWORD"], safe="")

proxy_url = f"http://{username}:{password}@{host}:{port}"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

response = requests.get(
    "https://api.ipify.org?format=json",
    proxies=proxies,
    timeout=30,
)
response.raise_for_status()
print(response.json())

То, что URL прокси начинается с http://, не означает, что нельзя подключиться к HTTPS-целям. Requests может устанавливать туннель к HTTPS-целям через HTTP-прокси. Если панель указывает другую схему, ориентируйтесь на данные продукта.

Использование прокси с Requests Session

Чтобы использовать ту же настройку для нескольких запросов, можно создать Session:

with requests.Session() as session:
    session.proxies.update(proxies)
    response = session.get("https://api.ipify.org?format=json", timeout=30)
    response.raise_for_status()
    print(response.json())

Согласно документации Requests, значения прокси в системном окружении могут переопределить session.proxies. Когда нужен однозначный выбор прокси, надёжнее передавать параметр proxies=proxies напрямую в каждый запрос.

Использование SOCKS5-прокси

proxy_url = f"socks5h://{username}:{password}@{host}:{port}"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

response = requests.get(
    "https://api.ipify.org?format=json",
    proxies=proxies,
    timeout=30,
)
print(response.json())

При socks5h:// разрешение доменного имени выполняется на стороне прокси. При socks5:// DNS-разрешение выполняется на стороне клиента.

Ошибки прокси в Python

407 Proxy Authentication Required

Неверное имя пользователя или пароль. Проверьте, что специальные символы прошли URL-кодирование и что продукт поддерживает аутентификацию по имени пользователя и паролю.

ProxyError или тайм-аут соединения

Проверьте хост, порт, протокол и статус пакета. Если цель не поддерживает IPv6, соединение через IPv6-прокси может не установиться.

Виден реальный IP

Убедитесь, что словарю proxies передан в запрос. Переменная окружения NO_PROXY может исключать целевой домен.

Источник

Другие интеграции

Смотрите другой инструмент?

Начать

Подключитесь к WeProxy сейчас

Создайте аккаунт, сразу используйте 100 МБ бесплатного residential-трафика и повторите шаги выше в своей среде.