[dev] Антиспамер

Здесь авторы могут постить бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!

[dev] Антиспамер

Сообщение Егор Наклоняев 25.04.2005 5:23

Значит так. МОД антиспаммер.
1. В includes\ создать файл adcerber_config.php
Код: Выделить всё
<?php
$ad_minpost=4; // До этого числа баним, свыше только информируем Админа и забиваем спам
$ad_replace='[SPAM]';
$ad_list=array('http://cernis.cz');
?>

2. В папке language/lang_russian/email создаём ad_cerber.tpl
Код: Выделить всё
Subject: {ACTION}Попытка рекламы на {SITENAME}
Charset: windows-1251

На {SITENAME} была зафиксирована попытка разместить рекламу,
текст сообщения выглядел так:
===============
{MESSAGE}
===============
{ACTION}
Username: {USERNAME}
IP: {IP}
________________
AD CERBER

3. В файле language/lang_russian/lang_main.php
НАЙТИ
$lang['You_been_banned'] =
Добавить после неё:
$lang['You_been_blocked'] ='Вы были деактивированы за попытку рекламы на сайте.<br /> Письмо о Вашем поведении с полным текстом сообщения направлено Администрации сайта';

4. Открыть includes\functions_post.php
В функции prepare_post
НАЙТИ
Код: Выделить всё
   // Check message
   if (!empty($message))
   {
      $bbcode_uid = ($bbcode_on) ? make_bbcode_uid() : '';

ПОСЛЕ ДОБАВИТЬ
$message=ad_cerber($message);
НАЙТИ ?>
Перед вставить
Код: Выделить всё
// This function check message for SPAM
function ad_cerber($message)
{
   global $userdata,$phpEx, $phpbb_root_path,$user_ip,$db,$board_config;
   if( $userdata['user_level'] == ADMIN ) return $message;
    include($phpbb_root_path . 'includes/adcerber_config.'.$phpEx);
    $clear=str_replace($ad_list,$ad_replace,$message);
    if($clear==$message) return $message; // OK. No AD or SPAM
    $mustdie=false;
    if( !$userdata['session_logged_in'] )
   {
        $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_ip)
            VALUES ('" . $user_ip . "')";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Couldn't insert ban_ip info into database", "", __LINE__, __FILE__, $sql);
      }
      $sql = "DELETE FROM " . SESSIONS_TABLE . "
         WHERE session_ip ='$user_ip'";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Shit happens");
      }
        $mustdie=true;
   }
   else
   {
     if($userdata['user_posts']>$ad_minpost)$mustdie=false;
     else {
        $user_id=$userdata['user_id'];
        $sql = "UPDATE " . USERS_TABLE . " SET user_active=0
            WHERE user_id=$user_id";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Couldn't change user status", "", __LINE__, __FILE__, $sql);
      }
      $sql = "DELETE FROM " . SESSIONS_TABLE . "
         WHERE  session_user_id=$user_id";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Shit happens");
      }
        $mustdie=true;
      }
   }
    include($phpbb_root_path . 'includes/emailer.'.$phpEx);
    $emailer = new emailer($board_config['smtp_delivery']);
    $emailer->from($board_config['board_email']);
    $emailer->replyto($board_config['board_email']);
    $emailer->use_template('ad_cerber', $board_config['default_lang']);
    $emailer->email_address($board_config['board_email']);
    $emailer->set_subject('AD Cerber report');
    $emailer->assign_vars(array(
    'SITENAME' => $board_config['sitename'],
    'MESSAGE' => $message,
    'ACTION'=>($mustdie)?'***USER BANNED***':'',
    'USERNAME' => $userdata['username'],
    'IP' =>  decode_ip($user_ip)));
     $emailer->send();
     $emailer->reset();
     if(!$mustdie) return $clear;
     if($userdata['session_logged_in']) message_die(CRITICAL_MESSAGE, 'You_been_blocked');
     message_die(CRITICAL_MESSAGE, 'You_been_banned');
}
Аватара пользователя
Егор Наклоняев
Moderator
 
Сообщения: 417
Зарегистрирован: 25.10.2004 3:27
Откуда: оттуда


Сообщение [R: R@m$e$ :U] 26.04.2005 18:33

Егор Наклоняев
а чуть подробней о принципе работы... =)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
 
Сообщения: 1516
Зарегистрирован: 16.01.2005 14:04
Откуда: Novosibirsk,RU

Сообщение Vladson 26.04.2005 19:03

[R: R@m$e$ :U]
Посылает мыло админу если в тексте сообщения встречаются определённые слова...
Серый цвет светлый (светлее чёрного) и серый цвет тёмный (темнее белого) и серый цвет средний (между чёрным и белым).
Сколько бы мнений ни было все правда, а истины просто нет. Любой кто думает что докопался до истины всего лишь выдумал себе свою правду.
Хотя возможно просто поверил в чужую ложь...
Аватара пользователя
Vladson
phpBB 2.0 RC-1 (pre)
phpBB 2.0 RC-1 (pre)
 
Сообщения: 1037
Зарегистрирован: 27.04.2004 6:07
Откуда: Estonia, Tallinn

Сообщение sigal 26.04.2005 19:19

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

и вообще думаю нормально было бы в виде мода сделать и как архив положить.. а то тут не понятны некоторые вещи.
sigal
phpBB Plus
 
Сообщения: 545
Зарегистрирован: 23.05.2004 14:26
Откуда: КПРФ ;)

Сообщение Пензев Пётр 27.06.2005 22:28

