2008-11-28 4 views
1

У меня около 20 активных блогов, которые получают довольно много спама. Поскольку я ненавижу CAPCHA, альтернатива - это очень умная фильтрация спама. Я хочу создать простой REST api, такой как служба проверки спама, которую я буду использовать во всех моих блогах. Таким образом, я могу консолидировать блоки IP и обнаружение спама спама сторонней стороне, например Akisment, Mollom, Defensio и когда-нибудь в будущем написать собственное обнаружение спама, чтобы действительно получить мою голову в некоторые очень интересные алгоритмы обнаружения спама.Лучший выбор языка для службы обнаружения спама

Мой язык выбора - это PHP, я считаю себя достаточно опытным, и я действительно могу разобраться в нем и выработать решение. Этот проект, я считаю, может быть использован как хорошее упражнение для изучения другого языка. Большие 2, которые приходят на ум, - это Python и Ruby on Rails, поскольку все говорят о них как о следующем пришествии нашего спасителя. Поскольку это в основном просто API и не имеет никакого админа или публики, сталкивающихся с чем-либо, похоже, что базовый Python, работающий на простом http-сервере, кажется таким, каким он хочет. Я что-то пропустил? Что бы вы, великое сообщество, рекомендовали? Я хотел бы услышать ваши рекомендации по языку, книге и рекомендациям.

Это должно масштабироваться, и я хочу написать это с учетом этого. Прямо сейчас я, вероятно, смогу использовать бесплатные планы третьих сторон, но достаточно скоро мне придется развернуть все, чтобы на самом деле думать самостоятельно. На данный момент я думаю, что я просто буду хранить все в базе данных MySQL, пока не смогу сделать какой-то реальный анализ. Благодаря!

ответ

2

Python имеет ряд преимуществ.

  1. В Python существует несколько инфраструктур HTTP-сервера. Посмотрите на WSGI reference implementation и узнайте, как использовать стандарт WSGI для обработки веб-запросов. Он очень чистый и расширяемый. Требуется немного изучения, чтобы увидеть, что WSGI - это все, что нужно добавить к запросу, до тех пор, пока вы не достигнете стадии обработки, когда пришло время сформулировать ответ.

  2. MIME email parsing довольно простой.

  3. После этого вы будете использовать черный список сайтов и фильтрацию содержимого для обнаружения спама.

    • Черный список сайтов может быть большой, причудливой СУБД. Или это может быть простой маринованный Python набор доменных имен и IP-адресов. Я рекомендую простой маринованный набор объектов, который живет в памяти. Это быстро. Вы можете заставить службу RESTful перезагрузить этот набор из исходного файла при получении некоторого запроса GET, который заставляет обновить.

    • Текстовую фильтрацию просто сложно. Я бы начал с SpamBayes.

9

Мой первый вопрос - Почему бы вам просто не воспользоваться одним из трех перечисленных вами услуг? Кажется, они делают именно то, что вы хотите. Извините за то, что вы циничны, но я сомневаюсь, что вы в одиночку могли в течение разумного времени избивать инженеров-программистов, разрабатывающих алгоритмы, используемые на этих веб-сайтах, особенно учитывая, что их источник дохода зависит от того, насколько хорошо они это делают.

Опять же, вы можете быть умнее, чем они = P. Я не судить. В любом случае, я бы порекомендовал python по причинам, о которых вы заявили, - вам не понадобится причудливый публичный интерфейс, поэтому отсутствие превосходства python в этой области не имеет значения. Python также хорош для обработки текста, и он имеет большие встроенные привязки для использования баз данных (например, sqlite, вы, конечно же, можете установить MySQL, если считаете необходимым).

Недостатки: это может стать немного медленным, в зависимости от того, насколько сложны ваши алгоритмы.

+0

Короткий ответ: потому что я хочу избежать настройки и в зависимости от стороннего обслуживания. Конечная цель состоит в том, чтобы иметь тысячи инсталляций, поэтому, когда ее экономически выгодно развивать ее дальше, я не стану человеком против горы :) – 2008-11-28 19:11:20

+0

справедливо! также кажется, что они не были бы свободными, если бы вы так много использовали. – Claudiu 2008-11-28 19:28:05

1

Я смиренно рекомендую Lua, не только потому, что это большой, быстрый язык, уже интегрирован с веб-серверами, но и потому, что вы можете использовать OSBF-Lua, существующий спам-фильтр, который выиграл спам-фильтрации соревнования в течение нескольких лет подряд. Мы с Фиделисом Ассисом много работаем, пытаясь обобщить модель за пределами электронной почты, и мы будем рады работать с вами над ее интеграцией с вашим приложением, для чего был разработан Lua.

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

Нам нужно работать с вами при классификации материалов без заголовков почты, но я уже в этом направлении. Для получения дополнительной информации напишите [email protected] (Да, я хочу человек, чтобы отправить мне спам. Это для исследования!)

1

Я бы рекомендовал Akismet для его простоты использования и высокой точности. Имея только ключ API WordPress.com и вызов API, вы можете определить, является ли данный кусок текста от пользователя спам. Я использую плагин Akismet для WordPress, который использует тот же API и имеет звездные результаты с ним в течение прошлого года или около того.

Zend Framework имеет отличный класс PHP Akismet, который вы можете использовать независимо от остальной части фреймворка, что должно сделать интеграцию довольно простой. Документация достаточно полная.

Смежные вопросы