Как лучше всего фильтровать спам с помощью JavaScript?

Недавно меня вдохновили написать фильтры спама на JavaScript в стиле Greasemonkey для нескольких веб-сайтов, которые я использую, которые склонны к спаму (особенно в комментариях). Обдумывая свои варианты того, как это сделать, я понимаю, что у меня есть несколько вариантов, каждый со своими плюсами и минусами. Моя цель в этом вопросе - расширить этот список, который я создал, и, надеюсь, определить лучший способ фильтрации спама на стороне клиента с помощью JavaScript.

Что касается того, что делает спам-фильтр «лучшим», я бы хотел скажем, это критерии:

  • Самый точный
  • Наименее уязвимый для атак
  • Самый быстрый
  • Самый прозрачный

Также обратите внимание, что я пытаюсь отфильтровать контент, который уже существует на чужих веб-сайтах, используя Greasemonkey Userscripts. Другими словами, я не могу предотвратить спам; Я могу только фильтровать его.

Вот моя попытка составить список различных методов с указанием их недостатков и преимуществ:


Фильтры на основе правил:

Что они делают: «Оценивает» сообщение, присваивая значение балла различным критериям (то есть все прописные буквы, все не буквенно-цифровые и т. Д.) В зависимости от оценки сообщение отбрасывается или сохраняется.

Преимущества:

  • Простота реализации
  • В основном прозрачный

Недостатки:

  • Прозрачный - обычно легко перепроектировать код, чтобы обнаружить правила, и тем самым создавать сообщения, которые не будут приняты
  • Трудно сбалансировать значения баллов (ложные срабатывания)
  • Может быть медленным; для каждого сообщения должно выполняться несколько правил, много раз с использованием регулярных выражений
  • В клиентской среде для обновления правил требуется взаимодействие с сервером или пользователем.

Байесовская фильтрация:

Что она делает : Анализирует частоту слов (или частоту триграмм) и сравнивает ее с данными, с которыми оно было обучено .

Преимущества :

  • Нет необходимости разрабатывать правила
  • Быстро (относительно)
  • Сложнее перепроектировать

Недостатки:

  • Для эффективности требуется обучение
  • Обученные данные должны быть доступны для JavaScript; обычно в виде удобочитаемых JSON, XML, или плоский файл
  • Набор данных может стать довольно большим
  • Плохо разработанные фильтры легко спутать с хорошим набором общих слов, чтобы снизить рейтинг спама
  • Слова, которые не были просмотрены раньше нельзя точно классифицировать; иногда приводит к неправильной классификации всего сообщения
  • В среде на стороне клиента для обновления правил требуется взаимодействие с сервером или взаимодействие с пользователем

Байесовская фильтрация на стороне сервера:

Что он делает: Применяется На стороне сервера байесовской фильтрации путем отправки каждого сообщения на удаленный сервер для анализа.

Преимущества:

  • Все преимущества регулярной байесовской фильтрации
  • Данные обучения не раскрываются пользователям / реверс-инженерам

Недостатки:

  • Большой трафик
  • По-прежнему уязвим для необычных слов
  • По-прежнему уязвим для добавления общих слов для уменьшения спама
  • Сама служба может быть использована для злоупотребления
  • Для обучения классификатора может быть желательно разрешить пользователям отправьте образцы спама для обучения. Злоумышленники могут злоупотреблять этой службой.

Внесение в черный список:

Назначение: Применяет набор критериев к сообщению или его атрибуту. Если один или несколько (или определенное количество) критериев совпадают, сообщение отклоняется. Очень похоже на фильтрацию на основе правил , поэтому подробности см. В ее описании.

CAPTCHA и т.п.:

Невозможно для этого типа приложений. Я пытаюсь применить эти методы к уже существующим сайтам. Greasemonkey будет использоваться для этого; Я не могу начать требовать CAPTCHA там, где их не было. t до того, как кто-то установил мой сценарий.


Кто-нибудь может помочь мне заполнить пробелы? Спасибо,

6
задан 3 revs 6 October 2010 в 00:13
поделиться