Приветствую всех читателей блога Seobid.net! В прошлой статье вы познакомились с одним интересным плагином — Clean Up Users, который умеет удалять зарегистрированных, но неработающих пользователей, проще говоря – спамеров и ботов. И я обещал вам, что найду способ, как осуществить функцию недопущения регистрации роботов. Похоже, что мне это удалось – на одном своем сайте я установил этот код, с которым вы познакомитесь ниже и, (о, чудо!) поток регистраций, которых у меня на этом сайте было до 30-50 в день, внезапно прекратился.

Как подстраховаться от спам-ботов

Конечно, я не стал делать поспешных выводов, а подождал несколько дней, мало ли что. Вдруг кто-то из тех, кто так упрямо регистрируется на моем сайте, действительно что-то хочет написать в комментарии? Но, увы — только Akismet их и замечал, и причислял к спамерам-ботам. Поэтому я без сомнений удалил тех, кто уже успел за несколько дней накопиться, и установил этот код. Ну, а теперь подробнее о том, как защитить от спам-ботов ваш WordPress-сайт, то есть – как осуществить на практике запрет регистрации спам-пользователям в блоге WordPress.

Как вы знаете, при администрировании и разработке сайтов веб-мастера часто сталкиваются с появлением спам-скриптов, автоматически проходящими регистрацию пользователя на сайтах, а затем спокойненько рассылают свой любимый спам. Принцип действия функции, которую я предлагаю к рассмотрению, прост, как все гениальное.

В существующий код регистрации добавляется новое текстовое поле, чтобы вводить логин под именем, к примеру, «spamunet_user_login», а старое поле «user_login» делается невидимым, встраивая параллельную проверку на заполнение этого нового текстового невидимого поля. Как видите, после внесения изменений внешне ничего не поменялось.

Регистрация в WordPress
В результате получится, что живой пользователь при регистрации в вашем блоге не заметит разницы, а спам-бот заполнит как раз стандартное поле «user_login», что и приведет к ошибке при регистрации. Не думайте, что все так просто, и любой спамер напишет какую-то свою прогу для взламывания этого кода.

Вы ведь можете задать абсолютно любое значение этому полю, в том числе и цифровое. Например, «11dfhbt56 nkhjy000asdwer_user_login», и так для каждого своего сайта. Более того, для подстраховки вы можете иногда просто менять это значение, что займет у вас пару минут. Понятно, что значение «user_login» должно присутствовать обязательно.

Спам в Регистрация в WordPress
Вот таким вопросом встречает нас наш WordPress, если вы забыли и неправильно ввели пароль уже после регистрации. Ну, а зарегистрироваться спамерам он просто не позволяет.

Решение

Функция авторизации и регистрации в вашем, да и любом 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'];

В этом же файле, рядом, найдите вот это выражение:

И вместо него вставьте:

Если кто-то будет регистрироваться (я имею в виду человека, а не робота), то весь процесс будет проходить, как обычно, так как человек заполнит именно те поля, которые нужны:

Код для запрета регистрации
То есть, спам-роботам на ваш сайт уже не попасть, потому что они будут заполнять поле «user_login», а не то, которое вы назначили. И не забудьте изменить «user_login» на что-то свое, пусть даже это значение будет иметь 100 символов. Удалить же уже зарегистрированных спам-пользователей вы можете все тем же плагином Clean Up Users, который вы найдете на официальном сайте разработчика плагина.

P.S. Прошло несколько дней, и я хочу показать вам один скриншот:

01-08-2013 6-33-25

Такими письмами теперь завалена моя корзина на почте. Это сообщения о том, что некто не смог зарегистрироваться у меня на сайте. Я думаю, вы поняли, кто этот «некто». Да-да, это спам-бот. Писем уже несколько десятков, и я их просто направил в спам, чтобы не мешали нормальной работе почтового ящика.

Как видите, решение работает, и это очень хорошо — иначе мне пришлось бы чистить своих пользователей каждую неделю.