Название скрипта: Defend Chat
Версия скрипта: 1.00
Платформа: PtokaX
Версия API: API2
Автор: Enyby
Описание: Скрипт предназначен для полностью автоматической защиты чата хаба от спама. Глушит сообщения со спамом.
Принципы работы скрипта:
Обычные пользователи отличаются от спамеров тем, что у обычные пользователи, если и кидают ссылку на хаб, IP адрес или что-то подобное, то это будет не первое сообщение после входа на хаб. На этом и основана работа скрипта.
Чисто теоретически, можно сделать таймаут на все или же попавшие под паттерн сообщения. Т. е. если пользователь на хабе меньше 5 минут, то ссылку в чат он не отправит. Но подобные скрипты уже есть.
Каждое сообщение проверяется таблицей паттернов на принадлежность к "плохим". Если сообщение плохое, то оно пройдет только в том случае, если пользователь перед этим отправил не менее 5 "хороших" сообщений в чат. Т. е. при этом скрипте нельзя писать в чат ссылки, если не участвуешь в разговоре. После перезахода нужно снова отправить не менее 5 сообщений без ссылок, чтобы ссылка прошла в чат. Причем, при ошибочных попытках, счетчик "хороших" ссылок обнуляется. Также блокируется отправка одинаковых сообщений в чат, даже от разных пользователей.
Операторы игнорируются, кроме случая отправки повторных сообщений. Также они уведомляются о том, что хотел сказать пользователь.
DefendChat.lua ( 3.44 килобайт )
: 147
P. S. Если у вас нет регистрации на этом форуме, а значит вы не можете качать вложения, то скачать этот скрипт, равно как и другие, можно по ссылке
Могу подсказать еще один способ защиты чата от флудоботов (чтобы прочитать текст, вам необходимо стереть защитное покрытие с помощью монеты):
Подавляющее большинство самописных флудоботов не имеют поддержки сжатия (ZPipe/ZPipe0), в отличие от нормальных клиентов. Вся проблема в том, что птока не добавляет в таблицу юзера информацию о поддержке сжатия, и тому, кто решится написать скрипт, блокирующий чат по этому принципу, придется заниматься мазохизмом, отлавливая отправку клиентом команды $Supports
alex82, насчёт "отлавливая команду..." - вопрос - если она (команда) есть - бот, или наоборот, если нет такой команды - бот?
Если в $Supports нет подстроки Zpipe => то это бот. Или старый клиент.
ADD:
Да, подход вполне имеет право на жизнь. Хотя может работать не всегда. Вот, например, для утилиты flood от ZeroCool - поможет ($Supports UserCommand UserIP2|).
Оно не будет работать если спамбота писал жутко продвинутый кодер, позаботившийся о полном сходстве своего творения с каким-нибудь DC-клиентом, либо если спамбот основывается на каком-нибудь DC-клиенте. 95% (если не больше) спамботов не подходят под это описание . В том числе те придурковатые итальяшки, что спамят по всем крупным хабам фразой "new hub pls connect dchub://адрес_говнохаба 0,617443" .
Вообще говоря, хорошей идей будет отсев ботов по реализуемым функциям. Например, дать какую-то команду, которую в ботах обычно не обрабатывают, но делают в клиентах. Например скачать файл-лист. Можно просто даже отправить запрос на соединение. Но тут надо смотреть, чтобы не было нормальных клиентов с криво настроенным активом.
Или еще что-то сделать. Как вариант пытаться делать поиск. Если шара не нулевая и не было ответа, то бот. Естественно запрос поиска должен быть максимально общим. Возможно даже пустым.
to alex82:
Ну так. Целью стоит отсеять хоть сколько-то ботов, а не отлить серебрянную пулю. Так что все в порядке.