У меня есть приложение Rails, в котором пользователи могут отправлять сообщения другим пользователям. Проблема в том, что этот тип сайта привлекает многих спамеров, рассылающих поддельные сообщения.
Я уже знаю о паре спам-сервисов, таких как Akismet (через rakismet) и Defensio (через защитник). Проблема с ними в том, что похоже, что они не учитывают сообщения, которые пользователь уже отправил. Тип спама, который я вижу на своем сайте, это когда пользователь отправляет одни и те же (или очень похожие) сообщения многим другим пользователям. Таким образом, я хотел бы иметь возможность сравнить хотя бы с несколькими прошлыми сообщениями, чтобы убедиться, что они достаточно разные, чтобы не считаться спамом.
На данный момент лучшее, с чем я столкнулся, — это реализация Text::Levenshtein Distance, которая вычисляет число различий между двумя строками. Я полагаю, я мог бы рассчитать количество различий, деленное на длину строки, и если оно превышает определенный порог, то это не считается спамом.
Еще одна вещь, с которой я столкнулся, это Classifier::Bayes, который позволяет лучше всего предположить, к какой категории относится что-либо. падает в. Все еще размышляю над этим.
Я чувствую, что могу просто искать не в том месте, и, возможно, уже есть лучшее решение для чего-то подобного. Возможно, я ищу неправильные слова, чтобы найти что-то более полезное.