» » » Антиспам. Защита от спама в комментариях без плагина
logotip

Антиспам. Защита от спама в комментариях без плагина

Всем привет! SEO-Mayak.com продолжает свое вещание на бескрайние просторы мирового интернета и как всегда на повестке дня самые важные темы.

Антиспам или защита от спама в комментариях волнует чуть ли не каждого веб-мастера.

Какой вред может нанести спам сайту или блогу, если от него не защищаться?

Самая большая угроза — это бан поисковиков. Спам-боты очень часто распространяют ссылки на взрослые ресурсы, что для любого проекты смерти подобно.

Также через спам, к вам на сайт могут занести вредоносные коды и даже вирусы.

Ну и конечно посетители вашего ресурса будут менее охотно оставлять свои комментарии, заметив много спама.

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

По традиции назову лишь некоторые из них. К самым простым, для пользователей конечно, можно отнести такие плагины, как DCaptcha или как его еще называют — «Я не бот» и математический плагин Math Comment Spam Protection, который задает пользователю несложную математическую задачку.

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

Путь, к написанию комментариев, для пользователей должен быть полностью свободен, никаких «светофоров» и тем более «запрещающих знаков». Самая лучшая защита от спама — это скрытый, невидимый антиспам.

В этой связи, стоит упомянут об еще одном популярном плагине Akismet. Плагин, при всех его достоинствах, а достоинства эти выражаются как раз в отсутствии капчи, имеет некоторые недостатки.

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

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

antispam

Защита будет заключается в подмене полей ввода комментариев, т.е спам-бот немного заблудится и не сможет напакостить, в общем возьмем «врага» хитростью. Поехали!

Защита от спама с помощью подмены полей ввода комментариев

Заходит спам-бот на сайт и начинает искать поле для заполнения. В шаблонах WordPress поле для ввода комментариев имеет название или имя — comment. 

Алгоритмы спам-ботов настроены именно на поиск полей с определенными названиями. Так что нам надо сделать? Нам надо создать новое поле для заполнения с другим, уникальным именем, тем самым мы заставим робота-спамера сильно призадуматься.

В WordPress комментарии, в зависимости от шаблона, выводятся двумя функциями: comments_template(); и comments_form();. Определить это просто. Откройте в Notepad++ файл в  шаблона single.php и воспользуйтесь функцией поиска редактора. Введите в поле поиска название функции и если редактор ее найдет, то значит именно эту функцию, для вывода комментариев, используется в Вашем шаблоне.

Дело в том, что для вывода комментариев, в шаблонах WordPress, функция comment_form(); используется довольно редко и я ее рассматривать в статье не стану, но если вдруг у моих подписчиков возникнет потребность поработать именно с этой функцией, то прошу воспользоваться формой обратной связи и мы что-нибудь придумаем.

И так, мы выяснили, что в нашем шаблоне применяется функция comment_template();. Теперь нам понадобится открыть для редактирования два файла шаблона: functions.php и comments.php.

Важно! Функция актуальна до версии WordPress 4.4.

В файле functions.php, в самое начало, после знака «<?php» вставляем следующий код:

add_filter('wp_get_current_commenter', 'replacing_the_field_of_comments');
function replacing_the_field_of_comments($commentdata) {
      $spam_test_field = trim($_POST['comment']);
  if(!empty($spam_test_field)) wp_die('Спам не пройдет!');
      $comment_content = trim($_POST['antispam_comment']);
      $_POST['comment'] = $comment_content;
      $comment_author = trim($_POST['rokki']);
      $_POST['author'] = $comment_author;
      $comment_author_email = trim($_POST['balboo']);
      $_POST['email'] = $comment_author_email;
      $comment_author_url = trim($_POST['stalone']);
      $_POST['url'] = $comment_author_url;
  return $commentdata;
}

Далее в файле comments.php ищем что-то похожее на такую строчку:

<textarea id="comment" tabindex="4" cols="100%" name="comment" rows="10"></textarea>

Это и есть форма ввода, которую нам надо подменить. Для этого вместо вышеупомянутой строчки вставляем две новых:

<textarea id="comment" style="display: none;" name="comment"></textarea>
<textarea class="textarea" id="comment" tabindex="4" cols="100%" name="antispam_comment" rows="10"></textarea>

Теперь давайте я поясню, что мы тут на изменяли. Ну во-первых стандартное имя comment мы поменяли на antispam_comment, во-вторых исходное поле мы скрыли с помощью стилей:

style="display: none;"

Если убрать стили, то для комментирования в статье будет два поля.

Чтобы спам-бот смог добраться до новой формы, он должен сначала преодолеть фильтр, который мы установили в файле functions.php. Надеюсь, я пояснил понятно.

