22.09.2026

Ошибка 429 Too Many Requests: почему сайт вас лимитирует и что делать

Скрипт работал час и вдруг начал возвращать одну и ту же страницу с текстом «Too Many Requests». Или браузер в антидетекте перестал грузить ленту и показывает пустой экран. Ошибка 429 — это не поломка прокси и не бан аккаунта, а счётчик на стороне сайта, который вы переполнили. Разберём, как понять, кого именно лимитируют — вас, ваш IP или всю подсеть, — и что с этим делать.

Что означает ошибка 429 и при чём тут прокси

HTTP-код 429 Too Many Requests сервер отдаёт, когда вы превысили разрешённое число запросов за окно времени. Формулировка в RFC 6585 короткая: клиент отправил слишком много запросов за отведённый период. Окно и лимит задаёт сам сайт — это может быть 60 запросов в минуту, 1000 в час или 5 попыток логина за 15 минут.

Прокси в этой истории — не причина, а адрес, по которому вас считают. Когда говорят про ошибку прокси 429, обычно имеют в виду одно из трёх:

  • Лимит на IP. Сайт считает запросы с адреса выхода. Один прокси = один счётчик. Разложите нагрузку на десять адресов — счётчик у каждого будет в десять раз меньше.
  • Лимит на аккаунт или токен. Считает API-ключ, сессионную куку или ID пользователя. Смена IP здесь не поможет вообще: хоть сто прокси, счётчик один.
  • Лимит на подсеть или ASN. Сайт агрегирует адреса по владельцу блока. Если вы гоняете трафик через соседние адреса одной сети, они складываются в общий счётчик.

Отдельный случай — когда 429 отдаёт не целевой сайт, а промежуточный слой: Cloudflare, API-шлюз, сам прокси-провайдер. Отличить легко по заголовкам ответа, об этом ниже.

Как понять, кто именно вас лимитирует

Первым делом посмотрите полный ответ, а не только код. В теле и заголовках почти всегда лежит подсказка. Через curl:

curl -i -x http://user:pass@[2a03:4000::1]:8080 https://example.com/api/items

Что искать в заголовках:

ЗаголовокЧто говорит
Retry-After: 60Через сколько секунд можно повторить. Иногда вместо секунд стоит дата.
X-RateLimit-LimitСколько запросов разрешено в окне.
X-RateLimit-Remaining: 0Сколько осталось. Ноль — вы упёрлись в потолок.
X-RateLimit-ResetМомент сброса счётчика, обычно Unix-время.
Server: cloudflare + cf-rayОтвечает защита перед сайтом, а не сам сайт.

Дальше — простой тест на три минуты, который отвечает на главный вопрос:

  1. Повторите тот же запрос через другой прокси в другой стране, с теми же куками и заголовками. Прошло — лимит считается по IP.
  2. Повторите через тот же прокси, но без авторизации (чистая сессия, без кук и API-ключа). Прошло — считают по аккаунту.
  3. Не прошло ни там, ни там, а браузер с домашнего IP открывает сайт нормально — скорее всего, вы в лимите по подсети или по ASN.

Если 429 приходит мгновенно, за доли секунды, и без Retry-After — обычно это не счётчик запросов, а антибот-правило, сработавшее на отпечаток клиента. Такое лечится не паузами, а нормальным User-Agent, порядком заголовков и живым профилем в антидетект-браузере.

Что делать: рабочие способы по порядку

1. Уважайте Retry-After

Самое частое, что делают не так, — получив 429, бьют повторным запросом сразу же. Многие сайты за это продлевают окно блокировки. Правильный алгоритм: увидели 429 — прочитали Retry-After — спим ровно столько — идём дальше. Если заголовка нет, работает экспоненциальная пауза: 2, 4, 8, 16 секунд, максимум 5 попыток, дальше — отложить задачу.

import time, requests

def get(url, proxies, tries=5):
    delay = 2
    for _ in range(tries):
        r = requests.get(url, proxies=proxies, timeout=30)
        if r.status_code != 429:
            return r
        wait = int(r.headers.get("Retry-After", delay))
        time.sleep(wait)
        delay *= 2
    return None

2. Снизьте темп до того, как упрётесь

