Качество и ошибки · глоссарий

HTTP 407 Proxy Authentication Required

HTTP 407 Proxy Authentication Required — это код состояния, который прокси возвращает, если запрос поступил без действительных учётных данных: отсутствует заголовок Proxy-Authorization, указано неверное имя пользователя или пароль либо исходный IP не внесён в белый список, когда настроена только такая авторизация. Это аналог кода 401 со стороны прокси: запрос не покинул шлюз, а для устранения ошибки нужно исправить учётные данные или белый список.

Время чтения: 2 минуты Другие названия: ошибка 407, требуется аутентификация прокси Обновлено:

Частые причины#

  • После вставленных учётных данных остался пробел или перевод строки.
  • Для специальных символов пароля в URL прокси не применено URL-кодирование.
  • Клиент отправляет учётные данные только в ответ на запрос аутентификации, а используемый инструмент не поддерживает обмен с кодом 407; помогает предварительная отправка заголовка Proxy-Authorization.
  • После смены пароля истёк льготный период действия старого пароля.
  • В режиме белого списка изменился исходный IP.

Быстрая проверка#

cURL выводит ответ шлюза
curl -v -x http://USER:PASS@res.hodlproxy.com:9000 https://api.ipify.org

Как выглядит ответ 407#

Сырой ответ прокси
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="proxy"
Content-Length: 0

Этот код отправляет прокси, а не сайт: запрос так и не покинул шлюз. Клиент должен повторить его с заголовком Proxy-Authorization с верными учётными данными.

407, 401 и 403#

КодКто отправляетЧто означает
407ПроксиСначала авторизуйтесь на прокси
401СайтАвторизуйтесь на сайте
403Сайт (или политика прокси)Доступ запрещён независимо от авторизации

Как исправить 407 в популярных инструментах#

ИнструментРешение
cURLУкажите учётные данные в URL прокси или через --proxy-user user:pass; кодируйте спецсимволы в URL.
Python requestsИспользуйте http://user:pass@host:port в proxies; закодируйте пароль через urllib.parse.quote.
Node.js (axios)Передайте proxy: { host, port, auth: { username, password } } или прокси-агент с учётными данными в URL.
PuppeteerЗапустите с --proxy-server=host:port и вызовите page.authenticate({ username, password }).
PlaywrightПередайте proxy: { server, username, password } при запуске или для контекста.
Selenium / ChromeChrome игнорирует учётные данные в --proxy-server: используйте белый список IP, расширение или локальный ретранслятор, который их добавит.
Кодирование пароля со спецсимволами
from urllib.parse import quote
proxy = f"http://USER-cc-us:{quote('p@ss:w/rd', safe='')}@res.hodlproxy.com:9000"

Как это работает в HodlProxy#

HodlProxy возвращает статус 407 с кодом invalid_credentials. Текущая пара учётных данных отображается в панели управления, старый пароль после смены действует ещё десять минут, а при авторизации по белому списку для передачи параметров можно указать любое имя пользователя.

Часто задаваемые вопросы#

Почему я получаю 407 с правильным логином и паролем?

Обычно из-за невидимого символа, скопированного вместе с ними, незакодированного спецсимвола в URL прокси или клиента, который не отвечает на запрос 407. Проверьте те же данные через cURL, чтобы отделить проблему инструмента от проблемы аккаунта.

Можно ли вообще избежать 407?

Да: добавьте IP своего сервера в белый список в личном кабинете и подключайтесь без учётных данных. Таргетинг в этом случае задаётся в кабинете.

407 — это блокировка со стороны сайта?

Нет. Ответ 407 приходит от прокси до того, как запрос дошёл до сайта. Блокировка сайтом выглядит как 403, 429, капча или страница проверки.

Начните, когда будете готовы

Проверьте на реальном запросе.

Создайте аккаунт, пополните баланс на $20 и отправьте запрос из краткого руководства к своему целевому ресурсу. Срок действия оплаченного трафика не ограничен.