Защита от спама на WordPress. Защита от спама в WordPress

Защита от спама в WordPress чаще всего представлена плагином Akismet , который де-факто считается основным способом защиты от авто-спама в WordPress. Но ряд неудобств, сопряженных с использованием этого плагина (Получение Akismet API key, Настройки в Админке, Необходимость регистрации на WordPress.com, Необходимость постоянной очистки папки спам) зачастую отпугивает простого пользователя от включения Akismet в свой сетап по умолчанию. Тем более что существует ряд не менее эффективных в использовании, но гораздо более простых решений.

Самый простой, и очень надежный способ, это использовать Плагин от KAMA для защиты от спама в комментариях WordPress Он не имеет настроек, скачиваете , устанавливаете, активируете, если комментарии после активации оставляются, значит плагин работает. В противном случае при отправке комментария вы увидите сообщение «Comment is blocked! Press the botton to send your comment one more time:».

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

Защита от спама. Преимущества плагина KAMA:

  1. Никаких каптчей, чекбоксов (галочек), картинок и прочей античеловечности. Присутствие плагина визуально никак не проявляется;
  2. Никакого авто-спама!
  3. Не мусорит админку оповещениями, и дополнительными настройками.
  4. И наконец он просто - РАБОТАЕТ 🙂

Если Вы, как и я, не сторонник использования плагинов, то можно воспользоваться таким очень простым методом. Суть метода очень проста. В форму отправки комментариев добавляем скрытое для пользователя поле, помеченное как обязательное к заполнению. Роботы для авто-спама - заполнят это поле, и у нас будет критерий, по которому можно отсеивать спам комментарии. Для пущей надежности, можно добавить еще один критерия проверки, основанный на том, что спам-боты не умеют выполнять программы на JavaScript . И если на кнопку «Отправить» нажмет человек, то при нажатии на кнопку выполнится JavaScript код, в результате выполнения которого в скрытое запишется значение «StopSPAM» . А в случае с роботом переменная так и останется пустой.

И все что останется предпринять — это проверить в скрипте чему равна полученная переменная, если она равна проверочному слову «StopSPAM» , значит сообщение отправил человек. Ну а в противном случае, - это робот.

Итак, делаем 2 проверки:

В форму добавления комментария добавляем скрытое поле с именем name=»check» и пустым значением value=»»,

// Скрытое поле заполняемое JS при нажатии кнопки Отправить // Визуально скрытое поле не заполняемое пользователем

В кнопку оправки формы добавляем JavaScript код:

// JavaScript код в кнопке отправки формы

В общем случае, необходимо внести следующий код в php-скрипт, который проверяет данные из формы:

// Проверка заполнено ли поле, да - бот, нет - пользователь if(!empty($_POST["check2"])) exit("Это поле не нужно заполнять"); // Если в поле есть StopSPAM значит JS выполнялся if ($_POST["check"] != "StopSPAM") exit("Защита от спама. Включите JavaScript!");

Конкретно для WordPress, необходимо внести изменения в php-скрипт, который проверяет данные из формы комментариев. Находим в /wp-comments-post.php такой код:

If ("" == $comment_content) wp_die(__("ERROR: please type a comment."));

И вписываем сразу после него:

If ($_POST["check"] != "StopSPAM") wp_die("Ошибка: Защита от спама. Включите JavaScript."); if (!empty($_POST["check2"])) wp_die("Ошибка: Это поле не нужно заполнять");

Добавляем проверку так же и в форму обратной связи (если онау Вас присутствует).

Друзья, всем привет. Сегодня буду говорить о наболевшем. Уверен, каждый владелец сайта рано или поздно сталкивается с проблемой СПАМа. Как правило, это проблема появляется, когда блог начинает развиваться. Я вот поначалу, создал блог и не напрягался по этому поводу, ну был один–два спам-комментарий в день, так я их легко убирал вручную. Но, дальше хуже, спама всё больше и больше. Тогда я решил выбирать из двух зол.

Решил пожертвовать ресурсами сервера, но избавится от спама. Установил и активировал плагин . Результат меня порадовал, 99% защиты от спама. Хотя это может быть и 100%. Но, у этого плагина свои алгоритмы работы и иногда хорошие комментарии попадают в спам.

