Как защитить свой блог от спама без плагинов

Автор:
(Людмила Лунева)

Веб-дизайнер и разработчик сайтов на wordpress

Последнее время спамеры совсем распоясались. Стоит только отключить плагин антиспама, так сразу, в течение ближайших 10 минут вы получите десяток идиотских предложений типа "Выигрывайте в казино" или "Поделюсь рецептом как заработать состояние за три дня не вставая с дивана".
Защита от спама является первостатейной задачей каждого владельца сайта.
Как защитить сайт от спама без плагинов
Обычно для этого используют плагины. На своих сайтах до последнего времени я использовала плагин wp-spamfree. Плагин неплохой, но и у него есть недостатки.
Поэтому, когда я нашла на сайте studio-gost.ru способ защиты от спама без плагинов, то сразу же протестировала его на этом блоге.
Способ оказался простым и очень действенным - за месяц использования я не получила ни одного видимого спам-комментария.
Как известно, спамеры умеют записывать комментарии не только через форму комментариев на сайте, но непосредственно в базу данных сайта через файл wp-comments-post.php поэтому, прежде, чем писать этот пост я зашла в PhpMyAdmin, открыла таблицу Comments в базе данных и просмотрела ее - спама нет.

Итак, как защитить свой сайт от спама в комментариях?

Содержание:

  1. 1. Если комментарии выводятся с помощью comments_template()
  2. 2. Если комментарии выводятся с помощью функ­ции comment_form()


Нужно спрятать стандартное поле для ввода комментария "comment" и заменить его на новое поле "real-comment".
Посетители вашего сайта не заметят разницы, а скрипты для спама при попытке заполнить стандартное поле с именем "comment" будут отсеиваться фильтром, запрещающим комментарии через стандартное поле "comment".
Вот так просто и изящно.
Давайте сделаем это.

↑ 1. Если комментарии выводятся с помощью comments_template()

Откройте файл comments.php, найдите в нем тег

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

и замените его следующим:

<textarea id="comment" style="display: none;" name="comment"></textarea>
<textarea id="comment" class="textarea" name="real-comment"></textarea>

Название поля real-comment в последней строке замените своим названием.
Теперь откройте файл functions.php и добавьте в конец файла, перед закрывающим ?> следующий код:

Открыть ↓
Для разблокировки содержимого, введите код из последнего, присланного вам письма.

Вот и все.
Проверить работу этого антиспама можно на страничке которую создал Kama - http://wp-kama.ru/wp-content/uploads/2010/07/kama_spamblock_checker.html
P.S. Забыла добавить, что теперь можно отключить и плагин против спама и капчу - надобности в них больше нет.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(2 голоса, в среднем: 3 из 5)

