Нет автоматическому спаму

Сегодня меня окончательно достал автоматический спам в комментариях: Akismet пропустил десяток спамных комментариев от всяческих "Гинекологов" с сообщениями типа "Очень было интересно читать, спасибо!" и "Даже моей маме понравилось :))". Плюс несколько десятков спамных комментариев он поймал, но ежедневно просматривать попавшие в спам комментарии на предмет попадания туда по ошибке нормального комментария меня утомило. Варианты с премодерацией и обязательной регистрацией в блоге я не рассматриваю - премодерация не отменит необходимости просмотра спама, а обязательная регистрация в блоге автоматом снизит активность комментирующих раз в 10 минимум. Установка капчи меня также не устраивает: во-первых, она тоже снижает активность читателей блога, ну и во-вторых, что будет с вашим комментарием, если вы ошиблись в вводе капчи? Правильно, текст уже написанного комментария исчезнет. Такой фигней страдают практически все анти-спам плагины. У того же Макса неправильно введенная капча приводит к потере комментария, если вы не удосужились перед отправкой его скопировать.

Я пересмотрел сегодня пару десятков анти-спам плагинов - "человеческих" среди них нет. Такие плагины по большей части вредят именно нормальным посетителям блога, но никак не спамерам, которым потеря комментария в одном из десятков тысяч блогов никак не страшна. Единственную "человеческую" капчу я увидел в блоге zarabotai.lv: никакого гиммора с вводом символов, кликнул на нужной картинке и готово. И уж точно никаких ошибок при вводе. К сожалению, там капча самописная и не под WordPress. Впрочем, будь такая капча доступной всем спамеры ее  моментально бы научились пробивать. Но неважно. Поговорим лучше о том, каким образом остановить потоки спама в комментариях.

Первое: весь классический спам с 2-мя или больше ссылками в сообщении, а также весь зарубежный спам ловится тем же Akismet'ом на ура и о нем беспокоиться не стоит.

Второе: грамотный ручной СМО-спам отловить можно только зайдя на сайт комментирующего и не иначе. Многие блогеры оставляют такие спамные комментарии у себя в блоге, если сообщение действительно оставлено по теме и состоит не из 2-х слов. Ловить автоматом такие комментарии невозможно в принципе.

Третье: автоматический СМО-спам, получивший просто невероятный размах в последнее время. Характеризуется нейтральными комментариями, которые можно разместить почти в любом блоге. Ловится Akismet'ом, но только в конечной стадии распространения. То есть когда такой комментарий уже пометят как спам несколько сотен блогеров.

Как видно, наибольшие проблемы доставляет автоматический СМО-спам и именно с ним мы будем бороться. Чем он характеризуется кроме как нейтральными текстами комментариев? Тем, что он заточен под блоги на WordPress. Именно WordPress предоставляет возможность оставить ссылку на сайт комментирующего плюс это самый популярный блог-движок среди автономных блогов. Заполнить скриптом форму комментирования в блоге под управлением WordPress легче простого - названия ее полей не нужно даже распознавать, они заранее известны и любой школьник может за полчаса накатать автоматическую постилку в комментарии. Так что самый простой способ отсечь спам-скрипты это обмануть их, подсунув левое поле для заполнения, а в действительности, использовав другое поле, не со стандартным именем.

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

Сначала открываем файл comments.php вашего шаблона и ищем там что-то похожее на:

<textarea name="comment" id="comment" cols="61" rows="13" class="textarea"></textarea>

Меняем эту строчку на:

<div class="smo"><textarea name="comment" id="comment" cols="61" rows="13" class="textarea"></textarea></div>
<textarea name="real-comment" id="real-comment" cols="61" rows="13" class="textarea"></textarea>

Теперь открываем файл style.css вашего шаблона и добавляем туда строчку:

.smo {position: absolute; left: -1000px;}

Что мы сделали? Поле по умолчанию для текста комментария мы сделали невидимым (сдвинув его на 1000 пикселей вне экрана) и добавили новое точно такое же поле, но с именем real-comment. Почему бы просто не сделать поле hidden? Потому, что hidden очень легко можно распознать, а вот до анализа css-стилей спам-скрипты пока что не доросли. Конечно, спам-скриптам не составит труда заполнить оба поля, поэтому необходимо еще исправить и файл движка wp-comments-post.php - найдите там строки:

35
36
37
38
$comment_author       = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url   = trim($_POST['url']);
$comment_content      = trim($_POST['comment']);

И замените их на:

35
36
37
38
39
40
$spam_test_field = trim($_POST['comment']);
if(!empty($spam_test_field)) wp_die('Спаму нет!');
$comment_author       = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url   = trim($_POST['url']);
$comment_content      = trim($_POST['real-comment']);

Собственно, больше ничего делать и не надо. Теперь, если спам-скрипт заполнит текстовое поле comment комментарий не будет добавлен. Для большей безопасности вам стоит поменять имя css-класса smo и имя настоящего текстового поля для текста комментария real-comment. Если вы используете какие-нибудь сторонние плагины для комментариев вроде Filosofo Comments Preview, то вам необходимо и там сменить comment на real-comment. Проверить работу хака очень легко: просто удалите из style.css строчку с .smo, обновите страницу комментариев в вашем блоге и попробуйте отправить комментарий с заполненным первым текстовым полем - если вы все сделали правильно, то вы не сможете разместить комментарий.

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

PS. Прошел почти год после установки хака - ни единого автоматического спам-комментария не прошло. Конечно, это не помешало особо умным товарищам вручную нафлудить пару сотен спамных комментариев. Но что такое несколько сотен мусорных комментариев за год работы блога? Абсолютно ничего. Если бы не хак весь блог был бы завален тысячами и тысячами спамными комментариями, так что пользуйтесь и радуйтесь отсутствию спама.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Продвинуть сайт

продвинуть сайт

seoden.com.ua

Заточка цепи бензопилы

Наша заточка цепи бензопилы лучшая из лучших.

sevat.com.ua

Комментарии (всего 11 комментариев)

Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


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


Пингбэки и Трекбэки (всего 1 ссылка)