Поэтому я не стал автоматически очищать папку спам, проверяю её и выдёргиваю хорошие комментарии, если они туда попали. Ну и казалось бы всё хорошо, так вот теперь надоело просматривать папку СПАМ. В последнее время у меня не так много времени, и успеваю просматривать блог пару раз в день. Так, за день у меня бывает до 250 спам-комментариев. Вот пример, сегодня до обеда уже 78 комментариев в папке спам.

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

Суть метода

Этот метод, прежде всего, хорош тем, что на 100% защищает от СПАМа и при этом без плагина. А плагин выполняющий до этого эту защитную функцию вы сможете отключить и тем самым ускорить работу вашего сайта/блога.

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

Как создать подмену формы комментария

Шаг 1. Определяем, какой функцией выводится поле «Текст комментария»

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

В контекстно-зависимом меню нажмите на пункт «Исследовать элемент» (или что-то подобное, в разных браузерах по-разному).

А теперь посмотрите на исходный код:

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

Эту строчку кода нужно будет найти в файле comments.php . Если подобной строки кода у вас нет, то реализация вашего случая будет описана в конце статьи.

Шаг 2. Создаём дубликат текстового поля «Текст комментария»

Переходим в административную панель WordPress – раздел «Внешний вид» «Редактор» . Открываем для редактирования файл comments.php . Находим в этом файле текстовое поле для ввода комментария. Нажмите CTRL+F и ищите textarea.

Теперь нужно скопировать весь этот код и вставить его ниже. У вас должно получится две одинаковые строчки кода.

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

Placeholder="Введите текст комментария"

Тогда вся строчка кода будет выглядеть вот так:

Сохраняем внесённые изменения.

Шаг 3. Скрываем оригинальное поле «Текст комментария»

Сейчас, если вы посмотрите на свою форму комментария, то у вас будет два текстовых поля. Одно из них нужно скрыть. И поможет нам в этом идентификатор (id). Этот идентификатор можно использовать для придания стиля. Хотя можно определить стиль прямо в строке с кодом текстового поля, но мы это будем делать в файле style.css . Это тоже ради поддержания высокой скорости загрузки сайта.

Итак, открываем файл таблицы стилей style.css. Нам нужно добавить стиль, который будет скрывать одно текстовое поле. Этот стиль можно добавить в самом низу этого файла.

/*скрываем форму комментария*/ #comment {display:none;}

Шаг 4. Подключение фильтра для проверки комментариев.

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

Для этого открываем файл функции темы (functions.php ), и добавляем вот этот код:

/*фильтр для спама*/ add_filter("pre_comment_on_post", "verify_spam"); function verify_spam($commentdata) { $spam_test_field = trim($_POST["comment"]); if(!empty($spam_test_field)) wp_die("спам"); $comment_content = trim($_POST["main-comment "]); $_POST["comment"] = $comment_content; return $commentdata; } /*фильтр для спама*/

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

Примечание: если для атрибутов name и id вы использовали предложенную мной приставку main, то в этом коде менять ничего не надо. Если же вы использовали свою приставку или свой набор символов, то необходимо изменить подсвеченный цветом фрагмент кода.

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

Что делать если текстовое поле формируется не через textarea

Если при просмотре файла comments.php, вы не обнаружили текстового поля textarea. Значить у вас стандартная форма комментариев выводится через функцию comment_form . Как правило, работа этой функции прописана в файле функции темы (functions.php ). Вы легко сможете её найти с помощью поиска CTRL+F. В общем, вам нужно сделать дубликат формы комментариев. Для этого найдите в файле подходящее место, как я показывал выше, и вставьте вот этот код:

