1. Главная
  2. Блог
  3. Полезные статьи
  4. Защита от спама блога на WP

Защита от спама блога на WP

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

Защита блога от спама

После последнего апа ТИЦ, количество спама на этом блоге увеличилось до 800 – 1000 сообщений в сутки. Если я забывал дней пять очищать БД от спама, то таблица в базе данных с комментариями увеличивалась на 100-200 мегабайт.

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

Что было

За последние 19 дней, акисмет выловил почти 16 тысяч комментариев:

Защита от спама блога на WP

За последние сутки, после моих мероприятий – ни одного спам комментария.

Защищаем блог от спама

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

1) Установил плагин от wp-kama, он наверное вылавливает 95% спама. Принцип работы его заключается в том, чтобы блокировать комментатора, у которого нет referrer-a и который не нажимает кнопку отправить комментарий, а напрямую посылает запрос к файлу wp-comments-post.php.

2) Установил плагин WP-Ban. Этот плагин может блокировать по IP, реферу, User Agents. По ip мне кажется банить смысла нет, потому что все пользуются прокси серверами и ip всегда меняются. Поэтому я заполнил окно user-agent. Определить уникальные юзер-агенты, спам ботов, можно по логам сайта. Главное не блокировать общие слова из юзер агентов, чтоб простые посетители могли заходить на сайте. Вот часть списка, слов из User Agents, которые банятся этим плагином:

AMD64
KTXN
Media Center PC
SL Commerce Client
Webster Pro

Идея получается такая – если первый плагин пропускает комментарий, который оставляется с помощью эмулирования нажатия кнопки «Прокомментировать», то руками я смотрю юзер агент или ip этого комментатора и добавляю его в WP-Ban.

3) По идее этот пункт уже не нужен, но всё же я его тоже сделал. В файл .htaccess добавил код, который перенаправляет ботов, которые запрашивают файл wp-comments-post.php без Referer.

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*cospi.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://google.ru/$ [R=301,L]

Все современные спам-машины :), уже подставляют нужный реферер, но может кто-то из спамеров пользуется старыми скриптами и.т.п. вещами.

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

Чистка БД

Если у вас похожая проблема на блоге и количество спама такое, что нет времени удалять руками, то есть вот такие запросы SQL:

Пакетное удаление спам комментариев

DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';

Пакетное удаление отклоненных комментариев

DELETE FROM wp_comments WHERE comment_approved = 0;

Это всё делается в phpMyadmin во вкладке SQL:

sql

Сделайте бекап базы данных, перед выполнением этих запросов, а то мало ли что.

+7 495 175-40-25
Консультации по вопросам
info@cospi.ru
Электронная почта