Ошибка 401 Unauthorized: сайт просит авторизоваться

Запрос дошёл до сайта, но сайт не принял ваши данные входа или вообще их не получил. Логин и пароль от прокси здесь ни при чём.

Обновлено · Редакция Prokso

Коротко
  • Код 401 отправляет сайт: прокси вас пропустил, а данные входа на сайт не подошли
  • Чаще всего истёк срок действия токена или сессии
  • Убедитесь, что код именно 401, а не 407, и получите новый токен

Что означает ошибка

Код 401 означает, что для доступа к ресурсу нужна аутентификация, а действительных учётных данных в запросе нет. По стандарту HTTP (RFC 9110) сервер вместе с 401 отправляет заголовок WWW-Authenticate, в котором указывает, как именно нужно авторизоваться.

Главное — не перепутать 401 с 407. Код 407 отправляет прокси, когда не принял логин и пароль от прокси, и сопровождает его заголовком Proxy-Authenticate. Код 401 отправляет сайт: прокси вас уже пропустил, запрос дошёл до адресата.

Кто возвращает ошибку: 407 — прокси, 401 и 403 — сам сайтВаша программаПроксиgw.prokso.comСайт407 — отвечает прокси: логин, пароль или остаток трафика401 / 403 — отвечает сайт: вход на сайт или доступ
Кто возвращает ошибку: 407 — прокси, 401 и 403 — сам сайт

Причины

  • Истёк срок действия токена или сессии. Токены доступа живут ограниченное время; после этого сайт или API отвечает 401.
  • Ключ API не передан или передан не там. Ключ стоит не в том заголовке, с ошибкой в названии или с лишним пробелом.
  • Заголовок Authorization потерялся при переадресации. Некоторые библиотеки удаляют его, когда переадресация ведёт на другой домен. Так, например, делает Python requests.
  • Данные от прокси вписаны в данные сайта. Логин и пароль от прокси попали в Authorization вместо настроек прокси.
  • Сайт сбросил сессию после смены адреса. Часть сайтов просит войти заново, когда запросы одной сессии приходят с разных IP.

Как исправить

  1. Проверьте, кто ответил: если код 407 — это вопрос к данным прокси, см. страницу о 407. Если 401 — ищите причину в данных входа на сайт.
  2. Получите новый токен или войдите в аккаунт сайта ещё раз.
  3. Сверьте название заголовка и формат ключа с документацией API, которым пользуетесь.
  4. Держите данные прокси в настройках прокси программы, а данные сайта — в заголовках запроса. Пример правильного разделения — в инструкции Python requests.
  5. Если сайт привязывает сессию к адресу, работайте в рамках одной сессии с фиксированным IP: порты 10000–20000 держат один IP от 1 до 120 минут.

Как проверить, что всё заработало

Выполните тот же запрос без прокси с теми же данными входа. Если без прокси тоже 401 — проблема в токене или ключе. Если без прокси всё работает, сравните заголовки обоих запросов и посмотрите, не менялся ли IP посреди сессии.

Диагностика за 2 минуты

Сначала вставьте строку в проверку прокси. Если там прокси работает, причина в программе или её настройках. Если нет — проверьте строку из терминала:

curl -v -x "http://ЛОГИН:ПАРОЛЬ@gw.prokso.com:823" https://api.ipify.org
  • Строка < HTTP/1.1 407 сразу после CONNECT — отвечает прокси. Название после кода, например NO_USER, подсказывает причину.
  • Прокси ответил на CONNECT кодом 200, а дальше пришёл другой код — прокси работает, этот ответ дал сайт.
  • Никакого ответа, только тайм-аут — соединение не дошло до прокси: проверьте хост, порт и сеть.

Вопросы и ответы

Чем 401 отличается от 403?

401 означает «вы не аутентифицированы»: сайт не знает, кто вы. 403 означает «знаю, кто вы, но доступ запрещён». О 403 через прокси — на <a href="/ru/errors/403-forbidden">отдельной странице</a>.

Может ли прокси выдать 401?

На ошибки входа прокси отвечает кодом 407. Поэтому 401 через прокси почти всегда отправляет сам сайт или его API.

Почему после смены IP сайт снова просит войти?

Часть сайтов считает смену адреса признаком другого устройства и сбрасывает сессию. Для такой работы используйте фиксированный IP и задайте длительность сессии, достаточную для вашей задачи.

Резидентские $1.59, мобильные $2.50, серверные $0.65 за 1 ГБ

Регистрация за минуту, доступы сразу после оплаты.

Создать аккаунт