Держать 1–2 запроса в секунду на один IP — грубое, но рабочее правило для сайтов без документированного API. Если лимит известен из документации, ставьте себе 70–80% от него: останется запас на ретраи и параллельные процессы, о которых вы забыли.

3. Разложите нагрузку на пул адресов

Когда лимит считается по IP, единственный способ увеличить пропускную способность — увеличить число адресов. Арифметика прямая: сайт разрешает 60 запросов в минуту с адреса, вам нужно 600 — значит, нужно минимум 10 прокси плюс запас на отвалы. Как считать размер пула и чем ротировать, подробно разобрано в статье про прокси для парсинга.

Важная деталь: ротация должна быть согласована с сессией. Если сайт привязывает куку к IP, смена адреса в середине сессии даст не 429, а 403 или редирект на логин. Для авторизованных аккаунтов правило обратное — один аккаунт живёт на одном адресе.

4. Разведите адреса по сетям и странам

Десять прокси подряд из одного блока — это для агрегирующего лимитера почти то же самое, что один адрес. Берите адреса из разных стран и разных сетей. У нас доступны 50 стран, и цена везде одинаковая, так что разнести пул по гео ничего не стоит.

5. Проверьте, что лимит не ваш собственный

Классическая ситуация: скрипт вроде бы делает 1 запрос в секунду, а по факту 20 — потому что запущен в 20 потоков, каждый со своим таймером. Посчитайте реальный исходящий темп, а не задуманный. То же самое с ретраями: цикл повторов внутри цикла страниц легко даёт кратный рост нагрузки.

Чего делать не стоит

  • Долбить в лоб. Повторы без пауз превращают временный лимит в долгий бан IP.
  • Менять прокси на каждый запрос при лимите по аккаунту. Вы просто сожжёте пул, а счётчик не сдвинется. Хуже того — резкая смена гео в рамках одной сессии сама по себе выглядит подозрительно.
  • Считать 429 поломкой прокси. Если адрес отдаёт 429 на один сайт и нормально работает на остальных — прокси исправен. Отличить лимит от реально мёртвого адреса помогает проверка прокси: попробуйте через него открыть любой нейтральный сайт.
  • Игнорировать документацию API. У большинства публичных API лимиты описаны прямо, и там же обычно есть способ их поднять — ключ другого тарифа, батч-эндпоинт или вебхуки вместо опроса.

Когда 429 приходит от Cloudflare

Если в ответе есть cf-ray и Server: cloudflare, лимит поставил владелец сайта в панели Cloudflare, а не серверный код. Такие правила часто настроены на путь: например, 429 ловит только /api/search, а обычные страницы открываются свободно. Проверить просто — запросите главную страницу тем же прокси. Открылась — правило точечное, и достаточно снизить темп именно по этому пути или найти другой источник тех же данных.

Иногда вместо честного 429 Cloudflare отдаёт 403 или страницу с проверкой. Это уже не про количество запросов, а про то, как выглядит ваш клиент.

Практический вывод

429 — это сообщение о темпе, а не о запрете. Порядок действий всегда один: прочитать заголовки ответа, определить, по чему считают (IP, аккаунт, подсеть), и уже под это подбирать решение. По аккаунту — снижать темп и разводить задачи по разным аккаунтам. По IP — увеличивать пул адресов и разносить его по сетям. И в любом случае соблюдать Retry-After: сайт прямым текстом говорит, когда вернуться.

Если упираетесь в лимит по IP, расширить пул у нас стоит 10 ₽ за прокси на 30 дней в любой из стран — HTTP и SOCKS5 работают на одном адресе, выдача занимает около минуты после оплаты. Детали по тарифу и настройке — на отдельных страницах.

Первый прокси — бесплатно

Промокод на 10 ₽ — это целый прокси на месяц

Активируйте промокод в боте, и на баланс придёт 10 ₽ — ровно столько стоит один прокси на 30 дней. Карту привязывать не нужно, оплаты не будет.

Privetbonus

Вводится ровно так, с большой буквы.

Как активировать

  1. Открыть бота @ModJus_bot
  2. Нажать 👤 Профиль
  3. Дальше 💰 Пополнить
  4. Выбрать 🔖 Промокоды и отправить код
Забрать бесплатный прокси