Комментарии

  1. Я давно ещё установил какой-то плагин от спама, теперь спама у меня нет, потом ещё капчу поставил, в общей сложности заняло у меня это 15-20 минут. Спама как не было, так и нет.

    • Плагины, а у вас их два (антиспам и капча) создают лишнюю нагрузку на хостинг и делают дополнительные запросы к базе данных.
      Решение против спама без плагинов намного проще и легче для сайта.

  2. Я Akismet юзаю и счастлив 🙂

    • Akismet пропускаем много спама, кроме того его нужно активировать на сайте автора - это не очень удобно.

      • "это не очень удобно." - занимает не более 3-х минут) ))))
        Меньше чем поиск и закачка какого-нибудь плагина или темы из админки) ))))
        В чем неудобство???) ))))))))

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

  3. Хороший способ. Только не всем подходит, а только тем, кто любит все своими ручками делать. Да, и при обновлении используемой публичной темы придется снова вносить изменения, что не есть гуд.

    • Как будто плагины не нужно обновлять?
      Решений, при которых не нужно делать абсолютно ничего, не бывает :).

  4. Ксана, а какой запрос sql из выбирает из wp-connents спаммерские комметы или это надо таблицу смотреть "ручками" ?

    • Ручками :).

      • "спамеры умеют записывать комментарии не только через форму комментариев на сайте, но непосредственно в базу данных сайта "
        а в каких таблицах это смотреть. у меня как-то внедрили вредоносный код в сам шаблон index. php (он был нормальный при установке )
        wp-comments ?

  5. Ксана, спасибо. Мне как раз нужно уменьшить нагрузку на хостинг и для этого нужно убрать несколько плагинов. Так и сделаю. А может быть вы подскажете как в PhpMyAdmin, открыть таблицу Comments в базе данных и где посмотреть, а при необходимости почистить.

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

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

    • Каким образом записывают, я написала в посте.
      Смысл этого - добавление комментариев в обход капчи.
      А что это им дает - ссылки с вашего блога.

  7. Вот, хотела сделать себе доброе дело, а у меня даже строчки такой - нет совсем.

  8. Отлично! а я как то до этого времени ни капч ни антиспама не ставил, на свой страх и риск 🙂 хотя рас 5 присылали спам комментарии, наглые такие часы продавали у меня на блоге, так я зашел на их сайт, нашел контакты, и припугнул их хорошей DDos атакой. Больше они не продавали часы у меня 🙂

    • "хотя рас 5 присылали спам комментарии"
      Да...не попал еще сайт в "спамерские" базы.
      "наглые такие часы продавали у меня на блоге"
      Часы продают скорее всего не они лично, то есть те кто спамит, бывает и так что заказчик даже не в курсе какими средствами пытаются подвинуть его сайт.

      • А когда попадет, в день будут присылать несколько сотен спам-комментариев :).

  9. Уже давно использую данный метод на всех своих сайтах WordPress, Даже плагин под себя сделал http://kismedia.ru/nospamnx (нашел на WordPress.org и немного переделал).
    Моё мнение - самы лучший способ, практически 100% защита от автоматического спама.
    Сейчас бы я уже не использовал плагины и сделал все описанным Ксаной способом, в этом полностью согласен.
    В моем плагине ведется лог, счетчик блокировок, получается как бы статистика не большая. Вот для интереса, вплане оценить качество работы привожу ссылку на скрин:
    http://kismedia.ru/wp-content/uploads/29-06-2012 9-31-21.png
    По нему видим: "Защита запущена 7 Март 2010. Остановлено 59314 спам-ботов (71 блокировок за сутки)"
    На сайте происходит в среднем 71 спам комментарий в сутки! При этом реально проходит на модерацию 1-3 коммента в неделю.
    Вот и делаем выводы об эффективности предложенного Ксаной метода. При этом еще один важный плюс - на сайте получается нет каптчи вообще и Вы не напрягаете реальных пользователей различными вводами цифр и букв.

  10. Ксана, спасибо за статью! Мне очень понравилось, как именно у Вас сделана форма комментариев. 🙂 да и вообще весь блог. 🙂
    У меня с блогостроительством еще не очень, поэтому для комментариев искала плагины или сторонние системы. Наткнулась на Disqus. Скажите, пожалуйста, Вы этим сервисом пользовались? Я несколько дней назад подключила эту систему, а после Вашей статьи уже думаю, может вернуть все обратно, сделать как Вы советуете и не заморачиваться. Почему-то кажется, что не все смогут разобраться, как им пользоваться - не все интуитивно понятно, да и на английском. Но по отзывам у него как раз мощная защита от спама. И еще вопросик. Комментарии от Вконтакте и Facebook - стоит ли их ставить на блог?

    • Системой Disqus я не пользовалась, ничего о ней сказать не могу.
      Комментарии от Вконтакте и Facebook стоит ставить, если к вам приходит много посетителей из этих сервисов.
      Если же, нет - то не стоит - они сильно тормозят загрузку сайта.

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

    • Причина может быть в том, что в textarea вашей премиум темы есть какой то селектор, который отвечает за стиль textarea.
      ОН может выглядеть так: class="селектор" или id="селектор".
      Добавьте этот же селектор к textarea, которую вы добавили в шаблон.

  12. А если коммент выводится функ­цией comment_form() , то правим только файл functions.​php ?

  13. Привет, обязательно попробую, а то что то мой блог стал подтормаживать, видимо плагины тянут

  14. Очень порадовали Вы меня! Как раз актуально на данный момент! 🙂 Спасибо!

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

  16. Ksana, нашла вас цеоенаправлено, т.к. устала уже удалять по 60 спам-комментариев. У меня Akismet, он просто собирает комментарии, а удалять спам надо вручную.
    У меня вопрос: Как узнать, какой функцией выводится комментарий - comment_form() или comments_template() ? В коде функции темы есть строки типа - require_once(TEMPLATEPATH . '/settings.php'); и т.д. Это указывает, что у меня работает вторая функция?

    • Откройте файл comments.php в папке с темой и посмотрите, что там есть.

  17. Ксана, а в ваших платных темах вы это уже дополнили?

    • Еще нет, но планирую сделать.

  18. Странно, но я не нашел таких строк: . Что это означает? Стоит обычный comments.php файл. Хотел попробовать отключить Akisment.

  19. Я установила плагин-антиспам. Он стал требовать какой-то пароль при отправлении комментариев. Не было времени разбираться и я его деактивировала

  20. Заюзал nospamnx на десятке своих блогов уже года полтора назад - доволен как слон, спамеры все плачут. 🙂 Капчи все и Аксимер (или как его?) повыкидывал нафиг.

  21. FROM $wpdb->comments в файле recent-comments.php -это значит, что мне использовать второй метод? Дело в том, что я вставила предложенный вами код в functions.php.Но на странице проверки свободно комментарий прошёл.И вы пишите, что comments.php а у меня recent-comments.php?

    • Sorry, не поняла вопроса.
      В посте все написано - мне больше нечего добавить :).

  22. Здравствуйте Ксана,
    всем посетителям здравия!
    Во-первых хочу сказать что у Вас Отличный Блог, могу представить, Сколько за этим всем внешним стоит Огромного Труда и Времени.
    Благодарю за информацию и Удачи Вам!
    А теперь вопрос по этой теме, извините, начинающего блогера:
    КАК можно узнать, Что - Комментарии в блоге выводятся с помощью функции - comment_form() или же с помощью - comments_template() , где посмотреть.
    Очень заинтересовало ваше решение избавления от спама, чтобы, например как в Akismete, не удалять очередь вручную. Мне посоветовали использовать вместе такие плагины как: Akismet; WordPress Firewall 2; WP Security Scan; плюс к тому же Капчу в поле комментариев.
    Но, я так чувствую, что некоторые плагины повторяют друг друга.

    • Откройте файл comments.php и при помощи поиска (Ctrl+F) поищите функцию comment_form().
      Если не нашли, значит ее там нет :).
      Тогда ищите тег textarea и изменяйте его так, как написано в посте.

      • Здравствуйте Ксана,
        Благодарю за бысрый ответ.
        У меня получилась такая ситуация:
        отредактировал файл - comments.php , как описано выше в топике, далее открыл фал - functions.php , а там Всё занято - Frame work - ом, установленной мной темы.
        Похоже, что Этот прекрасный, предложенный вами вариант, может не пройти, а жаль - отличное решение.
        Наверное надо менять тему или дальше Акисметом пользоваться.

  23. Здравствуйте, Ксана!
    А теперь, если можно, проинформируйте совсем начинающего по данному вопросу. Не могу найти функции comment_form() или comments_template(). Захожу в WordPress - темы - и не вижу этого. Пыталась через поиск.... Ничего подобного я не вижу у себя на сайте. Подскажите, где искать их в папке "Темы".
    С уважением, Светлана.

    • Вы хотите найти функции в папке с темой :)?
      Они находятся в файле comments.php, а не в папке.
      Я же написала все подробно в посте.

  24. Ксана, извините, а где находится файл comments.php? В посте прописаны все последующие действия, но сначала ведь нужно выяснить какой функцией у меня на сайте вводится коммент.

  25. Ксана, простите что немного не в тему, у меня пропало поле URL из комментариев, ничего в редакторе я не меняла, ума не природу что могло произойти. Буду признательна, если сможете подсказать.

    • Мария, техподдержка шаблонов производится на форуме.
      Пожалуйста, задайте вопрос там.

  26. Извините, спасибо

  27. Хорошее решение. Но этот скрипт не решает полностью проблему спама, ведь есть еще спамеры которые вручную добавляют комменты.

    • А вы знаете антиспам, который защищает от ручного спама :)?
      Поделитесь этим шедевром!

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

  28. Очень неплохое решение для тех, кто делает все ручками. А тем кто не хочет, то рекомендую Antispam Bee. Плагин создает дополнительное поле, которое видят только роботы. И если это поле заполняется, то плагин просто выкидывает его. И никакой каптчи не надо использовать. Это был первый способ, для тех кто не хочет ковыряться в коде. Ну а второй - купите шаблон у Ксаны, там все сделано за Вас.

  29. Я засомневалась каким способом у меня выводятся комментарии первым или вторым? Наверное, вторым, так как стоит плягин Contact Form 7. Помогите разобраться, может и смешной это вопрос, но сомнения остаются, а спам идет потоком с увеличением посещаемости.

    • Людмила, у меня же нет доступа к файлам вашей темы, как я могу это проверить?
      Плагин Contact Form 7 не имеет отношения к комментариям.
      Он создает контактную форму на сайте.

  30. У меня стоит каптча, а спам комментарии приходят только на три поста: всегда только на эти три. На другие нет. Что бы это значило?

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

Войти, чтобы написать отзыв.

Внимание: все отзывы проходят модерацию.

Топ комментаторов
АватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватар
Самые комментируемые записи
Самые читаемые записи

Для того чтобы снять блок и увидеть скрытый контент или ссылку на закачку, подпишитесь на обновления блога.

В каждом письме публикуется код разблокировки.

Пользуйтесь кодом только из последних, пришедших вам на Email, писем. Закрыть »

Постов 204
Отзывов 5298