Перейти к содержанию

Руководство · На русском

Как исправить ошибку 407 у прокси

При ошибке 407 сначала определите, на каком этапе получен отказ, и проверьте код шлюза. Неверные учётные данные и исчерпанный баланс могут иметь одинаковый HTTP-статус. Затем повторите один небольшой запрос с теми же настройками подключения.

Инструкции в этом разделе — на русском. Магазин, личный кабинет, документация и условия заказа пока доступны на английском.

Опубликовано:

Короткие ответы

Что означает 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-статус сервера. Если туннель уже открыт, а ошибка пришла позже, нельзя автоматически считать её отказом первоначального шлюза. Такой порядок проверки особенно полезен в цепочке корпоративных сетевых компонентов.

Пять проверок перед заменой пароля

  1. Сверьте доступный баланс и подробный код ошибки. При E_CAP_EXCEEDED повторная отправка того же пароля не восстанавливает трафик.
  2. Сравните полное сгенерированное имя пользователя и текущий пароль прокси. Пароль аккаунта и ключ API предназначены для других действий.
  3. Проверьте пару «протокол — порт». HTTP-клиент на порту SOCKS5 может завершиться ещё до авторизации; это не подтверждает неправильный пароль.
  4. Проверьте формат передачи секрета. Компоненты URL требуют кодирования, а отдельное поле авторизации обычно принимает исходное значение.
  5. Проверьте реально работающий процесс. После изменения секрета старый контейнер, служба или очередь могут продолжать использовать прежнее значение.

Меняйте одно условие за раз и сохраняйте несекретный результат проверки. Одновременная смена страны, пула, пароля и библиотеки делает диагноз неоднозначным. Сначала воспроизведите минимальный запрос, затем сравните его с приложением. Если возникает только общая надпись «ошибка прокси», найдите класс исключения или статус без публикации полного сообщения с учётными данными.

Проверьте имя пользователя целиком

Откройте конструктор подключения — на английском и возьмите его результат за основу. В имени находятся учётная часть, пул, страна и параметры ротации. Одного короткого имени аккаунта может быть недостаточно. Сохраните порядок и регистр сгенерированных токенов; проверьте случайные пробелы и переносы строки после копирования. Символы, которые действительно входят в пароль, удалять нельзя.

Ошибка разбора имени документирована как 400 E_USERNAME_PARSE. Не записывайте её в «неверный пароль» только потому, что клиент показал общее исключение. Если нужна sticky-сессия, сохраняйте полное имя для одной последовательности действий и используйте допустимый идентификатор. Правила режима объясняет руководство по ротации и сессиям.

Повторите ограниченную проверку curl

В интерактивном терминале sh, bash или zsh замените всё примерное имя в команде полным значением из конструктора. Выберите доступные вам настройки; строка с кодом страны не подтверждает наличие. Укажите только имя, без двоеточия и пароля. curl запросит пароль отдельно. Команда делает один запрос и выводит два статуса, не сохраняя тело ответа.

Команда сохранена без изменений из английского руководства. Пароль вводится в терминале; таймаут передачи не ограничивает ожидание ввода. Для фонового процесса используйте свой механизм секретов.

Код CONNECT и код ответа назначенияsh
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 с учётными данными в такой отчёт не включайте. Другие инструкции доступны в русском разделе.

Допустимое использование

Проверяйте свои сервисы или разрешённые источники, соблюдайте правила доступа и ограничения частоты. Учётные данные прокси не дают права на доступ к сайту. Правила использования — на английском.

Следующий шаг

Ошибка 407 у прокси: причины и исправление · Portproof