Как запретить регистрацию спам-ботов в WordPress
Приветствую всех читателей блога Seobid.net! В прошлой статье вы познакомились с одним интересным плагином — Clean Up Users, который умеет удалять зарегистрированных, но неработающих пользователей, проще говоря – спамеров и ботов. И я обещал вам, что найду способ, как осуществить функцию недопущения регистрации роботов. Похоже, что мне это удалось – на одном своем сайте я установил этот код, с которым вы познакомитесь ниже и, (о, чудо!) поток регистраций, которых у меня на этом сайте было до 30-50 в день, внезапно прекратился.
Как подстраховаться от спам-ботов
Конечно, я не стал делать поспешных выводов, а подождал несколько дней, мало ли что. Вдруг кто-то из тех, кто так упрямо регистрируется на моем сайте, действительно что-то хочет написать в комментарии? Но, увы — только Akismet их и замечал, и причислял к спамерам-ботам. Поэтому я без сомнений удалил тех, кто уже успел за несколько дней накопиться, и установил этот код. Ну, а теперь подробнее о том, как защитить от спам-ботов ваш WordPress-сайт, то есть – как осуществить на практике запрет регистрации спам-пользователям в блоге WordPress.
Как вы знаете, при администрировании и разработке сайтов веб-мастера часто сталкиваются с появлением спам-скриптов, автоматически проходящими регистрацию пользователя на сайтах, а затем спокойненько рассылают свой любимый спам. Принцип действия функции, которую я предлагаю к рассмотрению, прост, как все гениальное.
В существующий код регистрации добавляется новое текстовое поле, чтобы вводить логин под именем, к примеру, «spamunet_user_login», а старое поле «user_login» делается невидимым, встраивая параллельную проверку на заполнение этого нового текстового невидимого поля. Как видите, после внесения изменений внешне ничего не поменялось.
В результате получится, что живой пользователь при регистрации в вашем блоге не заметит разницы, а спам-бот заполнит как раз стандартное поле «user_login», что и приведет к ошибке при регистрации. Не думайте, что все так просто, и любой спамер напишет какую-то свою прогу для взламывания этого кода.
Вы ведь можете задать абсолютно любое значение этому полю, в том числе и цифровое. Например, «11dfhbt56 nkhjy000asdwer_user_login», и так для каждого своего сайта. Более того, для подстраховки вы можете иногда просто менять это значение, что займет у вас пару минут. Понятно, что значение «user_login» должно присутствовать обязательно.
Вот таким вопросом встречает нас наш 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. Прошло несколько дней, и я хочу показать вам один скриншот:
Такими письмами теперь завалена моя корзина на почте. Это сообщения о том, что некто не смог зарегистрироваться у меня на сайте. Я думаю, вы поняли, кто этот «некто». Да-да, это спам-бот. Писем уже несколько десятков, и я их просто направил в спам, чтобы не мешали нормальной работе почтового ящика.
Как видите, решение работает, и это очень хорошо — иначе мне пришлось бы чистить своих пользователей каждую неделю.
Tweet |
5 лет назад
В совете по замене кода в двух окошечках у Вас одинаковые значения, первое и второе, которым Вы рекомендуете заменить. Или я чего-то не поняла. Застопорилось всё дело, помогите пожалуйста.
5 лет назад
Во втором окошке вы должны подставить свои значения. Например, вместо user_login подставьте nospam_user_login, или придумайте вместо nospam что-то свое, посложнее.
5 лет назад
Не нашёл вышеуказанную в статье строчку в файле wp-login.php… Там стоит в коде следующее —
$user_login = $user_data->user_login;
Может с выходом обновления движка поменялись строки и значения функций? Тогда где и что менять в коде файла wp-login.php для версий WP 3.6.0?
5 лет назад
Добрый день, Сергей! Удивляет, что на такую животрепещущую тему нет комментариев! Уже второй день лопачу интернет в поисках дельного совета против ботов — все меры оказываются (по словам применивших) временными! Но плагины — это уже кое-что! Проверю — отпишусь!
5 лет назад
Здравствуйте, либо у вас ошибка, либо я не могу понять. В статье написано «В этом же файле, рядом, найдите вот это выражение:
И вместо него вставьте:
это ведь два одинаковых выражения. Или просто во втором выражении где $user_login подставлять свое значение?
5 лет назад
Да, во втором выражении нужно подставить свое выражение, любое, какое придумаете.
5 лет назад
Как то не подробно описали, чайники будут маятся. Все делаете в файле login.php
1. Копируем <input type="text" name="user_login" id="user_login" class="input" value="» size=»20″ /> это поле и вставляем рядышком, предварительно изменив type=»hidden»
2. В оставшемся поле меняем name и id на, например, nospam_user_login
3. Пунктом делаете то, что указано в посте,
И должно все работать.
4 года назад
у меня тоже каждодневные регистрации вот и попал к вам, но что то подумал — что с админки удалить, что с почты время всеравно уйдет одинаково … вот гады замучали нет им управы, просто иногда в спам папку приходят и нужные письма и если все это будет мешаться то будет спам каша … выход один — создать мыло на майле и пусть спамят, но тож не вариант ведь через пар месяцев вал писем будет да и не все думаю захотят менять основной емейл блога для этого … карочи шляпа.
4 года назад
Скажите, а если у меня стоит плагин Theme My Login, этот способ будет работать?
4 года назад
Здравствуйте. Способ работает при любом наполнении плагинами, так как организован в самом движке WordPress и плагины не затрагивает.
4 года назад
Здравствуйте!
А как можно проверить работтоспособность данных изменений?
В смысле… самостоятельно в роли спам бота.
И еще.
таких две, в Username or E-mail и Username — где именно менять?
4 года назад
Менять нужно только в Username.
4 года назад
Спасибо! Вот как раз ищу решение этой проблемы. Будем менять файл в корневой директории.
4 года назад
А зачем регистрировать посетителей? Регистрация не нужна. Пускай пишут что хотят без регистрации и даже без одобрения модератором. А защиту от ботов в комментах выполнит плагин Bee. Он как раз и делает то о чем вы пишите — вставляет в комменты форму авторизации невидимую для реальных посетителей. Бот её заполняет и попадает в спам.
А вот защищённость, на мой взгляд, вашего сайта низкая. Ввожу wp-admin и выхожу на страницу авторизации. Подвожу курсор к нику admin и вижу, что он является логином для входа в вашу админ-панель.
Рекомендую сменить адрес входа и убрать ссылку на админа. Это легко делается.
3 года назад
Подскажите, а можно вообще отключить регистрацию пользователей?
3 года назад
Спасибо, помогло! А то надоело каждый день по 50 ботов удалять.