Ограничение частоты
Многие сервисы защищаются от перегрузки и злоупотреблений, ограничивая число запросов за определённый интервал. Как только лимит превышен, вместо обычной страницы сервер возвращает код 429. Смысл прост: вы обращаетесь слишком часто, замедлитесь.
В отличие от 403, отказ здесь временный. Он связан не с вашими правами, а с количеством обращений за короткое время, поэтому через некоторое время запросы снова начинают проходить.
Из-за такого поведения многие сервисы ставят разные лимиты на разные действия: чтение страниц допускают чаще, а вход в аккаунт или отправку сообщений ограничивают строже, чтобы защитить пользователей от подбора паролей и рассылок.
Что могло превысить лимит
Обычный пользователь упирается в лимит после многократных обновлений страницы, множества открытых вкладок с автообновлением, частых попыток войти с неверным паролем или запуска расширений, которые массово запрашивают данные. Иногда причиной служат программы, работающие в фоне и делающие обращения без вашего участия.
Второй вариант связан с общим адресом: если вы находитесь за сетью, где множество людей выходит в интернет с одного IP, счётчик запросов складывается на всех. Тогда лимит достигается, хотя лично вы почти ничего не запрашивали.
Специальные системы защиты считают запросы не только по адресу, но и по признакам поведения: слишком быстрая прокрутка, одинаковые интервалы, отсутствие обычных заголовков. Поэтому иногда ограничение срабатывает и у обычного человека, использующего автоматизирующее расширение.
Что смотреть в ответе
Хорошо оформленный сервис в ответе добавляет заголовок Retry-After: он подсказывает, через сколько секунд можно повторить запрос, либо называет момент, после которого ограничение снимется. В консоли разработчика браузера этот заголовок виден на вкладке сетевых запросов. Также встречаются служебные заголовки с остатком лимита.
Если ошибка выводится в приложении, ищите в его настройках интервал обновления данных или включённую массовую синхронизацию.
При работе через приложение полезно заглянуть в его настройки или журнал: там иногда указано, какое именно действие вызвало ограничение. Если приложение опрашивает сервер слишком часто, увеличьте интервал обновления.
Как действовать посетителю
Остановитесь и подождите: от нескольких минут до часа, в зависимости от правил сервиса. Закройте лишние вкладки, отключите автообновление и расширения, которые обращаются к этому сайту. Не нажимайте обновление подряд, потому что каждое обращение может продлевать ограничение.
Если вы вошли в аккаунт, выйдите и зайдите заново после паузы. Если лимит связан с общим адресом, попробуйте другую сеть, например мобильную. Если ошибка не проходит сутки, напишите в поддержку сервиса.
Не пытайтесь менять сеть каждые несколько минут в надежде обмануть счётчик: многие сервисы учитывают также учётную запись и параметры браузера, и такие действия лишь задерживают возврат к нормальной работе.
Для разработчиков и владельцев
Клиентам API стоит добавлять паузы между запросами, использовать экспоненциальную задержку при повторах и учитывать Retry-After. Кэшируйте результаты, чтобы не запрашивать одно и то же.
Владельцу сервиса важно возвращать понятное сообщение и заголовки с указанием времени ожидания, а лимиты устанавливать с запасом для обычного поведения людей. Слишком жёсткие правила ломают нормальную работу и вызывают жалобы.
Полезной практикой считается возврат в ответе не только кода, но и понятного текста с указанием, какое ограничение сработало и когда оно закончится. Это заметно уменьшает нагрузку на поддержку и число повторных запросов.
Почему нельзя просто повторять запрос
Бесконечные повторы без пауз лишь усугубляют ситуацию: счётчик растёт, срок ограничения продлевается, а нагрузка на сервис увеличивается. Правильная тактика состоит в ожидании и уменьшении частоты обращений. Так вы вернёте нормальный режим быстрее.
Если вы разработчик клиента, реализуйте очередь запросов с ограничением скорости на своей стороне: так вы не превысите лимит даже при пиковой нагрузке и не получите ограничение из-за случайного всплеска.