Как запретить регистрацию спам-ботов в WordPress
02.09.2018

Приветствую всех читателей блога Seobid.net ! В прошлой статье вы познакомились с одним интересным плагином — Clean Up Users , который умеет удалять зарегистрированных, но неработающих пользователей, проще говоря – спамеров и ботов. И я обещал вам, что найду способ, как осуществить функцию недопущения регистрации роботов. Похоже, что мне это удалось – на одном своем сайте я установил этот код, с которым вы познакомитесь ниже и, (о, чудо!) поток регистраций, которых у меня на этом сайте было до 30-50 в день, внезапно прекратился.
Защита от спама Новый способ защиты форм, комментариев, регистраций от ботов и спамеров
Конечно, я не стал делать поспешных выводов, а подождал несколько дней, мало ли что. Вдруг кто-то из тех, кто так упрямо регистрируется на моем сайте, действительно что-то хочет написать в комментарии? Но, увы — только Akismet их и замечал, и причислял к спамерам-ботам. Поэтому я без сомнений удалил тех, кто уже успел за несколько дней накопиться, и установил этот код. Ну, а теперь подробнее о том, как защитить от спам-ботов ваш WordPress-сайт, то есть – как осуществить на практике запрет регистрации спам-пользователям в блоге WordPress.
Как вы знаете, при администрировании и разработке сайтов веб-мастера часто сталкиваются с появлением спам-скриптов, автоматически проходящими регистрацию пользователя на сайтах, а затем спокойненько рассылают свой любимый спам. Принцип действия функции, которую я предлагаю к рассмотрению, прост, как все гениальное.
В существующий код регистрации добавляется новое текстовое поле, чтобы вводить логин под именем, к примеру, «spamunet_user_login», а старое поле «user_login» делается невидимым, встраивая параллельную проверку на заполнение этого нового текстового невидимого поля. Как видите, после внесения изменений внешне ничего не поменялось.
Вы ведь можете задать абсолютно любое значение этому полю, в том числе и цифровое. Например, «11dfhbt56 nkhjy000asdwer_user_login», и так для каждого своего сайта. Более того, для подстраховки вы можете иногда просто менять это значение, что займет у вас пару минут. Понятно, что значение «user_login» должно присутствовать обязательно.
Решение
Функция авторизации и регистрации в вашем, да и любом WordPress проходит в файле wp-login.php. Изменить, как вы поняли, следует поле user_login, которое в этой функции употребляется довольно часто, но нам нужна только функция регистрации. Поэтому открывайте файл wp-login.php в корневой директории вашего сайта, и ищите там такой вот код:
$user_login = $_POST['user_login'];Замените его на такой:
$user_login = $_POST['user_login']; if(!empty($user_login)) wp_die('Доброго времени суток, спам-бот!)'); $user_login = $_POST['nospam_user_login'];В этом же файле, рядом, найдите вот это выражение:
И вместо него вставьте:
Если кто-то будет регистрироваться (я имею в виду человека, а не робота), то весь процесс будет проходить, как обычно, так как человек заполнит именно те поля, которые нужны:
P.S. Прошло несколько дней, и я хочу показать вам один скриншот:
Такими письмами теперь завалена моя корзина на почте. Это сообщения о том, что некто не смог зарегистрироваться у меня на сайте. Я думаю, вы поняли, кто этот «некто». Да-да, это спам-бот. Писем уже несколько десятков, и я их просто направил в спам, чтобы не мешали нормальной работе почтового ящика.
Как видите, решение работает, и это очень хорошо — иначе мне пришлось бы чистить своих пользователей каждую неделю.