Защита комментариев от спама без плагинов за десять минут

Wordpress спам. Защита комментариев без плагинов за десять минут.

Недавно я уже писал про спам на блоге. Про удаление спамных комментариев и защиту блога от спама плагином AntispamBee.  Плагин работает хорошо, но это дополнительная нагрузка на блог. Больше плагинов, больше непонятного кода, дольше загрузка страницы. А оно нам надо? Правильно, не надо. Капчи тоже не вариант. Не каждый посетитель захочет мучиться с вводом плохо различимых символов. Да еще не дай бог ошибка. И все по новой. То есть такая задача, как защита комментариев от спама, не самое простое дело. Поэтому сегодня мы будем защищать комментарии на вашем блоге от спама добавлением кода. Все изменения займут не более десяти минут. Все очень легко и доступно.Приступим.
В самом начале для облегчения модерирования комментариев (то, что это надо делать надеюсь сомнений не вызывает), советую в настройках wordpress выставить галочки как показано на скрине.

Настройки модерации комментариев wordpress

Почему именно так? Имхо это оптимальный вариант. Любой пользователь должен иметь возможность оставить свой комментарий без регистрации. Достаточно модерировать только первый комментарий. Если вы одобрили первый комментарий, то доверяете этому посетителю. Все спамные комментаторы будут попадать на модерацию обязательно, так как не имеют одобренных комментов.
Далее в папке вашей темы открываем файл comments.php и находим в нем следующий код:

<label for="author"><small>Имя или псевдоним <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />

<label for="email"><small>E-mail (не публикуется) <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />

<label for="url"><small>URL персонального блога</small></label>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" tabindex="3" />

<?php endif; ?>

<textarea name="comment" id="comment" tabindex="4"></textarea>

<input name="submit" type="submit" id="submit" tabindex="5" value="Отправить комментарий!" /><?php comment_id_fields(); ?>

В этом коде нас интересуют только три параметра — name=»author», name=»email» и name=»url». При работе спамботы ищут на странице эти поля и заполняют их. Решение напрашивается само собой. Нужно изменить эти значения на свои.

<label for="author"><small>Имя или псевдоним <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="trend" id="author" value="<?php echo $comment_author; ?>" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />

<label for="email"><small>E-mail (не публикуется) <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="micro" id="email" value="<?php echo $comment_author_email; ?>" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />

<label for="url"><small>URL персонального блога</small></label>
<input type="text" name="dinamo" id="url" value="<?php echo $comment_author_url; ?>" tabindex="3" />

<?php endif; ?>

<textarea name="comment" id="comment" tabindex="4"></textarea>

<input name="submit" type="submit" id="submit" tabindex="5" value="Отправить комментарий!" /><?php comment_id_fields(); ?>

Советую менять имена полей на полностью не похожие на исходные. Так если вы поменяете name=»author» на скажем name=»sauthor» , это не даст должного эффекта. Так как в логику бота можно запросто добавить проверку на части стандартных имен. остальные символы будут отсекаться.  Все ваши усилия пойдут на смарку. Если вы подставите полностью свои имена полей, то боту угадать их будет невозможно.

Интересно:
Надежная защита wordpress от спама в комментариях

Но этого мало. Поля мы поменяли, а wordpress будет искать стандартные имена полей. Поэтому его надо проинформировать, что имена изменились. Для этого в корне сайта открываем файл wp-comments-post.php. находим код

$comment_author = ( isset($_POST['author']) ) ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) ) ? trim($_POST['email']) : null;
$comment_author_url = ( isset($_POST['url']) ) ? trim($_POST['url']) : null;
$comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

Меняем стандартные имена полей на новые.

$comment_author = ( isset($_POST['trend']) ) ? trim(strip_tags($_POST['trend'])) : null;
$comment_author_email = ( isset($_POST['micro']) ) ? trim($_POST['micro']) : null;
$comment_author_url = ( isset($_POST['dinamo']) ) ? trim($_POST['dinamo']) : null;
$comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

Вот и все. Защита комментариев от спама установлена и настроена. Осталось удалить плагины защиты от спама и всякие капчи. Данная доработка надежно защитит ваш блог от автоматического спама в комментариях. от ручного спама не спасет ничего. Но ручного спама мизерное количество. И удалить его легко.

Интересно:
Как удалить спам комментарии wordpress. Легко и быстро
Поделиться с друзьями

С уважением Денис Иванов, автор блога dendrblog.ru

Подписка

на обновления блога

