Еще одна защита от спама в Wordpress

Даже при скромной посещаемости этого блога в день askimet налавливает 50-70 спамерских комментов, большая часть из которых содержит нечто типа [url=http://jxfbvjhdfv.com]. Поскольку wordpress все равно не поддерживает такие коды, логичной кажется мысль фильтровать на наличие таких строк. Но заносить эти “слова” в черный список wordpress-а бессмыслено, т.к. они не удалятся, а пометятся как спам - и опять их выгребать из askimet-a.
Ниже решение, которое мне кажется достаточно аккуратным, и с тем преимуществом, что спам удаляется до того, как попадет в базу, соответственно нет необзодимости его потом оттуда удалять. Меньше нагрузка на сервер.
Я добавил это в askimet, но умельцы могут прикрутить в любое удобное им место :)

Не забывайте про резервные копии, пожалуйста.
В wp-content/plugins/akismet/akismet.php есть функция akismet_auto_check_comment - она вызывается каждый раз, когда кто-то добавляет комментарий.
Приводим к виду (изменения выделены полужирным):

global $akismet_api_host, $akismet_api_port;

$comment['user_ip']    = preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
if (strpos($comment[’comment_content’],”[url”) !== FALSE ) {	//найдено
	print “‘url’ spam found! you will be banned”;
	die;
}
$comment[’user_agent’] = $_SERVER[’HTTP_USER_AGENT’];

Обновление 26/05/2007: Для особо упертых пришлось доработать, чтоб регистр не различался. Тут небольшая тонкость - если у вас php 5 или новее - тогда так:

if (stripos($comment[’comment_content’],”[url”) !== FALSE ) {	//найдено

Если php 4 - так:

if (strpos(strtolower($comment[’comment_content’]),”[url”) !== FALSE ) {	//найдено

Если сильно достанут - вставлю туда же ограничение на количество “http” в комменте ;)
Все.

Если Вы читали внимательно, то заметили, что я грозился забанить нарушителей - здесь же приведен код, который все го лишь не пускает к вам спам “по факту”.
А где же будут храниться ip итд? Это тема для отдельного поста - еще одна спамоловка у меня есть, и успешно работает (вот прямо сейчас наловлено уже 9345 айпишников, когда-либо спамивших на моих сайтах).

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

Подробные инструкции будут написаны в ближайшие несколько дней, а пока - http://spamtrap.org.ua/

Для желающих потестить/использовать - можно
1) оставить тут коммент, с подпиской
или
2) следить за новыми постами в этом блоге

Как только инструкции будут готовы - я сразу сообщу.

» » » »

2 Responses to “Еще одна защита от спама в Wordpress”

  1. sidewinder Says:

    При таком подходе пропадает желание оставлять комментарий.

  2. Путник Says:

    Собственно говоря, что именно вызывает пропадание?
    Если Формулировка “красного” текста - буду рад услышать более оптимальный вариант.

    Если нет, буду рад услышать уточнение - что же именно.

Оставить комментарий - Feel free to ask me in English

Он появится после того, как будет одобрен. - All comments are pre-moderated.

Внимание! Пожалуйста, не пишите в комментарии [url=... или [url]... - это будет считаться спамом. Если хотите дать ссылку - пишите просто адрес, до 2х на один коммент.
Attention! Please don't use "[url=..." or "[url]..." in comment's body or it will be deleted as spam
If you want to send me a link just type url, up to 2 urls in one comment.

Спасибо за отзыв! Thank you for a comment!