Как прокси подключают в самом Python
Прокси для Python-скрипта проще всего задать в коде. В requests это аргумент proxies со словарём для http и https, в httpx параметр proxy у клиента (в старых версиях proxies). Для SOCKS5 в requests нужен дополнительный пакет requests[socks], адрес пишется как socks5://user:pass@ip:port. Второй путь: переменные окружения HTTP_PROXY и HTTPS_PROXY. Их по умолчанию читают requests, httpx и urllib, так что скрипт можно пустить через прокси, не трогая ни строчки.
Проблема в том, что переменные окружения работают не везде. Сырые сокеты, драйверы баз данных и часть асинхронных библиотек их не учитывают (aiohttp, например, читает их только с параметром trust_env). То же с консольными программами на других языках: одни понимают HTTP_PROXY, другие ждут свой ключ в командной строке, третьи прокси не поддерживают вообще.
Как сделать в ProxyBridge
- Установи ProxyBridge от имени администратора и введи ключ при первом запуске.
- На вкладке «Прокси» вставь адрес в формате socks5://user:pass@ip:port, http://user:pass@ip:port или ip:port:user:pass и нажми «Добавить».
- Нажми «Проверить» и сверь задержку, внешний IP и страну.
- На вкладке «Главная» нажми «Добавить программу» и укажи python.exe через «Выбрать файл...» или в списке запущенных, если скрипт уже работает.
- Справа в строке python.exe выбери этот прокси, у «Все остальные программы» оставь «Напрямую» и нажми «Подключить».
Когда код править нельзя или неудобно
В этих случаях прокси для консольной программы проще назначить снаружи. ProxyBridge перехватывает соединения на уровне сетевого драйвера и отправляет их в указанный HTTP или SOCKS5 прокси, поэтому самой программе ничего знать о прокси не нужно. По сути это requests через прокси без кода: скрипт остаётся прежним, меняется только путь трафика.
- Чужой скрипт, который ты запускаешь как есть и не хочешь поддерживать свою копию.
- Программа, собранная PyInstaller или Nuitka в один .exe, исходника под рукой нет.
- Консольная утилита без ключа --proxy и без поддержки переменных окружения.
- Скрипт на нескольких библиотеках, где одна ходит через прокси, а другая напрямую, и искать виновника долго.
Правило по имени процесса
На вкладке «Главная» правило привязано к имени процесса. Добавляешь строку с python.exe, выбираешь для неё сохранённый прокси, и весь TCP-трафик интерпретатора идёт через этот адрес, а браузер, мессенджер и обновления Windows остаются на прямом подключении, потому что в строке «Все остальные программы» стоит «Напрямую». Правило действует на все скрипты, запущенные этим интерпретатором: два скрипта через python.exe получат один IP. Если их нужно развести по разным адресам, собери один в отдельный .exe, у него будет своё имя процесса и своё правило. На Mac то же самое: добавь python3 по пути к исполняемому файлу.
Какие прокси брать, зависит от задачи. Для запросов к API и открытым данным обычно хватает серверных IPv4: они недорогие и стабильные. IPv6 дешевле, но подходит, только если целевой сервер принимает IPv6-подключения. Резидентные и мобильные адреса нужны реже, когда сервис по-разному отвечает домашним и серверным сетям. Прокси можно купить прямо в ProxyBridge или у провайдера, список есть на странице провайдеров.
Что стоит знать заранее
- Один процесс, один прокси. Смены IP на каждый запрос нет: если она нужна, её делают в коде или через шлюз провайдера с ротацией.
- Переключение адресов ручное: сохрани несколько прокси на вкладке «Прокси» (удобно через «Импорт из файла») и выбери нужный в строке python.exe. Изменение применяется сразу, даже во время подключения.
- UDP идёт через прокси, если это SOCKS5 с поддержкой UDP, иначе блокируется. DNS-запросы по умолчанию идут через прокси, это переключается в настройках.
- VPN-клиент выключать не нужно: ProxyBridge работает вместе с WireGuard, AmneziaWG и подобными программами.
Частые вопросы
Как запустить Python-скрипт через прокси без изменения кода?
Задай переменные окружения HTTP_PROXY и HTTPS_PROXY, если библиотека их читает. Если не читает, добавь python.exe на вкладке «Главная» ProxyBridge и выбери для него прокси: трафик пойдёт через прокси на уровне драйвера.
Можно ли дать разным Python-скриптам разные прокси?
Внутри одного python.exe нельзя: ProxyBridge различает программы по имени процесса. Разные IP получатся, если скрипты запускаются разными исполняемыми файлами, например один собран в отдельный .exe.
Есть ли ротация прокси для скрипта?
Автоматической смены IP по запросам в ProxyBridge нет. Ротацию делают в коде, через шлюз провайдера, который сам меняет IP, или вручную выбирают другой сохранённый прокси в строке программы.