Никакого спама никогда не будет. Только оповещения о выходе новых материалов на блоге.

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Денис Иванов автор

    А как вы на своем блоге боретесь со спамом?

    Ответить
  2. Надежда Суптеля

    У меня Денис Акисмет стоит, он все спам комменты загоняет в папку спама, а совсем недавно установила плагин, плагин пропускает комментарии только на русском. Можно почитать у меня на блоге, я недавно поделилась своим опытом. Красота. Но наши ребята не теряются, теперь на русском спам пошел. В неделю бывает правда всего 2-3 комментария спамовских, а то и вообще нет. Чисто все.

    Ответить
    1. Денис Иванов автор

      Спама на русском навалом валится. Я akismet снес давно. Его популярность чисто накрутка. Эффективность оставляет желать лучшего. Пользуюсь cleantalk. Вот, что действительно эффективно.

      Ответить
  3. Алексей

    Денис почему отказались от AntispamBee? Это хороший плагин, у меня ни одного спамного комментария не пропустил.

    Ответить
    1. Денис Иванов автор

      У меня «ручники» повадились гадить. Типа все по правилам, но спам. Сейчас сервис cleantalk работает. Их достоинство — черные списки адресов и ip спамеров.

      Ответить
  4. Евгений

    Спасибо за полезный материал. Были моменты, когда спам валился массово на сайт. Плагины не всегда справлялись с задачей. Попробовал Ваш способ — и помогло. Надеюсь это недолго. А то с простом посещаемости спаммеров стало намного больше.

    Ответить
    1. Денис Иванов автор

      Логичная связка: повышается посещаемость → увеличивается количество спама.

      Ответить
  5. Юрий

    Актуально. Задрали уже спамщики.

    Ответить
    1. Денис Иванов автор

      Гореть им в аду. smile

      Ответить
  6. Павел

    Полезная информативная статья. Пользуюсь Invisible Captcha. Возможно и попробую и внедрить на одном из своих сайтов. Но думаю тем, кто только делает первые в шаги в сайтострое будет стрёмно менять код.

    Возможно, я не прав

    Ответить
    1. Денис Иванов автор

      Каждому своё. Часто кодом сделать лучше. Времени требует больше, зато никакого лишнего кода.

      Ответить
      1. Павел

        Согласен с Вами. Чем меньше плагинов, тем лучше. Читал статьи профи которые обосновывают пользу плагинов перед вставкой различных скриптов. Это не относится к приему в статье.

        Денис, при переходе на сайт с е-мэйла страница оказалась недоступна. Загрузилась только когда убрал в строке реплитуком… до html. Это баг системы?

        Ответить
        1. Денис Иванов автор

          replytocom — дубли страниц на сайте. Для роботов сделано, что такой страницы не существует, чтобы в выдаче не было дублей.

          А с ссылкой из почты надо посмотреть. Спс за сигнал.

          P.S. Данная ссылка формируется сервисом от wordpress и изменить её не могу.

          Ответить
  7. Алексей

    Заметил в плагинах такой косяк если в спам попадает не спамный комент и его определить как не спам то потом много мусора плагин начинает пропускать.

    Ответить
    1. Денис Иванов автор

      Это какой именно плагин? Мой плагин антиспама еще ни разу не ошибся.

      Ответить
  8. Максим Бойко

    Спасибо за статью. Давно искал метод без плагинов. Надо будет посмотреть ,что к чему на моём блоге (там форма несколько другая). А так, пока пользуюсь "пчелкой", акисмет давно удалил, т.к. постоянно в спам запихивал и нормальные комментарии.

    Ответить
    1. Денис Иванов автор

      Акисмет вообще ни о чем. Его много только потому, что идет в комплекте cms. А пчелой я тоже пользовался. Правда всего пару месяцев, пока не нашел намного лучший инструмент защиты от спама, единственный минус которого — он платный. Но он стоит того! 

      Ответить
  9. Галина

    Согласна, цифровые и буквенные капчи совсем не вариант. Это просто жуть какая-то sad Ре капча еще куда ни шло, или "трактор", тоже пойдет. Но вводить что-то цифрами и буквами караул. Очень часто именно из-за капчи комментарии оставлять не хотят.

    Ответить
  10. Галина

    Здравствуйте!
    Я извиняюсь, если вопрос покажется глупым.
    Но…
    Если у Вас стоит такой замечательный плагин (антиспамовский, разумеется), то какой Вам смысл пользоваться «антиспамом» без плагина?
    Пробовала метод «антиспам в комментариях» (тоже, без плагина, методом внесения изменения в код), делала всё очень внимательно, перепроверяла на несколько раз, и… УПС…
    Вместо одной «формы» комментария, стало отображаться ДВЕ (а должна вообще быть «спрятанной»)!
    Вот… такой ЭФФЕКТ.
    Причём «оба комментария» (один комментарий оставила, как и советовал автор, войдя под другим ником пользователя) без отправления на почту для утверждения, как это установлено в самом шаблоне, благополучно «отобразились».
    Вот теперь ищу «достоверную информацию, потому как (по моему ощущению) «Akismet Anti-Spam» вообще, «мёртвый»!
    Либо спамщики обо мне «забыли», во что верится с трудом (ежедневно регистрируются минимум, с десяток новых участников, комментариев не оставляют, зачем регистрируются — непонятно, только сайт «утяжеляют», уже на третью сотню после четвёртой «тыщи»перевалило) либо…
    Потому как «значения» Akismet Anti-Spam «замерли», и не меняются…

    Ещё раз извиняюсь…
    С уважением.

    Ответить