Еще одна защита от спама в 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) следить за новыми постами в этом блоге
Как только инструкции будут готовы - я сразу сообщу.
May 29th, 2007 at 9:00
При таком подходе пропадает желание оставлять комментарий.
May 29th, 2007 at 14:34
Собственно говоря, что именно вызывает пропадание?
Если Формулировка “красного” текста - буду рад услышать более оптимальный вариант.
Если нет, буду рад услышать уточнение - что же именно.