Короткие ответы
Что означает 407 Proxy Authentication Required?
Это HTTP-статус, связанный с авторизацией на прокси. Если шлюз вернул его при CONNECT, туннель не открыт и HTTPS-запрос ещё не передан сайту. Причину уточняет код шлюза: одного числа 407 недостаточно для выбора действия.
Может ли 407 означать, что закончились ГБ?
Да. В документации шлюза E_CAP_EXCEEDED относится к исчерпанному балансу или сроку его действия, а E_AUTH_INVALID — к учётным данным. Проверьте баланс и условия в аккаунте, прежде чем создавать новый пароль.
Нужно ли кодировать пароль?
Для URL отдельно закодируйте исходные имя и пароль один раз. Не кодируйте весь адрес прокси. В отдельное поле пароля или интерактивный запрос curl вводите исходное значение, а не его представление для URL.
Почему Requests не возвращает status_code 407?
При отказе CONNECT для HTTPS Requests может выбросить ProxyError до появления ответа сайта. Обычный HTTP-запрос через прокси может получить ответ 407. Проверка одного response.status_code не охватывает оба варианта.
Поможет ли смена IP?
Смена режима ротации не исправляет неверный пароль и не пополняет трафик. Сначала разберите отказ шлюза. После исправления проверьте одну разрешённую операцию, прежде чем возвращать в работу всю очередь.
Отделите шлюз от сайта назначения
Прокси использует заголовки Proxy-Authenticate и Proxy-Authorization. Это отдельный механизм от входа на сайт назначения. Для HTTPS через HTTP-шлюз сначала выполняется CONNECT. Если отказ получен в ответ на него, изменение пароля сайта или его cookie не устраняет причину. Определение HTTP 407 — на английском.
Запишите два этапа: результат открытия туннеля и код ответа, полученного внутри него. При connect=407 target=000 ответ назначения отсутствует. Число 000 — обозначение curl, а не HTTP-статус сервера. Если туннель уже открыт, а ошибка пришла позже, нельзя автоматически считать её отказом первоначального шлюза. Такой порядок проверки особенно полезен в цепочке корпоративных сетевых компонентов.
Пять проверок перед заменой пароля
- Сверьте доступный баланс и подробный код ошибки. При E_CAP_EXCEEDED повторная отправка того же пароля не восстанавливает трафик.
- Сравните полное сгенерированное имя пользователя и текущий пароль прокси. Пароль аккаунта и ключ API предназначены для других действий.
- Проверьте пару «протокол — порт». HTTP-клиент на порту SOCKS5 может завершиться ещё до авторизации; это не подтверждает неправильный пароль.
- Проверьте формат передачи секрета. Компоненты URL требуют кодирования, а отдельное поле авторизации обычно принимает исходное значение.
- Проверьте реально работающий процесс. После изменения секрета старый контейнер, служба или очередь могут продолжать использовать прежнее значение.
Меняйте одно условие за раз и сохраняйте несекретный результат проверки. Одновременная смена страны, пула, пароля и библиотеки делает диагноз неоднозначным. Сначала воспроизведите минимальный запрос, затем сравните его с приложением. Если возникает только общая надпись «ошибка прокси», найдите класс исключения или статус без публикации полного сообщения с учётными данными.
Проверьте имя пользователя целиком
Откройте конструктор подключения — на английском и возьмите его результат за основу. В имени находятся учётная часть, пул, страна и параметры ротации. Одного короткого имени аккаунта может быть недостаточно. Сохраните порядок и регистр сгенерированных токенов; проверьте случайные пробелы и переносы строки после копирования. Символы, которые действительно входят в пароль, удалять нельзя.
Ошибка разбора имени документирована как 400 E_USERNAME_PARSE. Не записывайте её в «неверный пароль» только потому, что клиент показал общее исключение. Если нужна sticky-сессия, сохраняйте полное имя для одной последовательности действий и используйте допустимый идентификатор. Правила режима объясняет руководство по ротации и сессиям.
Повторите ограниченную проверку curl
В интерактивном терминале sh, bash или zsh замените всё примерное имя в команде полным значением из конструктора. Выберите доступные вам настройки; строка с кодом страны не подтверждает наличие. Укажите только имя, без двоеточия и пароля. curl запросит пароль отдельно. Команда делает один запрос и выводит два статуса, не сохраняя тело ответа.
Команда сохранена без изменений из английского руководства. Пароль вводится в терминале; таймаут передачи не ограничивает ожидание ввода. Для фонового процесса используйте свой механизм секретов.
curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -o /dev/null -w 'connect=%{http_connect} target=%{response_code}\n' \
-x "http://gw.portproof.org:7000" \
--proxy-user "USERNAME-mbl-us-rot-auto10" \
https://api.portproof.org/v1/echo-ipПараметр --disable отключает стандартный файл настроек curl, а --noproxy задаёт пустой список исключений. Поэтому маршрут этой проверки указан явно. Согласуйте его с настройками своей сети. Предел соединения и общий предел передачи помогают не оставлять зависший запрос; они не измеряют обещанную скорость сервиса. Команда не включает автоматическое следование перенаправлениям или цикл повторов.
Нулевой код завершения curl не гарантирует успешный HTTP-ответ: без специальной настройки ответы 4xx и 5xx могут не считаться транспортной ошибкой. Сопоставьте код завершения, CONNECT и итоговый HTTP-статус. В сохранённой локальной проверке английского примера отказ CONNECT дал connect=407 target=000. Этот результат относится к тестовому шлюзу и не является измерением доступности рабочего пула.
Не включайте трассировку оболочки и не отправляйте полный диагностический вывод с заголовками авторизации. Base64 не превращает секрет в безопасные данные. Подстановка переменной с паролем в аргумент тоже может раскрыть значение через сведения о процессе. Дополнительные примеры есть в руководстве curl, правила передачи учётных данных — в справочнике curl на английском.
Выберите действие по коду шлюза
| Ответ | Что проверить |
|---|---|
| 407 · E_AUTH_INVALID | Полное имя и текущий пароль прокси. |
| 407 · E_CAP_EXCEEDED | Остаток трафика и условия его действия в аккаунте. |
| 400 · E_USERNAME_PARSE | Допустимые токены и порядок полей имени. |
| 429 · E_RATE_LIMITED_CONN | Количество параллельных соединений и задержку повторов. |
| 429 · E_SESSION_LIMIT | Число одновременно открытых именованных сессий. |
| 502 · E_NO_STOCK_COUNTRY | Текущее наличие выбранного пула и страны. |
Таблица описывает конкретные коды Portproof, а не универсальное значение каждого HTTP-статуса. Некоторые клиенты показывают только отказ CONNECT и скрывают подробный код шлюза. Тогда отдельно проверьте баланс и конфигурацию. Из одного числа 502 нельзя вывести отсутствие устройств, а из одного 407 — причину отказа. Справочник ошибок — на английском.
Если curl работает, проверьте приложение
Requests, HTTPX, браузер и Node.js имеют разные интерфейсы настройки прокси. В Python обрабатывайте сетевые исключения наряду с HTTP-ответами: отказ CONNECT появляется раньше ответа назначения. Начните с готового примера Requests. Проверьте, какие переменные доступны именно работающему процессу, но не печатайте всё окружение в журнал.
В Playwright используйте объект proxy с сервером, именем и паролем. Параметр httpCredentials относится к сайту, а не к прокси. Проверяйте переход страницы из нужного браузерного контекста, а не отдельный запрос другого клиента. Инструкция Playwright. Разница протоколов разобрана в сравнении HTTP и SOCKS5.
Заменяйте пароль согласованно
Если пароль раскрыт, замените его и обновите все исполнители, которые им пользуются. Не считайте каждую ошибку 407 поводом для очередной замены: это не устраняет пустой баланс или неправильный протокол. Согласуйте обновление секрета, приостановите выдачу новых задач и проверьте один запрос после перезапуска нужных процессов. Убедитесь, что старые задания не продолжают работать с прежней конфигурацией.
Когда echo-проверка проходит, выполните одну разрешённую операцию приложения и проверьте ожидаемое содержимое. Затем возобновляйте очередь с ограниченной параллельностью. Если ошибка сохраняется, запишите время с указанием часового пояса, версию клиента, протокол, порт, класс ошибки и несекретные настройки. Пароль, ключ API и URL с учётными данными в такой отчёт не включайте. Другие инструкции доступны в русском разделе.
Допустимое использование
Проверяйте свои сервисы или разрешённые источники, соблюдайте правила доступа и ограничения частоты. Учётные данные прокси не дают права на доступ к сайту. Правила использования — на английском.