/*новая форма комментария*/ add_filter("comment_form_defaults", "change_comment_form_defaults"); function change_comment_form_defaults($default) { $commenter = wp_get_current_commenter(); $default["comment_notes_after"] .= "

"; return $default; } /*новая форма комментария*/

Теперь вставьте код для проверки на спам, который я приводил в четвёртом шаге. Сохраняете файл функции темы (functions.php) и переходите в файл таблица стилей (style.css).

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

Comment-form-comment {display: none;}

Всё, задание выполнено. Теперь спам не пройдёт.

Кстати, если ваша стандартная форма отличается по ширине и по высоте, то измените параметры строк и колонок (rows="8" cols="45") .

Итак, дорогие друзья, подвожу итоги. Статью я писал два дня, и за это время не одного спам-комментария. Папка СПАМ пуста и я очень доволен. Так что берите метод на вооружение и не тратьте своё время на просмотр спам-комментариев. А ещё советую посмотреть статью о создании . Принцип защиты у них схожий.

Также посмотрите видеоурок, так этом метод станет для вас ещё понятней.

На этом у меня сегодня всё, желаю вам удачи и 100%-е отсутствие спама. Всем пока, и до встречи в новых статьях и видеоуроках.

Дополнение: после обновление WordPress до версии 4.4 и выше, этот способ нуждается в доработке. И вот на эту тему.

С уважением, Максим Зайцев.

Приветствую всех читателей BloogIT!

Что-то я давно ничего не писал в блог, но на то были причины: учеба, новый проект и еще кое-что. Но сейчас не об этом. За то время, которое меня не было в блоге, накопилось очень много спама, а точнее более 1000 спам комментариев. Многовато, правда? Тут-то я и решил написать пост о плагинах для защиты от спама.

Изначально в WordPress установлен плагин Akismet , который является лучшим плагином в своем роде, но, к сожалению, у него есть один недостаток. Akismet проверяет комментарии после отправки его на модерацию, т.е. в любом случае комментарии попадают на модерацию в админке, а значит спам роботы будут часто посещать ресурс и отправлять одни и те же письма, независимо от того, прошел ли комментарий модерацию.

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

Существует множество способов защиты от спам роботов, но самым эффективным считается способ защиты с помощью капчи.

Для тех, кто не в танке, немного о терминах: капча и спам робот .

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

Обычно располагается под формой комментирования.

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

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

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

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

Выглядит это так:

Установить плагин не трудно, следуйте инструкции:

  1. Скачайте плагин
  2. Закиньте папку с плагином в wp-content/plugins
  3. Измените права на папку num в папке с плагином на 777
  4. Активируйте плагин в админке
  5. Введите в браузере: http://ваш_сайт.ru/wp-content/plugins/dimoning.ru-captcha/install.php После перехода по ссылке, сгенерируется уникальный код для Вашего блога. (страница будет пустой)
  6. Нажмите Enter

Ну вот и все, плагин установлен. Если захотите поменять текст «Я не робот» на кокой-нибудь другой, откройте файл dimoning.ru-captcha.php в папке с плагином и найдите в самом конце файла «Я не робот» и измените на свой текст.

Выглядит это так:

  1. Скачайте плагин
  2. Загрузите плагин через админку
  3. Активируйте плагин
  4. В файле comments.php вставьте строчку: в то место, в котором хотите видеть капчу.
  5. Вот и все! Плагин установлен.

Чтобы установить плагин, следуйте инструкции:

  1. Скачайте плагин
  2. Загрузите плагин через админку и активируйте.
  3. Скачайте архив
  4. Вставьте код из архива в comments.php в то место, в котором хотите, чтобы отображалась капча.

Выглядит плагин так:

4. WP-reCAPTCHA — самый мощный плагин для защиты от спама. Зачастую даже люди не могут оставить комментарии.

Вот как выглядит капча:

Уверен, что вы с ней сталкивались и не раз:)

Установить плагин легче простого:

  1. Скачайте плагин
  2. Загрузите и активируйте плагин в админке.
  3. Перейдите на оф. сайт RECaptcha и зарегистрируйтесь.
  4. Получите свой API — ключ и введите его в админке.
  5. Готово!

5. SI Captcha Anti-spam — неплохой плагин для защиты от спама. Не менее эффективный, чем WP-reCAPTCHA , но более легкий относительно разблокировки.

Скачайте плагин. Загрузите и активируйте его через админку. В настройках поменяйте язык плагина на «Русский»

6. Simple CAPTCHA — еще один плагин для защиты от спама. Какое-то время он стоял на моем блоге, но потом я его убрал, так как он неправильно отображалась в опере.

Чтобы установить плагин, скачайте его здесь. Загрузите и активируйте через админку.