И тишина... и мёртвые с косами стоят.
В соседних топиках предлагается ввести жуткие меры вроде визуального подтверждения и обязательной регистрации пользователей. Т.е. по сути из-за каких-то идиотов приходится значительно напрягать посетителей. На моём форуме сделать регистрацию обязательной считаю неверным.
Автор пошёл правильным путём - создаём некий перечень вариантов, на наличие которых проверяется пост. Но результат, имхо, кривоват. Т.е. мы уведомляем админа, баним по ip и т.д. А банить про ip в условиях глобальных локалок и корпоративных сетей - НИЗЯ. У же дважды приходилось разбанивать ip (один раз это собственный филиал в СПБ).
Предлагаю другую меру воздействия - если есть слова из списка - расстрел поста на месте. И нормально. Т.е. посто просто не будет появляться + тайм-аут минут на 5. Пример работы? Попробуйте выматериться на kuban.ru - у меня уж года 2 не получается как я только слова не меняю. Спама там нет в принципе - значит... всё возможно.
Но когда появится рабочий, настраиваемый из админки мод, АВТОР? Это будет популярнейший мод!
Пензев Пётр
phpBB 1.2.1
 
Сообщения: 29
Зарегистрирован: 22.10.2004 11:50

Сообщение Coagulant 28.06.2005 0:32

Пензев Пётр
Представляете сложность подобного фильтра? Не всё так просто, как кажется. Всего не предусмотришь, что-нибудь за фильтр да прорвётся.
Но работать в этом направлении, безусловно, нужно.
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1030
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва

Сообщение Пензев Пётр 28.06.2005 11:40

Ясное дело прорвётся. Но робот не пройдёт. Человек, кстати, тоже.
Зри: если напарывается на фильтр - по ip lock на 3 минуты до следующего поста. 3 раза напоролся - 10 минут в ауте. Любого спамера отвадит. И материться отучит. Именно так на kuban.ru сделано. Там форум самописный, но эта часть очень жёстко написана - в результате и юзерам удобно и хамов со спамерами нет.
Пензев Пётр
phpBB 1.2.1
 
Сообщения: 29
Зарегистрирован: 22.10.2004 11:50

Сообщение Coagulant 28.06.2005 11:51

Пензев Пётр писал(а):хамов со спамерами нет
Не верю, что спамеры не проходят. Им даже Visual Confirmation не помеха - не лень вручную оставить пост. Так что фильтр - не панацея. Опять же, разве нет ложных срабатываний?
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1030
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва

Сообщение Пензев Пётр 29.06.2005 14:25

Ещё раз:
Спамер пишет свой текст. Филтр ловит спам - заворачивает обратно и лочит отправку повторную на 3 минуты. Т.е. спамер вынужен 3 минуты ждать. потом спамер делает что? Правильно, ставит пробелы (в лучшем случае). В худшем просто убирает часть ссылки. Фильтр снова ловит... и снова 3 минуты. И т.д. В итоге всякое желание поспамить отбивается напрочь.
Необоснованные срабатывания есть, но, поверьте мне, ложные необоснованные срабатывания я наблюдал лишь однажды у себя. Пока культурно и без спама - вообще никаких проблем.
Кроме того, я описываю не некий фантастический вариант - это РЕАЛЬНО работающий механизм.
Пензев Пётр
phpBB 1.2.1
 
Сообщения: 29
Зарегистрирован: 22.10.2004 11:50

Сообщение Coagulant 29.06.2005 14:39

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

Только что для пробы разместил на борде классический пример спама: http://www.kuban.ru/cgi-bin/forum/forum ... 1&ask=3900
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1030
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва

Сообщение Rick 29.06.2005 15:39

Интересно, как быстро будет работать форум с нагрузкой от 1000 пользователей одновременно и с включенным антиспамовым фильтром... Боюсь, что мощностей простого платного хоста на это не хватит.
Аватара пользователя
Rick
phpBB 1.4.4
 
Сообщения: 77
Зарегистрирован: 18.11.2004 19:49

Сообщение Пензев Пётр 30.06.2005 17:00

to Coagulant: Мы говорим о повторных добавлениях. В первый раз любой фильтр пропустит. А именно повторники и напрягают особенно сильно.
to Rick: это на overclockers.ru? ну не знаю. Врядли сильно будет тормозить,если конечно, eregi не использовать. В худшем случае collocation спасёт отца русской демократии (у нас именно такая ситуация - проблем с мощностью нет).
Это я к тому что цензор в том виде что есть в админке - крив и нефункционален. А нормальных его расширений мне встречать не доводилось.
Пензев Пётр
phpBB 1.2.1
 
Сообщения: 29
Зарегистрирован: 22.10.2004 11:50

Сообщение master 24.08.2005 13:30

есть ли изменения и улучшения этого мода?
master
phpBB 1.0.0
 
Сообщения: 8
Зарегистрирован: 19.10.2004 13:51

Сообщение DedPichto 12.09.2005 6:17

А нельзя ли немного упростить ситуацию? В 100% случаев спамер в своем первом (и последнем) сообщении просто оставляет ссылку (ссылки) на рекламируемый ресурс.

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

Может кто напишет такое дело? :)
DedPichto
phpBB 2.0.0
 
Сообщения: 111
Зарегистрирован: 12.02.2005 14:11

Сообщение Xpert 12.09.2005 6:58

DedPichto
Вы хоть мод посмотрели прежде чем это писать? Мод именно такую функциональность и имеет... :evil:
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

След.

Вернуться в Бета-версии модов для phpBB 2.0.x

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0