Модуль Drupal для контроля частоты сообщений пользователя? - PullRequest
1 голос
/ 09 ноября 2010

На этой неделе у нас появился новый тип спам-бота на PortableApps.com , который публикует со скоростью около 10 комментариев в минуту и ​​не останавливается - по крайней мере, первыйчас или около того (мы всегда останавливали его в течение этого времени).У нас их было около десятка раз за последнюю неделю - иногда останавливая его на 50 или 60, иногда до 250 или 300. Мы работаем над тем, чтобы остановить его и других спам-ботов как можно больше, но на данный момент этовсе еще настоящий вредитель.

Мне было интересно, есть ли в это время какой-либо модуль для управления частотой, которую пользователь может публиковать, например, 50 в час или что-то вроде 10 в час для новых пользователей.По крайней мере, это будет означать, что вместо того, чтобы очищать 300 комментариев по 50 за раз в admin / content / comment, у нас будет меньшее количество для очистки.(Модуль для добавления страницы для удаления всего контента пользователем и его блокировки также будет полезен!)

Я считаю, что есть плагин, который делает это доступным для WordPress, но не могу найти ничего подобногодля Drupal.

Ответы [ 4 ]

1 голос
/ 09 ноября 2010

Я бы предложил что-то вроде Моллом (от создателя Drupal).Он сканирует сообщение на наличие известных шаблонов спама / ключевых слов / ... и, если это сканирование не удается, он отображает CAPTCHA для пользователя, чтобы убедиться, что это настоящий человек, который хочет ввести контент с такими же свойствами, как спам.*

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

1 голос
/ 09 ноября 2010

Предел комментариев , вероятно, то, что вам нужно.

1 голос
/ 09 ноября 2010

На ваш второй вопрос я бы посмотрел код User Delete module (click) .

Модуль также отключает учетную запись пользователя и отменяет публикацию всех узлов / комментариев от определенного пользователя. Расширяя код, вы можете легко создать еще одну возможность отменить публикацию + удалить все узлы / комментарии от определенного пользователя и заблокировать учетную запись.

После отмены публикации кода в модуле вы должны просто поместить код удаления (в sql, если модуль выбирается с помощью sql-запроса или с помощью функций удаления drupal).


Другим вариантом будет создание представления (с использованием модуля просмотра) только для просмотра администраторами, когда вы выбираете определенного пользователя с помощью фильтров, а затем перечисляете его / ее сообщения. Затем в файле node-contenttype.tpl.php вы помещаете кнопку, которая вызывает функцию, которая удаляет все узлы / комментарии и пользователя.


Первая проблема ( частота постов )

Я думал об ограничении количества постов в комментариях. Если я правильно помню, Drupal хранит комментарии в отдельной таблице и имеет специальные функции для комментариев.

Я бы создал новый модуль и с помощью функции comment_nodeapi я бы проверил в операции «вставка», сколько комментариев уже сделал текущий пользователь за определенный период времени.

Чтобы проверить это, я написал бы собственный SQL-запрос к базе данных, который принимает количество всех комментариев, сделанных uid, когда post_date больше, чем NOW-1hour. Если это число превышает 10 или 15 или любую другую частоту публикации, то вы отправляете сообщение обратно пользователю . Вы можете получить идентификатор пользователя и имя с помощью глобальной переменной $ user.

(пример: print $user->name;)

Вы должны самостоятельно проверить SQL-запрос, но вот некоторый код, когда у вас есть сумма:

<?php
function comment_nodeapi(&$node, $op, $arg = 0) {
  switch ($op) {

    case 'insert':
      //PLACE HERE THE SQL TO GET THE COUNT
      if($count > 15){
          $repeat = FALSE;
          $type = 'status'
          drupal_set_message("You have reached the comment limit for this time.", $type, $repeat);
          break;
      }else{
          db_query('INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) VALUES (%d, %d, NULL, %d, 0)', $node->nid, $node->changed, $node->uid);
          break;
      }
   }
}
?>

(этот код не был проверен, поэтому никаких гарантий, но это должно поставить вас на правильный путь)

0 голосов
/ 30 ноября 2010

http://drupal.org/project/spam http://drupal.org/project/antispam - с поддержкой акисмета

...