7. ImHuman — суперский плагин для защиты от спама. Его очень любят читатели блога, так как у него самая легкая капча.

Установка простая:

  1. Скачайте плагин
  2. Загрузите и установите его через админку.
  3. Готово! Плагин работает.

8. Peter’s Custom Anti-Spam — неплохой плагин для защиты от спама. Капча не сложная. Для человека ввести символы с капчи не составит труда.

Советую установить этот плагин, если у вас молодой блог.

Чтобы установить плагин, следуйте инструкции:

  1. Загрузите и активируйте плагин через админку.
  2. Вот и все! Плагин установлен.

Чтобы изменить строки на английском языке на русский, откройте файл not-captcha.php и измените соответствующие строки на русский текст и сохраните файл в кодировке utf-8 .

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

Немного новостей…

Новость №1

Помните в 2012 году, где-то в сентябре, я писал, что участвовал в турнире имени Ломоносова при МГУ?

Недавно узнал результаты и оказалось, что я победитель по физике и математике. В качестве подарка, моя книга «Социальное продвижение от А до Я»

Я переписал ее от начала до конца. Теперь в книге вы найдете множество советов по продвижению и раскрутке в социальных сетях. Никакой воды, все по делу…

Новость №2

Я создал новый блог VK Way, которому уделяю большую часть своего времени. Блог я посвятил социальной сети Вконтакте.

Полное название блога: «VK Way — путеводитель Вконтакте»

Звучит, правда?

Заходите и подписывайтесь на rss блога. Уверен, что вы найдете много интересной информации о социальной сети Вконтакте.

Новость №3

В последнее время уделяю время подготовке к конференциям в Протвино и Обнинске.

Моя научно-исследовательская работа: Создание и продвижение сайта. Влияние SMO на выдачу поисковых систем.

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

До недавнего времени я постоянно проверял папку со спамом на наличие ошибочно попавших туда комментариев. Обычно в день у меня на блоге в спам попадало около 50-70 комментариев . В конце концов меня это утомило, и я начал искать способ, который бы позволил мне избавиться от автоматического спама раз и навсегда. И я такой способ нашел 🙂 .

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

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

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

Итак, перейдем к реализации этого метода. Существует два пути развития событий: либо у вас старая версия движка, и комментарии у вас выводятся через html код, либо у вас свежая версия, и комментарии выводятся через функцию comment_form() .

Первый вариант

Рассмотрим вариант, когда комментарии выводятся через html код.

Первое, что нам нужно сделать, это найти в файле comments.php , в папке с темой оформления, строку, отвечающую за вывод поля для ввода комментария. Обычно оно выглядит так:

Эту строчку нужно заменить на следующую конструкцию:

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

Spamform {display: none;}

Если к вашей старой форме комментариев были привязаны стили, то вам нужно заменить в style.css все id=»comment» на id=»newcomment» , тогда ваша новая форма комментариев будет выглядеть как прежняя.

Ну и последним шагом вставляем в конец файла functions.php (до знака ?> ) следующую функцию:

//spam_detect add_filter("pre_comment_on_post", "verify_spam"); function verify_spam($commentdata) { $spam_test_field = trim($_POST["comment"]); if(!empty($spam_test_field)) wp_die("no-spam"); $comment_content = trim($_POST["newcomment"]); $_POST["comment"] = $comment_content; return $commentdata; } //end

Второй вариант

Теперь рассмотрим второй вариант, когда комментарии выводятся при помощи функции comment_form () .

Здесь алгоритм практически такой же как и в предыдущем пункте. Все, что нам нужно сделать, это добавить две функции в файл function.php:

//Добавляем поле комментария add_filter("comment_form_defaults", "change_comment_form_defaults"); function change_comment_form_defaults($default) { $commenter = wp_get_current_commenter(); $default["comment_notes_after"] .= "

"; return $default; } //end //spam_detect add_filter("pre_comment_on_post", "verify_spam"); function verify_spam($commentdata) { $spam_test_field = trim($_POST["comment"]); if(!empty($spam_test_field)) wp_die("no-spam"); $comment_content = trim($_POST["newcomment"]); $_POST["comment"] = $comment_content; return $commentdata; } //end

Первая функция добавляет новое поле для комментирования (аналог