Перейти к содержимому

Что такое ошибка 429 Too Many Requests?

Что такое ошибка 429 Too Many Requests?

Ошибка 429 Too Many Requests — это HTTP-статус, который сервер возвращает, когда клиент (браузер, API-клиент, бот) отправляет слишком много запросов за короткий промежуток времени. В контексте WordPress это означает, что сервер или система защиты сочла ваши действия подозрительными и временно заблокировала доступ.

Код 429 появился в спецификации HTTP/1.1 (RFC 6585) именно для того, чтобы отделить ситуации rate limiting от других ошибок. Раньше для этого использовали 503 Service Unavailable, что было некорректно.

Как выглядит ошибка 429

В браузере пользователь видит одно из следующих сообщений:

  • 429 Too Many Requests
  • «Слишком много запросов»
  • «Вы выполняете слишком много действий. Попробуйте позже.»
  • Белый экран с сообщением от плагина защиты (Wordfence, Sucuri, Limit Login Attempts)
  • В админке WordPress: «Вы превысили лимит попыток входа. Повторите через 15 минут.»

Основные причины появления 429 в WordPress

1. Слишком много попыток входа в wp-admin

Самый частый сценарий. Плагины безопасности (Wordfence, iThemes Security, Limit Login Attempts Reloaded) блокируют IP после N неудачных попыток входа. Обычно лимит — 3–5 попыток.

Как проверить: если вы не можете зайти в админку, а браузер выдаёт 429 — скорее всего, проблема в этом. Проверьте настройки плагина безопасности через базу данных (таблица wp_options).

Решение:

// Временно отключить лимит попыток входа через wp-config.php
define('WP_ALLOW_REPAIR', true);

Но лучше зайти в phpMyAdmin и очистить опции соответствующего плагина:

DELETE FROM wp_options WHERE option_name LIKE '%limit_login%';

2. Агрессивное сканирование плагинами безопасности

Wordfence и аналоги имеют встроенные сканеры, которые проверяют файлы сайта. Если на сервере несколько сайтов или слабый хостинг, эти сканеры могут сами же вызвать 429 — сервер начинает блокировать собственные запросы.

Решение: В настройках Wordfence → «Сканирование» → увеличить интервал между сканированиями или отключить «Сканировать файлы в фоне».

3. DDoS-атака или бот-трафик

Если 429 видит НЕ админ, а обычные посетители — это может быть легитимный рост трафика, который серверный WAF (Cloudflare, Sucuri) принял за DDoS.

Решение:
— Проверьте Cloudflare Analytics → Security Events
— Если атаки нет, а Cloudflare блокирует — ослабьте настройки WAF в панели Cloudflare
— Для обычного роста трафика — включите Cloudflare APO (Automatic Platform Optimization) или кэширование страниц

4. Лимиты хостинга (нагрузка на CPU/MySQL)

Некоторые хосты (особенно дешёвые shared-хостинги) ограничивают количество запросов к базе данных или PHP-воркеров. При пиковой нагрузке хост может отдавать 429 вместо 503.

Как проверить: запросите у хостинга логи resource usage или посмотрите панель управления (cPanel → CPU & Concurrent Connection Usage).

Решение: Переход на более дорогой тариф или VPS. На shared-хостинге кэширование страниц (WP Rocket, Flying Press) критически важно.

5. Проблемы с REST API или внешними интеграциями

Если 429 появляется при работе REST API — например, при интеграции с WooCommerce, плагинами оплаты или внешними сервисами — значит, API-клиент превышает лимит запросов к внешнему сервису (платёжный шлюз, CRM, сервис email-рассылки).

Решение: Добавить задержки между запросами в коде интеграции и включить механизм retry with backoff:

function safe_api_call($url, $max_retries = 3) {
    for ($i = 0; $i < $max_retries; $i++) {
        $response = wp_remote_get($url);
        $code = wp_remote_retrieve_response_code($response);
        if ($code !== 429) return $response;
        sleep(pow(2, $i)); // Exponential backoff: 1s, 2s, 4s
    }
    return new WP_Error('rate_limited', 'API временно недоступен');
}

Диагностика ошибки 429

Шаг 1. Определите источник блокировки

Проверьте заголовки ответа. Используйте инструменты разработчика браузера (F12 → Network):

Retry-After: 120
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0
X-Wordfence: block
  • Retry-After — сколько секунд ждать до следующей попытки
  • X-Wordfence: block — блокировка Wordfence
  • CF-* заголовки — блокировка Cloudflare
  • Server: LiteSpeed — возможно, сработал LSCache rate limiter

Шаг 2. Проверьте IP адрес

На shared-хостинге ваш IP могут делить соседи-сайты. Если один сайт атакуют — 429 получите и вы на своём сайте.

Проверка: curl -I https://вашсайт.рф с разных IP (VPN, мобильный интернет).

Шаг 3. Исключите виновника из блокировки

В Wordfence: Wordfence → Blocking → Whitelist — добавьте свой IP.

В Cloudflare: Security → WAF → Tools — добавьте IP в Allowlist.

Как предотвратить 429

Для пользователей / администраторов

  1. Не обновляйте всё сразу. Обновляйте плагины по одному, с паузой в 1–2 минуты между обновлениями.
  2. Используйте Application Password для REST API — у них отдельные лимиты.
  3. Настройте кэширование — WP Rocket, Flying Press или LSCache снижают нагрузку на сервер в 10–50 раз.
  4. Включите Cloudflare — его WAF фильтрует ботов до того, как они достигнут вашего сервера.

Для разработчиков

// Пример правильной работы с wp_remote_get() — всегда проверяйте код ответа
add_action('init', function() {
    if (wp_doing_ajax() && !wp_verify_nonce($_POST['_wpnonce'], 'my_action')) {
        wp_die('429 Too Many Requests', '', ['response' => 429]);
    }
});

Заключение

Ошибка 429 Too Many Requests — это не поломка, а защитная реакция сервера. Чаще всего она вызвана либо слишком частыми попытками входа, либо конкуренцией плагинов безопасности, либо DDoS-атакой. Диагностика сводится к трём шагам: определить источник блокировки (по заголовкам ответа), проверить IP, временно отключить подозрительный плагин или добавить IP в белый список.

Если ошибка повторяется регулярно на чистом сайте — это повод задуматься о смене хостинга: дешёвые shared-хостинги ставят жёсткие лимиты на количество PHP-воркеров и запросов к БД, и 429 — их стандартное «лекарство» от перегрузки.