Перейти к содержимому

Подключение из Python ​

Пример отправляет запрос через выделенную статическую точку подключения. Данные берутся из окружения процесса; по умолчанию HTTP-прокси используется для HTTPS-адреса. Получения и ротации IP нет.

Подготовка ​

Задайте PROXY_HOST, PROXY_PORT, PROXY_USERNAME, PROXY_PASSWORD в терминале, контейнере или среде развёртывания программы. Используйте актуальные данные панели и порт выбранного протокола. Не помещайте реальные пароли в репозиторий, журналы или клиентский код.

Среда и зависимости ​

Нужны Python 3 и requests с поддержкой SOCKS. Сохраните код как proxy_example.py.

sh
python -m pip install "requests[socks]"
python proxy_example.py

Настройка подключения ​

python
import os
from urllib.parse import quote
import requests

host = os.environ["PROXY_HOST"].strip("[]")
port = int(os.environ["PROXY_PORT"])
user = quote(os.environ["PROXY_USERNAME"], safe="")
password = quote(os.environ["PROXY_PASSWORD"], safe="")
scheme = os.environ.get("PROXY_SCHEME", "http")
if scheme not in {"http", "socks5h"}:
    raise ValueError("PROXY_SCHEME must be http or socks5h")
host = f"[{host}]" if ":" in host else host
proxy_url = f"{scheme}://{user}:{password}@{host}:{port}"

try:
    with requests.Session() as session:
        session.trust_env = False
        session.proxies = {"http": proxy_url, "https": proxy_url}
        response = session.get("https://ip123.in/ip.json", timeout=(10, 30))
        response.raise_for_status()
        print(response.json())
except requests.RequestException as error:
    raise SystemExit(f"Proxy request failed: {type(error).__name__}") from None

По умолчанию PROXY_SCHEME=http. Для SOCKS5 задайте socks5h и соответствующий SOCKS5-порт: имя назначения будет разрешаться удалённо. Смена протокола не меняет выделенный статический выход.

Если подключение не работает ​

Если пример работает, а приложение нет, проверьте процесс, реально выполняющий запрос, настройки SDK, тайм-ауты и повторы. Не отключайте проверку TLS-сертификатов. Пример не выводит ошибки с данными доступа; диагностические журналы тоже нужно очищать. См. FAQ.