Недавно меня вдохновили на создание спам-фильтров на JavaScript, в стиле Greasemonkey, для нескольких сайтов, которые я использую, которые подвержены спаму (особенно в комментариях). Когда я рассматриваю свои варианты, я понимаю, что у меня есть несколько вариантов, каждый из которых имеет свои плюсы и минусы. Моя цель в этом вопросе - расширить список, который я создал, и, надеюсь, определить лучший способ фильтрации спама на стороне клиента с помощью JavaScript.
Что касается того, что делает спам-фильтр "лучшим", я бы сказал, что это критерии:
- Самый точный
- Наименее уязвимы для атак
- быстрый
- Самый прозрачный
Также обратите внимание, что я пытаюсь отфильтровать контент, который уже существует на не принадлежащих мне веб-сайтах, используя скрипты пользователя Greasemonkey. Другими словами, я не могу предотвратить спам; Я могу только отфильтровать его.
Вот моя попытка составить список различных методов вместе с их недостатками и преимуществами:
Фильтры на основе правил:
Что он делает: «Оценивает» сообщение, присваивая значение балла различным критериям (т. Е. Все в верхнем регистре, все не алфавитно-цифровые и т. Д.) В зависимости от оценки сообщение отбрасывается или сохраняется .
Преимущества:
- Простота реализации
- В основном прозрачный
Недостатки:
- Прозрачный - обычно легко перепроектировать код, чтобы обнаружить правила, и таким образом создать сообщения, которые не будут получены
- Трудно сбалансировать значения точек (ложные срабатывания)
- Может быть медленным; Для каждого сообщения необходимо выполнить несколько правил, много раз используя регулярные выражения
- В среде на стороне клиента для обновления правил требуется взаимодействие с сервером или взаимодействие с пользователем
Байесовская фильтрация:
Что он делает: Анализирует частоту слов (или частоту триграмм) и сравнивает ее с данными, которые он обучил с.
Преимущества :
- Нет необходимости создавать правила
- Быстро (относительно)
- Жестче, чтобы перепроектировать
Недостатки:
- Требуется обучение, чтобы быть эффективным
- Обученные данные должны быть доступны для JavaScript; обычно в форме удобочитаемого JSON, XML или плоского файла
- Набор данных может стать довольно большим
- Плохо спроектированные фильтры легко спутать с хорошим набором общих слов, чтобы понизить рейтинг spamacity
- Слова, которые раньше не видели, не могут быть точно классифицированы; иногда приводящий к неправильной классификации всего сообщения
- В среде на стороне клиента для обновления правил требуется взаимодействие с сервером или взаимодействие с пользователем
Байесовская фильтрация на стороне сервера:
Что он делает: Применяет сторону сервера байесовской фильтрации, отправляя каждое сообщение на удаленный сервер для анализа.
Преимущества:
- Все преимущества обычной байесовской фильтрации
- Учебные данные не предоставляются пользователям / реверс-инженерам
Недостатки:
- Интенсивное движение
- По-прежнему уязвим для необычных слов
- По-прежнему уязвим для добавления общих слов, чтобы уменьшить spamacity
- Сам сервис может быть нарушен
- Для обучения классификатора может потребоваться предоставить пользователям возможность отправлять образцы спама для обучения. Злоумышленники могут использовать эту услугу
черный список
Что он делает: Применяет набор критериев к сообщению или некоторому его атрибуту.Если один или несколько (или определенное количество) критериев соответствуют, сообщение отклоняется.Очень похоже на фильтрацию на основе правил , поэтому см. Подробности в ее описании.
CAPTCHA и т. П.:
Не применимо для этого типаприложения.Я пытаюсь применить эти методы к сайтам, которые уже существуют.Greasemonkey будет использоваться для этого;Я не могу начать требовать CAPTCHA в местах, в которых они не были до того, как кто-то установил мой скрипт.
Может кто-нибудь помочь мне заполнить пробелы?Спасибо,