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