Помилка 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="/errors/403-forbidden">окремій сторінці</a>.

Чи може проксі видати 401?

Проксі на помилки входу відповідає кодом 407. Тому 401 через проксі майже завжди надсилає сам сайт або його API.

Чому після зміни IP сайт знову просить увійти?

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

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

Реєстрація за хвилину, доступи одразу після оплати.

Створити акаунт