wpforms.ru wordpress WPForms.ru

Защита от ботов и спама с помощью reCAPTCHA v3

Одной из частых проблем при работе с формами на WordPress, в том числе созданными с помощью WPForms, является спам и автоматические отправки ботами. В этой статье мы подробно разберём, как использовать Google reCAPTCHA v3 для защиты ваших форм, а также как кастомизировать поведение защиты с помощью PHP-кода.

Что такое Google reCAPTCHA v3 и почему она лучше для WPForms

Google reCAPTCHA v3 — это невидимый для пользователя сервис, который анализирует поведение посетителя и выставляет ему балл риска (от 0.0 до 1.0), где 1.0 — это человек, а 0.0 — вероятный бот. В отличие от версии v2, здесь нет необходимости вводить капчу вручную, что значительно улучшает пользовательский опыт.

WPForms поддерживает интеграцию с reCAPTCHA v3 из коробки, однако для более тонкой настройки и фильтрации спама нам понадобится добавить кастомный код на PHP.

Преимущества reCAPTCHA v3 для WPForms:

  • Автоматическая оценка поведения без вмешательства пользователя
  • Возможность настроить порог срабатывания защиты (score threshold)
  • Поддержка кастомной логики для блокировки или пометки подозрительных отправок

Как подключить Google reCAPTCHA v3 в WPForms

Для начала нужно получить ключи API на сайте Google reCAPTCHA:

  1. Перейдите на https://www.google.com/recaptcha/admin/create
  2. Выберите reCAPTCHA v3, укажите домен вашего сайта (например, wpforms.ru), примите условия использования и создайте ключи
  3. Скопируйте Site Key и Secret Key

Далее:

  1. В админке WordPress перейдите в WPForms → Настройки → reCAPTCHA
  2. Выберите тип reCAPTCHA v3
  3. Вставьте Site Key и Secret Key
  4. Сохраните изменения

Теперь на все ваши формы WPForms автоматически будет добавлена невидимая защита reCAPTCHA v3.

Как настроить порог срабатывания reCAPTCHA v3 в WPForms через код

Стандартно WPForms не предлагает настройки порога, при котором отправка будет блокироваться из-за низкого балла reCAPTCHA. Мы можем добавить такую логику с помощью хука wpforms_process_validate, который срабатывает перед сохранением формы.

Пример кода для functions.php вашей темы или отдельного плагина:

add_filter('wpforms_process_validate', 'wpformsru_validate_recaptcha_score', 10, 3);
function wpformsru_validate_recaptcha_score($field_id, $field_submit, $form_data) {
    // Проверяем, что есть ответ reCAPTCHA
    if (empty($_POST['g-recaptcha-response'])) {
        wpforms()->process->errors[$form_data['id']][$field_id] = 'Ошибка проверки reCAPTCHA. Пожалуйста, обновите страницу и попробуйте снова.';
        return;
    }

    $secret = 'ВАШ_SECRET_KEY'; // замените на ваш секретный ключ reCAPTCHA
    $response = sanitize_text_field($_POST['g-recaptcha-response']);
    $remoteip = $_SERVER['REMOTE_ADDR'];

    $verify = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', [
        'body' => [
            'secret' => $secret,
            'response' => $response,
            'remoteip' => $remoteip
        ]
    ]);

    if (is_wp_error($verify)) {
        wpforms()->process->errors[$form_data['id']][$field_id] = 'Не удалось проверить reCAPTCHA.';
        return;
    }

    $body = json_decode(wp_remote_retrieve_body($verify));

    if (!$body->success) {
        wpforms()->process->errors[$form_data['id']][$field_id] = 'reCAPTCHA не прошла проверку.';
        return;
    }

    // Настраиваем порог оценки (score), ниже которого считаем отправку подозрительной
    $threshold = 0.5;

    if ($body->score < $threshold) {
        wpforms()->process->errors[$form_data['id']][$field_id] = 'Ваша отправка выглядит подозрительной и была заблокирована.';
    }
}

Этот код вручную проверит ответ reCAPTCHA, получит балл и если он ниже 0.5, то заблокирует отправку с сообщением об ошибке.

Как отображать сообщения об ошибках и отлаживать защиту от спама

WPForms по умолчанию выводит ошибки в форме, если заполнение не прошло валидацию. В нашем случае, если reCAPTCHA не пройдена или оценка слишком низкая, пользователь увидит понятное сообщение.

Для отладки полезно включить журнал ошибок в WordPress и записывать результаты проверки reCAPTCHA. Например, добавьте в код логирование:

error_log('reCAPTCHA score: ' . $body->score);

Это поможет понять, как Google оценивает ваших посетителей и при необходимости скорректировать порог.

Дополнительные плагины для усиления защиты форм на WordPress

Кроме reCAPTCHA, рекомендуем рассмотреть следующие плагины для усиления защиты от спама:

  • Antispam Bee — бесплатный плагин для фильтрации спама без CAPTCHA.
  • WP Cerber Security — комплексная защита, включая блокировку ботов и ограничение доступа.
  • CleanTalk — облачный сервис антиспам, который можно интегрировать с WPForms.

Если используете WPShop, обратите внимание на плагин Clearfy Pro — он оптимизирует WordPress и включает расширенные средства защиты от ботов и спама.

Заключение и рекомендации по безопасности форм

Использование Google reCAPTCHA v3 в WPForms — эффективный способ снизить количество спама без ухудшения UX. Однако важно не ограничиваться только этим, а применять комплексный подход:

  • Настраивайте порог оценки reCAPTCHA под специфику вашего сайта
  • Используйте дополнительные антиспам-плагины и фильтры
  • Регулярно обновляйте WPForms и другие плагины
  • Отслеживайте логи и анализируйте подозрительные отправки

Так вы обеспечите надёжную защиту форм от злоумышленников и сохраните качество сбора данных.

×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