Внимание! Для тех, кто устанавливал смайлики в комментариях по моей статье, надо внести изменения в код, который мы добавляли в файл comments.php, строчку:

document.getElementById('comment').value=document.getElementById('comment').value+' '+$smile+' ';


Надо заменить на такую:

document.getElementById('antispam_comment').value=document.getElementById('antispam_comment').value+' '+$smile+' ';


Если этого не сделать, то после установки защиты от спама, смайлики в комментариях отображаться не будут.

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

Защита от спама с помощью подмены стандартных названий в полях: имя пользователя, e-mail и адрес сайта

Понятно, чтобы оставить комментарий спам-робот должен заполнить поля: имя комментатора, e-mail комментатора и однозначно спам-бот заполняет поле — сайт комментатора, хотя его заполнять и не обязательно.

Что мы сделаем, мы заменим имена этих полей на другие, уникальные слова, которые я уже прописал в вышеупомянутой функции.

Для этого, в том же файле comments.php, ищем что-то похожее на такой участок кода:

<input id="author" tabindex="1" type="text" name="author" size="22" value="<?php echo $comment_author; ?>" /> />
<label for="author"><small>Имя <!--?php if ($req) echo "(обязательно)"; ?--></small></label>

<input id="email" tabindex="2" type="text" name="email" size="22" value="<?php echo $comment_author_email; ?>" /> />
<label for="email"><small>Почта (не будет опубликовано) <!--?php if ($req) echo "(обязательно)"; ?--></small></label>

<input id="url" tabindex="3" type="text" name="url" size="22" value="<?php echo $comment_author_url; ?>" />
<label for="url"><small>Адрес блога</small></label>


Здесь нам надо заменить имена (name):

name="author"

name="email"

name="url"

Меняем исходные имена на прописанные в функции. После изменения у нас должно получится следующее:

<input id="author" tabindex="1" type="text" name="rokki" size="22" value="<?php echo $comment_author; ?>" /> />
<label for="author"><small>Имя <!--?php if ($req) echo "(обязательно)"; ?--></small></label>

<input id="email" tabindex="2" type="text" name="balboo" size="22" value="<?php echo $comment_author_email; ?>" /> />
<label for="email"><small>Почта (не будет опубликовано) <!--?php if ($req) echo "(обязательно)"; ?--></small></label>

<input id="url" tabindex="3" type="text" name="stalone" size="22" value="<?php echo $comment_author_url; ?>" />
<label for="url"><small>Адрес блога</small></label>


Вот и все действия, которые нам было необходимо произвести. Как видите ничего сложного. Реализуйте такую защиту у себя на блоге и отпишитесь в комментариях. Буду Вам очень благодарен.

Понравилась статья — подпишись на обновления блога!

P.S. Некоторые «высокоинтеллектуальные» спам-боты все же могут обойти выстроенную нами защиту от спама в комментариях, но это уже будут редкие исключения.

На сегодня у меня все. Как Вам статья?

С уважением, Виталий Кириллов

