Проблема автоматической регистрации спам-ботов в WordPress
Если ваш сайт на WordPress позволяет пользователям регистрироваться самостоятельно, то рано или поздно вы столкнётесь с проблемой спама от ботов. Автоматические регистрации создают мусорные аккаунты, которые могут использоваться для рассылок, накруток или других вредоносных действий. В результате страдает производительность сайта, появляются лишние записи в базе данных, а администрирование становится сложнее.
В этой статье рассмотрим несколько технических приёмов и примеров, как надежно отключить или ограничить автоматическую регистрацию спам-ботов, сохранив при этом удобство для реальных пользователей.
Отключение регистрации пользователей в WordPress стандартными средствами
Простейший способ — полностью отключить регистрацию в настройках WordPress. Для этого нужно в админке перейти в Настройки > Общие и снять галочку с пункта «Любой может зарегистрироваться».
Однако часто нужна регистрация для реальных пользователей, и просто отключать её нельзя. Тогда стоит использовать фильтры и плагины, которые добавляют проверки и защиту.
Добавление капчи для защиты формы регистрации
Самый распространённый способ уменьшить количество спамерских регистраций — добавить капчу. Рассмотрим пример использования популярного плагина Clearfy Pro, который умеет добавлять Google reCAPTCHA на форму регистрации.
После установки и активации Clearfy Pro в разделе Оптимизация > Антиспам включите опцию «Защита форм» и настройте ключи reCAPTCHA. Это позволит эффективно блокировать ботов без дополнительной нагрузки на сервер.
Пример кода для добавления простой капчи без плагинов
Если хотите добавить свою простую капчу, можно использовать следующий код, который добавляет поле с вопросом и проверяет ответ:
function wpkama_add_captcha_to_registration() {
?>
<p>
<label for="wpkama_captcha">Сколько будет 3 + 4? <span class="required">*</span></label>
<input type="text" name="wpkama_captcha" id="wpkama_captcha" class="input" value="" size="25" />
</p>
<?php
}
add_action('register_form', 'wpkama_add_captcha_to_registration');
function wpkama_check_captcha_registration($errors, $sanitized_user_login, $user_email) {
if (empty($_POST['wpkama_captcha']) || trim($_POST['wpkama_captcha']) != '7') {
$errors->add('wpkama_captcha_error', __('<strong>Ошибка</strong>: Неправильный ответ на вопрос капчи.'));
}
return $errors;
}
add_filter('registration_errors', 'wpkama_check_captcha_registration', 10, 3);Этот код добавит простую математическую капчу и предотвратит регистрацию, если ответ неверен или отсутствует.
Использование хуков для блокировки подозрительных регистраций
Можно использовать фильтр registration_errors для проверки регистрационных данных и блокировки подозрительных пользователей. Например, если имя пользователя или email содержит подозрительные слова, можно отклонить регистрацию.
Пример кода:
function wpkama_block_spam_usernames($errors, $sanitized_user_login, $user_email) {
$blocked_words = array('spam', 'bot', 'test');
foreach ($blocked_words as $word) {
if (stripos($sanitized_user_login, $word) !== false) {
$errors->add('wpkama_blocked_username', __('<strong>Ошибка</strong>: Имя пользователя содержит запрещённые слова.'));
}
if (stripos($user_email, $word) !== false) {
$errors->add('wpkama_blocked_email', __('<strong>Ошибка</strong>: Email содержит запрещённые слова.'));
}
}
return $errors;
}
add_filter('registration_errors', 'wpkama_block_spam_usernames', 10, 3);Такой фильтр поможет отсеять попытки регистрации с очевидным спамом.
Использование плагинов для защиты регистрации
Если хочется получить готовое решение без программирования, можно использовать плагины, проверенные временем:
- WPBruiser — антиспам плагин, который блокирует ботов без капчи;
- Stop Spammers — комплексная защита от спама с множеством настроек;
- Clearfy Pro — как уже упоминалось, добавляет защиту и оптимизацию.
Все эти плагины доступны на WPShop.ru с поддержкой и обновлениями.
Ограничение регистрации по IP и времени с помощью кода
Если спам идёт с одних и тех же IP или с слишком высокой частотой, можно ограничить количество регистраций с одного IP за определённый период.
Пример реализации:
function wpkama_limit_registrations_by_ip($errors, $sanitized_user_login, $user_email) {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_key = 'wpkama_reg_count_' . md5($ip);
$count = get_transient($transient_key);
if (!$count) {
$count = 0;
}
if ($count >= 3) { // максимум 3 регистрации с одного IP за час
$errors->add('wpkama_ip_limit', __('<strong>Ошибка</strong>: Превышен лимит регистрации с вашего IP. Попробуйте позже.'));
} else {
$count++;
set_transient($transient_key, $count, HOUR_IN_SECONDS);
}
return $errors;
}
add_filter('registration_errors', 'wpkama_limit_registrations_by_ip', 10, 3);Этот код позволяет ограничить количество регистраций с одного IP, что существенно уменьшит активность ботов.
Рекомендации по комплексной защите регистрации в WordPress
Для максимальной защиты от спам-ботов рекомендуется использовать сочетание методов:
- Включить капчу (лучше Google reCAPTCHA через надежный плагин, например, Clearfy Pro);
- Добавить проверку регистрационных данных через хуки, чтобы отсеивать подозрительные имена и email;
- Ограничить частоту регистраций с одного IP;
- Регулярно мониторить пользователей и удалять ботов;
- Использовать плагины-антиспам для дополнительной защиты.
Такой подход позволит вам сохранить функциональность регистрации для реальных пользователей и при этом минимизировать проблемы со спамом.