Комментарии: 97

  1. Sasha:

    Осень интересный подход!) Вы молодец. Пока не пробовала, но, думаю, что-то в этом однозначно есть.
    А Акисмет я тоже буквально на следующий день удалила, вообще плагин плохой. Кстати, еще недавно столкнулась с проблемой — приходили большими пачками комментарии на английском от якобы владельцев аккаунтов на Фейсбуке. Я поначалу обрадовалась, а потом поняла, что и тут спам(… Установила специальный плагин, блокирующий написание комментариев на английском. Пока тихо), даже привычного спама стала меньше в десятки раз.
    Большое спасибо за статью и изобретательность!

    Ответить
    • Виталий Кириллов:

      Sasha, обязательно попробуйте установить такую защиту, это можно считать моей просьбой к Вам. Очень бы хотелось услышать мнения своих постоянных читателей. Спасибо за столь лестные слова в мой адрес, я старался и поверьте, потратил на изобретение такой защиты от спама довольно много времени.

      Ответить
    • OlgaBlik:

      Саша, скажите пожалуйста, а что за специальный плагин, блокирующий написание комментариев на английском? Мне оно надо!))) Заранее спасибо!

      Ответить
      • Виталий Кириллов:

        Я слышал о таком, но названия не знаю. Яндекс в помощь.

        Ответить
  2. Sasha:

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

    Ответить
  3. Наталья:

    У меня стоит плагин Antispam Bee, минус один, часто в папку попадают нормальные комменты, приходиться их все просматривать вручную.

    Ответить
    • Виталий Кириллов:

      Все равно чем меньше плагинов на блоге, тем лучше!

      Ответить
  4. Наталья:

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

    Ответить
  5. Анна:

    Одним словом, все, что мы делаем плагинами, можно сделать кодами. Просто для этого нужно больше понимать и больше сделать на своем блоге.

    Ответить
    • Виталий Кириллов:

      Все правильно Анна!

      Ответить
  6. Алла:

    Да, наверное, без кучи плагинов нагрузка на сайт будет меньше. Но все-таки плагин — это удобно. А вот в кодах надо ведь разбираться.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Алла, рад снова Вас видеть на блоге! Рано или поздно, придется избавляться от плагинов в пользу кодов. А разбираться в языках программирования совсем необязательно, достаточно просто следовать инструкциям.

      Ответить
  7. Лана:

    да очень важно знать спам или нет, а то часто голову ломаю

    Ответить
    • Виталий Кириллов:

      Приветствую Лана, давно Вас не было на блоге. Данная функция избавит Вас от лишней головной боли.

      Ответить
  8. Марат:

    Доброго времени суток.
    Весьма неплохой способ заставить спам-бота призадуматься. Будем пробовать, спасибо.

    Ответить
    • Виталий Кириллов:

      Марат, рад видеть Вас на блоге! Попробуйте, очень интересно мнение читателей.

      Ответить
  9. Наталья:

    Не знала, что ты великий изобретатель Виталий 😉
    Интересно что скажут пользователи последнего пункта такой заЩиты когда обновят свой вордпресс…
    А акисмет плохой плагин, когда он стоял было много спама.

    Ответить
    • Виталий Кириллов:

      Наталья, после обновления вордпресс, все останется по прежнему, так как никаких изменения в файлы движка я не вносил, а реализовал все в functions.php, который, как известно, находится в теме блога и аналогов, этой функции, в интернете нет, пока нет!

      Ответить
  10. Наталья:

    Совсем не понятно «Ну и конечно посетители вашего ресурса будут менее охотно оставлять свои комментарии, заметив много спама.» — мой опыт показывает, что многие блогеры совсем не понимают ЧТО такое спам и одобряют все левые комменты из англоязычных ресурсов. Они действительно думают, что их молодой сайт уже приняли на Западе и как дети радуются каждому такому комменту. А мне например по барабану кто и что пишет (это про то что якобы менее ОХОТНО комменты оставлять будут — ну что за мысли???), если мне интересен автор и статья я обязательно поддержу автора комментом и не одним! Несмотря на то, что у любого блогера могут быть спам комменты (это комменты ни о чем — типа Спасибо, автор крутой, статья класс и тому подобные), причем когда по написанному понимаешь что оставивший комментарий даже не читал твою статью) нормального человека все это отпугивать не будет. Факт, что комментарии оставляют только те, кому есть что сказать или он сам блогер и привлекает к себе внимание. Чувствую что скоро в меня шапка от автора полетит.. ну да мои комментарии спамом назвать нельзя ни разу 😉 они по существу темы и не бредовые!

    Ответить
    • Виталий Кириллов:

      Наталья, шапками я кидаться не стану, так как считаю, что каждый вправе высказать свое мнение! Судя по предыдущему твоему комментарию, ты тоже не очень внимательно статьи читаешь!

      Ответить
  11. Наталья:

    Вот сейчас есть время код разобрать..
    Если надо было найти одно из 2-х: comment_template() и comment_form(), то у меня в single.php ни того, ни другого не находит. Двигаться дальше опасно. Жду ответа автора кода!

    Ответить
    • Виталий Кириллов:

      Наталья, поищи тоже самое в файле comments.php

      Ответить
    • Виталий Кириллов:

      Наталья, не знаю как ты искала, ну у тебя в файле single.php черным по белому написано, что шаблон использует функцию comments_template();

      Ответить
  12. free online games:

    Всем привет!
    Ох… как я устал от спама:) Перепробовал кучу всяких плагинов,но так и не нашёл идеального.
    Во всех случаях спам остаётся на сайте либо в корзине,либо в непроверенных:(
    Пытался банить спамеров по IP через .htaccess,результат неудовлетворительный. Забанил ~150 IP,а толку нет….. 300 — 400 коментов спама ежесуточно.
    Сейчас буду пробовать, надеюсь это будет эффективно.
    Спасибо за подсказки 🙂

    Ответить
    • Виталий Кириллов:

      Попробуйте, надеюсь данный метод Вам подойдет.

      Ответить
      • free online games:

        Спасибо!!! Всё зделал 🙂 Уже пару часов часов без спама,УРА!
        Была одна загвоздка,после проделанных манипуляций перестал работать аjax в коментариях,но мы не привыкли отступать и побелили!
        Ещё раз благодарю(!) за полезную информацию.

        Ответить
  13. Ольга:

    От меня хорошо отстал спам. Надоело, видимо.

    Ответить
    • Виталий Кириллов:

      Ольга, это потому, что у Вас еще не так много посетителей.

      Ответить
  14. Арина:

    Меня спам сильно не достает, Akismet плохо ли -хорошо , но работает. Единственно, у меня много разных плагинов на сайте. Какими- то придется пожертвовать.
    Пока думаю -какими 🙂
    А вашу статья беру на заметку! Что- то мне подсказывает, что я к ней еще вернусь. Влезать в коды и что-то менять всегда боюсь, но надо когда- нибудь научиться 🙂

    Ответить
  15. Татьяна:

    Интересный способ избавляться от спама, но для меня пока ещё тяжеловат он. Пользуюсь Акисметом, и пока всё хорошо.

    Ответить
  16. Анна:

    Акисмет удалила сразу, потому что даже моя дочка которая с компьютером на ты несмогла разобраться, как его ставить. Поставила Антиспам Вее и тут началось — как я потом выяснила на разных форумах плагин конфликтовал с разными скриптами началась сильная перегрузка на сайте и посещалка с Гугла упала до нуля, хотя на другом сайте он у меня стоит и все нормально.Нашла на Ютубе информацию о блокировании по ip адресам, пока спама не так много, как у предидущего коментатора, еще можно жить, но чувствую, что придет время и буду разбираться с вашими кодами.

    Ответить
    • Виталий Кириллов:

      Анна, время разбираться обязательно придет.

      Ответить
  17. Анна:

    Виталий, загрузила файл single.php в нотпад++
    выдает следующее
    Search «comment_template()comment_form()» (0 hits in 0 files)
    Search «comment_template()» (0 hits in 0 files)

    Это что значит?
    но «comment_template()- там есть. если визуально смотреть.
    Что вы посоветуете, продолжать дальше вставлять?

    Ответить
    • Виталий Кириллов:

      Анна, если вы визуально видите comment_template(), то значит все норм. можете продолжать.

      Ответить
  18. Анна:

    Спасибо Виталий, вроде бы все сделала, только слова не меняла на Roki и т.д., у меня немножко по другому последовательность идет, побаиваюсь. Теперь значит спам коментарии не должны приходить или они сразу будут уходить в папку спам?

    Ответить
    • Виталий Кириллов:

      Анна, у меня примерно раз в месяц проскочит спам, а так все тихо. В папку спам сам отправляю.

      Ответить
  19. Анна:

    Спасибо за полезную информацию, а то спамеры задолбали.

    Ответить
    • Виталий Кириллов:

      Анна, все же попробуйте заменить имена полей, а то эффект может быть хуже ожидаемого. В любом случаи позже поделитесь информацией, как обстоят дела со спамом.

      Ответить
  20. Анна:

    За весь день ни одного коментария — не только спама, но и остальных. Вышла из системы, попыталась сама оставить комент, но выдает «Ошибка Вордпресс — заполните поля имя и эмейл»

    Ответить
    • Виталий Кириллов:

      Анна, я же в функции поменял имена:
      [php] $comment_author = trim($_POST[‘rokki’]);
      $_POST[‘author’] = $comment_author;
      $comment_author_email = trim($_POST[‘balboo’]);
      $_POST[’email’] = $comment_author_email;
      $comment_author_url = trim($_POST[‘stalone’]);
      $_POST[‘url’] = $comment_author_url;[/php]
      Поэтому комменты у Вас и не работают.

      Ответить
  21. Анна:

    Виталий, посмотрите пожалуйста, вот у меня такой код, я изменила name=»author» и так далее это правильно? Этот код из редактора, который ниже…

    <input type="text" name="author" id="author" value="» size=»22″ tabindex=»1″ />

    <input type="text" name="email" id="email" value="» size=»22″ tabindex=»2″ />

    <input type="text" name="url" id="url" value="» size=»22″ tabindex=»3″ />

    Ответить
    • Виталий Кириллов:

      Меняете значения:
      name=»author»
      name=»email»
      name=»url»
      т.е. надо изменить слова:
      author
      email
      url
      Делайте все как в статье и все получиться!

      Ответить
  22. Анна:

    Вроде бы все нормально, вышла из системы, сама попробовала оставить комент — все получилось, буду тестировать дальше, затем отпишусь.

    Ответить
    • Виталий Кириллов:

      Успехов Анна!

      Ответить
  23. Анна:

    Виталий, это опять я,все изменила, как вы сказали, попробовала сама оставить коментарий выйдя из системы — получилось, но вот уже сутки без любых коментариев, это меня насторожило, а сегодня пришло письмо на почту от постоянного коментатора, что коментарий он оставляет, а выдает «Спам не пройдет» — коментария его я не вижу.
    Вто код, который у меня получился в файле comments.php
    <input type="text" name="rokki" id="author" value="» size=»22″ tabindex=»1″ />

    <input type="text" name="balboo" id="email" value="» size=»22″ tabindex=»2″ />

    <input type="text" name="stalone" id="url" value="» size=»22″ tabindex=»3″ />

    или еще где-то нужно заменить, извините за тупость

    Ответить
    • Виталий Кириллов:

      Анна все у Вас правильно и комменты работают, я только что проверил.

      Ответить
  24. Анна:

    В функции тоже изначально вставила скопированный у вас код.
    Сама когда оставляю комент — он приходит на проверку, а остальные видимо куда-то деваются.Что делать?

    Ответить
    • Виталий Кириллов:

      Посмотрите мой комментарий, я совсем недавно его оставил.

      Ответить
  25. Анна:

    Виталий, большое спасибо, все работает, я очень рада, спам коменты вообще отсутствуют, а в последние дни их было больше 500.Все хорошо уже, Гугл и Твит.

    Ответить
    • Виталий Кириллов:

      Спасибо Анна!

      Ответить
  26. костя:

    Добрый день. У меня ваш код заработал, но как то немного криво, в место к примеру поля «имя» ромбики с вопросами, как это исправить подскажите?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Костя!
      Кракозябры появляются из-за неправильной кодировки файла. Установите кодировку UTF8.

      Ответить
  27. polina:

    у меня комментарии вводятся через comment_form
    где можно взять скрипт для моего случая?
    спасибо!

    Ответить
    • Виталий Кириллов:

      Polina, надо бы взглянуть на файлы вашего шаблона.

      Ответить
  28. Ольга Суворова:

    Подскажите, пожалуйста! Я открыла файл single.php, но ни comment_template(), ни comment_form() в нем нет…Как быть?

    Ответить
    • Виталий Кириллов:

      Ольга, воспользуйтесь преобразователем и вставьте в комментарий код из вашего файла single.php, я посмотрю.

      Ответить
  29. Ольга Суворова:

    if (have_posts()) : while (have_posts()) : the_post();
    /**
    * Find the post formatting for the single post (full post view) in the post-single.php file
    */
    get_template_part('post', 'single');
    endwhile;
    else :
    get_template_part('post', 'noresults');
    endif;

    Ответить
    • Виталий Кириллов:

      Обратите внимание на это участок кода:

      get_template_part('post', 'single');
      

      У меня есть статья о функции get_template_part(), почитайте!

      Ответить
      • Ольга Суворова:

        Виталий, снова вернулась к этой теме, так как прошлый раз некогда было разбираться в кодах, непросто для меня это. А сейчас спам прямо достал, приходит за сутки по 200-300 штук, среди них попадаются нормальные комментарии, сижу, просматриваю весь спам, чтобы выудить реальные комментарии. Надоело!
        Почитала я статью, на которую вы давали ссылку о get_template_part. Но так и не поняла, что с этим делать, какие мои дальнейшие действия, открывать для редактирования два файла шаблона: functions.php и comments.php и делать все, как вы описали в этой статье или искать какую-то папку ‘post’ или ‘single’?

        Ответить
        • Виталий Кириллов:

          Ольга, какие файлы есть в вашей теме?

          Ответить
  30. Виктор:

    Добрый день! Подскажите, как подобным подходом организовать антиспам в записях? Записи открыты для всех. То есть любой желающий может написать без регистрации. организовано это при помощи плагина User submitted Posts. Если не поможете кодом. Направьте на нужную литературу. очень нужно. Спасибо!

    Ответить
  31. Денис:

    Всегда пишет спам не пройдёт )) в чём причина?

    Ответить
    • Виталий Кириллов:

      Ищите ошибку.

      Ответить
  32. Виктор:

    Здравствуйте, Виталий!
    Спасибо за интересную статью! Все сделал по статье, но пссле попытки оставить коммент, мне отвечают «Спам не пройдет». В чем может быть причина?
    И еще. Выше в комментариях одна девушка не нашла ни comment_template() ни comment_form(). Оказывается нужно искать comments_template()

    Ответить
    • Виталий Кириллов:

      Виктор, просто где-то ошибка, ищите. За неточность в comments_template() спасибо, уже исправил.

      Ответить
  33. Andrei:

    Подскажите а на таких блогах нужно защищатся от спамма

    extrimforex.blogspot.com

    Ответить
    • Виталий Кириллов:

      Если спам беспокоит, то будет не лишнем.

      Ответить
  34. Наталья:

    Виталий, добрый день! Может Вы знаете, что это за спам-комментарии на английском языке — без ссылок, адреса сайта нет, в имени нет никакого названия, в общем ничего, что бы указывало на спам? Однажды они посыпались тоннами на мой сайт. Пришлось в срочном порядке в настройках комментариев в черный список заносить комментарии, которые содержат самые распространенные англ.слова (первое, что пришло в голову, чтобы остановить этот поток). Но проблема в том, что если в email встретится это слово, то и обычный комментарий будет занесен в черный список.
    Есть плагин, который не пропускает англоязычные комментарии, но, естественно, хочется обойтись без него. Может, вы знаете более простое решение, или достаточно применить ваш метод подмены названия полей? И еще буду благодарна, если разъясните, что это за странный спам такой)

    Ответить
    • Виталий Кириллов:

      Здравствуйте Наталья! Очень рад снова видеть Вас!
      Попробуйте мой способ, я думаю должен помочь, так как у меня «подозрительно» тихо со спамом). Сам-боты становятся все умнее и точно не могу сказать какой из них умнее или сообразительней). У меня довольно неплохая посещалка, но не на английском языке, не на русском, спам не проходит. Интересно как будет у Вас…

      Ответить
      • Наталья:

        Спасибо, Виталий! Попробую Ваш метод, и отпишусь о результатах.
        Я так поняла, что в поле «Имя» таких спам-комментариев стоят никнеймы из различных соц.сетей (фейсбук, твиттер и linkedin). Не совсем понятно, зачем рассылать такой спам, имена-то могут повторяться, тем более встречаются распространенные. Какой вообще в этом смысл?
        Кстати, Ваше письмо об ответе на комментарий попало почему-то в спам, раньше такого не было.

        Ответить
        • Виталий Кириллов:

          Наталья, про смысл не могу ничего сказать, так как сам теряюсь в догадках. А что письмо попала в спам, так такое часто случается с автоматическими ответами.

          Ответить
      • Наталья:

        Виталий, все сделала, как описано в статье. Так что подожду результатов. Единственное, в этой строке:
        <textarea class="textarea" id="antispam_comment" tabindex="4" cols="100%" name="antispam_comment" rows="10"></textarea>
        я оставила «id=comment», а не «id=antispam_comment», потому что текстовое поле превратилось в маленький квадрат. Это, наверное, опечатка или все-таки принципиально важно?

        Ответить
        • Виталий Кириллов:

          Спасибо Наталья, опечатку уже исправил! Я рад, что мой метод борьбы со спамом в комментариях Вам подошел.

          Ответить
  35. Павел:

    Здравствуйте, меня интересует вопрос, а за то, что мы скроем одну форму комментариев функцией display: none, могут ли за это последовать санкции от поисковых систем?
    Дело в том, что я активно пользовался данным методом избавления от спама на своем блоге долгое время. Да, эффект 100%. За два года — ни одного спамного комментария. Недавно мне пришло письмо от поисковика, что мой сайт не оптимизирован для отображения на мобильных устройствах и соответственно будет понижен в выдаче в поиске с мобильных устройств. Вариантов решения было два — установить дополнительный плагин на сайт, который преобразует сайт под мобильную версию либо поменять шаблон сайта на адаптивный (резиновый), который нормально отображается на любом экране. Плагины я не люблю использовать и использую лишь в крайнем случае, если при помощи редактирования скрипта достичь цели нельзя. Поэтому я выбрал второй вариант — и установил новую адаптивную тему для своего блога. Соответственно все изменения, которые я вносил в предыдущую тему были утеряны. В том числе и способ избавления от спама, описанный выше в статье. Это я ощутил буквально на следующий же день. Ежедневно мне стал приходить спам с внешними ссылками. Конечно, он не отображается на сайте, пока я не промодерирую комментарий, но по 10-15 спамных комментариев ежедневно — мне стало надоедать модерировать их. Я решил снова воспользоваться этим методом избавления от спама. Но тут случилась другая беда — я случайно узнаю, что мой блог долгое время находится под санкциями яндекса, известного как АГС. Скажу сразу — блог мой качественный, сделан для людей, внешних ссылок нет, ссылки не продаю, тексты пишу сам, все- уникальные. Соответственно я решил разобраться с причиной наложения санкций на мой блог яндексом. Платону я написать не могу, так как он в последнее время убрал форму ввода вопросов своей службе поддержке. Хорошо, я решил порыться в интернете, что пишут люди о санкциях и фильтах яндекса. Среди причин под которыми могут быть наложены санкции я вычитал как совершенно фантастические и по моему ошибочные, такие как — отсутствие в статьях картинок (сайт без картинок — говносайт), до этого самого display: none. Причем о функции display: none указано прямым текстом в справочной службе яндекса — использование скрытых элементов и текста на сайте при помощи функции стилей display: none — прямой путь к санкциям со стороны поисковиков. Соответственно я задумался над вопросом, если мой сайт довольно качественный, не могло ли стать причиной наложения на него санкции данный метод избавления от спама? Что вы думаете по этому поводу?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Павел!
      Первое, Платон не убрал форму ввода вопросов, а замаскировал ее. Видимо для уменьшения их количества. Надо пройти ряд наводящих вопросов, каких точно не помню, но в интернете есть информация.
      Второе, моя защита от спама ни в коем случаи не могла стать причиной АГС. Вам надо самым тщательным образом проанализировать свой проект на внутренние и внешние дубли, т.к. АГС зачастую накладывается именно за такие ошибки. Мой блог был под АГС и выйти из под него можно.
      Третье, Павел Вам надо настроить индексацию сайта по моей статье, а также сделать качественную карту сайта для поисковиков.
      А то, что Гугл разослал всем предупреждение, про мобильные версии, то да, все напугались, но не надо было делать таких резких движений. Поисковые системы не любят генеральные реконструкции, такие как смена шаблона и если такие проводить, то делать это надо крайне аккуратно, с максимальной предварительной подготовкой.
      В общем Павел АГС это не приговор, не отчаивайтесь и боритесь. Успехов!

      Ответить
  36. Андрей Курасов:

    Опять же вставлю свои 5 копеек по решению проблем, которые возникли при внедрении технологии Виталия в мою тему WordPress. Авось кому пригодится.

    Если после сделанного у Вас не отправляются комментарии (выводится ошибка) или если в файле comments.php нет нужных строк " &lt;input id=&quot;author&quot; tabindex=&quot;1&quot; " и тд., сделайте следующее.

    1.) Если сайт уже на хостинге, разархивируйте последнюю резервную копию файлов сайта себе на компьютер. Если сайт ещё на Денвере — ничего делать не надо.
    2.) Откройте Notepad++
    3.) Выберете в нём: Поиск/Найти в файлах.
    В поле "найти:" вбивайте: id="author"
    В поле "папка" вбейте путь к папке с файлами Вашего сайта (…/www на Денвере)
    4.)Нажмите поиск. Через минуту Notepad выдаст Вам все файлы, где встречается эта запись.
    5.) проанализируйте их и внесите нужные изменения: name="author" -> name="rokki" и так далее.
    Должно заработать.
    У меня id="author" скрывался не только в шаблоне комментариев wp-includes/comment-template.php , но и в файле function.php.
    После того как я в дополнении к comment-template.php (или comments.php в зависимости от темы WP) внёс изменения в function.php, всё отлично заработало!

    Ответить
  37. витос:

    Я поменяла тему сайта и теперь новая проблема — нет комментариев!
    Раньше комментарии были. Спамщики попадали в Спам.
    Я зашла на свой сайт инкогнито, написала комент и вот что пишется
    «Не спамьте, пожалуйста. Этот сайт защищен.
    Включите JavaScript в Вашем обозревателе и попробуйте еще раз…»
    Понятно, что никто не хочет пробовать еще раз
    Что делать, что менять?
    Может этот плагин и есть причина отсутствия коментов?

    Ответить
    • Виталий Кириллов:

      Я оставил комментарий на вашем сайта, все работает, комментарий отправился на модерацию.

      Ответить
  38. Александр:

    Здравствуйте, скажите а что мешает запрос отправить через правильный texarea? нужно просто пропарсить код выдернуть скрытый textarea и получит его имя или textarea найти по форме, ведь у вас на сайте одна форма где есть крытый textarea или я чего то не понял?

    Ответить
    • Павел:

      Я так понимаю это защита от спама, рассылаемая ботами.Ботам выдернуть из кода страницы реальный textarea не под силу (так как вы можете этому полю присвоить свое название, имя). Допустим вы присвоите этому полю имя Htghrkur, то бот по этому названию никак не определит, что это поле — название реального textarea. Такое проделать может только человек, проанализировав код. Ну а смысл живому человеку проделывать эту операцию, когда отправить комментарий можно воспользовавшись обычной формой комментариев, не парся при этом никакой код

      Ответить
  39. Саня:

    Что-то поломалось после последнего обновления вордпресса, пишет ОШИБКА: пожалуйста, заполните необходимые поля (имя, e-mail). А если писать под залогинившимся пользователем, то пишет, ОШИБКА: пожалуйста, введите комментарий.
    Перезалил по новой, все равно не работает(((

    Ответить
  40. Наталья:

    Виталий, здравствуйте! Вы написали, что «Функция актуальна до версии WordPress 4.4.» А что же делать после обновления?)

    Ответить
    • Виталий Кириллов:

      Здравствуйте Наталья! Там, запрос методом post, который передается из формы комментариев, как-то хитро обрабатывается в новой функции, что нет возможности этот запрос перехватить и изменить. По крайней мере у меня не получается. Может у Вас получится)

      Ответить
  41. Наталья:

    Виталий, я посмотрела Ваш код, если я не ошибаюсь, Вы все вернули на круги своя?
    У меня тоже была эта мысль, даже хотела проверить, может, обновленный вордпресс усилил как-то защиту от спама, и уже не стоит идти на хитрости) Вам спам не досаждает?
    В общем, я хук wp_get_current_commenter заменила на init. Не знаю, насколько это корректно, но работает)) Буду проверять еще.

    Ответить
    • Наталья:

      Ух, предложенный мной способ совсем некорректный)) Поломал тему. Пока сделала откат, но буду продолжать искать решение.
      Виталий, но все-таки, как у Вас со спамом? Может, и не стоит голову ломать?

      Ответить
      • Наталья:

        Виталий, поделюсь с Вами своими мыслями. У меня не хватает сообразительности их развить) В общем, Вы наверное знаете, что вся проблема заключалась в файле wp-comments-post.php. В версии 4.4 этот файл полностью заменили. (Кстати, я пока временно решила проблему, перезаписав этот файл из версии 4.3. Все работает на ура)
        Так вот в новом файле была заменена функция wp_new_comment на wp_handle_comment_submission. Дело именно в этой функции. Ну, Вы наверное и это знаете) Теперь с помощью хуков на $_POST мы никак не сможем повлиять. Короче, что дальше делать, я не знаю. Можно, конечно, просто заменить функцию в новом файле, а еще проще поменять названия полей в файле wp-includes/comments.php. Или, как я сделала, заменить старый файл на новый (в принципе функционал там не поменялся). Но все это не есть хорошо. Наверное, нужно искать новый способ защиты)

        Ответить
        • Виталий Кириллов:

          Здравствуйте Наталья!
          Я провел не мало экспериментов, пытаясь реанимировать защиту после обновления движка. Все тщетно. Менять что-то в файлах движка считаю неразумным.
          Пока временно я пользуюсь плагином Kama SpamBlock, проанализируйте его и поделитесь пожалуйста своими мыслями, касательно функционала данного плагина.

          Ответить
          • Наталья:

            Виталий, к плагинам отношусь так же, как и Вы) Ставлю их только при крайней необходимости, если других способов нет или слишком сложные. А тут, мне кажется, есть где развернуться, реализаций масса))
            В общем, я решила поступить так: отключаю стандартные комментарии вордпресс (что избавляет от спама), делаю отправку с помощью Ajax. И вроде как двух зайцев убила)) Давно хотела сделать форму комментирования на Ajax, но казалось слишком сложно. Теперь более-менее разобралась, и все работает. Остались некоторые вопросы, но не принципиальные. Может, Вы когда-нибудь об этом статью напишете, тогда буду более подробно вникать)

            Ответить
  42. Сергей:

    Здравствуйте, Виталий!

    В предыдущем сообщении не воспользовался преобразователем, поэтому повторяю.

    У меня в коде страниц с комментариями есть код: <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" aria-required="true" required="required">,
    но вот файл comments.php строчки с textarea не содержит.

    Получается, что этот код сидит где-то в файле ядра? Тогда, видимо, редактировать его смысла нет, поскольку он перезапишется при первом же обновлении?

    Буду признателен Вам за ответ.

    Ответить
    • Сергей:

      Виталий, я тут поползал по сайтам и узнал, что форма комментирования может выводиться двумя способами.

      Один Вы указали: через файл comments.php.

      Второй вариант — через функцию comment_form().

      Вот у меня именно второй вариант. Можете ли Вы подсказать, как мне реализовать защиту от спама в этом случае?

      Ответить
      • Виталий Кириллов:

        Сергей, данная защита работает только на версиях WordPress ниже 4.4.

        Ответить
        • Сергей:

          Виталий, добрый день! Благодарю Вас за ответ.
          Жаль, очень хорошее решение, тем более без плагина.

          Ответить
  43. Николай:

    Спасибо за ценную информацию!

    Ответить
  44. Галина:

    Здравствуйте Виталий, случайно попала на Ваш блог, искала решение своей проблемы, нашла много интересных и нужных статей по замене плагинов. Решила начать с замены антиспам вее, но к сожалению ничего не получится, у в моём шаблоне «comment_form».

    Ответить
    • Виталий Кириллов:

      Галина здравствуйте! Какая версия WordPress у Вас установлена?
      Дело в том, что этот способ защиты от спама работает только до версии 4.4.

      Ответить
      • Галина:

        Здравствуйте Виталий, у меня сейчас вордпресс 4.6, но ведь можно назад откатить до нужной версии? Вот только тему менять не хочется, из-за файла «comment_form», а остальные скрипты тоже работают только со старой версией вордпресс?

        Ответить
        • Виталий Кириллов:

          Здравствуйте Галина!
          Смысла откатывать нет. Установите лучше плагин Kama SpamBlock и забудете про спам.

          Ответить

Оставить комментарий

Внимание комментатор! Прежде чем вставить: HTML, JavaScript или PHP код в свой комментарий, преобразуй его в html сущность!

Subscribe without commenting

» Подписаться на комментарии по RSS