Анти-спам модуль для Kohana

    На днях понадобилось для одного проекта, на фреймворке Kohana, прикрутить защиту форм, от заполнения спам-ботами.
    Готовых модулей не нашлось, а утруждать пользователей вводом каптчи не хотелось.

    Поэтому было решено поискать на хабре готовые библиотеки или методики по борьбе со спамом. И была найдена библиотека Ботобор ( habrahabr.ru/post/135209 ), написанная пользователем Mekras.

    До этого мне ни разу не приходилось писать модули для Kohana, поэтому это была возможность чуть-чуть повысить свои знания.

    Вот что получилось в итоге github.com/evgentus/antispam

    Установка

    Установка данного модуля ничем не отличается от установки любого другого модуля.
    Копируем все файлы в modules/antispam/, настраиваем конфиг, добавляем модуль в application/bootstrap.php

    Конфиг

    В конфиге все параметры подробно задокументированы.

    Немного демонстрационного кода

    Для того, чтобы «подготовить» форму для бота, необходимо сделать так:

    <?php
       $form = getForm(); // Ваша функция генерации формы
       $form = Antispam::factory($form)->getForm(); // Подготовка формы для ботов
       echo $form; // Ваш способ показа формы
    ?>
    


    Для того, чтобы проверить форму, необходимосделать так:
    <?php
       if (Antispam::factory()->isHuman()){ // Проверка на "человечность"
          echo 'Форма заполнена человеком';
       }
       else{
          echo 'Форма заполнена ботом';
       }
    ?>
    


    В заключение


    Была немного переписана библиотека Botobor, для удобства конфигурирования.

    Если у кого есть идеи или ссылки на методики обнаружения и борьбы со спамом, оставляйте в коментариях, попробую добавить их в данный модуль.

    Данный модуль предназначен для отсеивания «простых» спам-ботов, но он не спасет Вас от тех, кто намеренно хочет спамить Ваш ресурс.
    Все подробности в теме Ботобор'а ( habrahabr.ru/post/135209 )
    Поделиться публикацией

    Похожие публикации

    Комментарии 7
      0
      Что-то я не понял, а почему тут пусто?
      https://github.com/evgentus/antispam/blob/master/classes/kohana/antispam.php
        0
        Спс. Исправляю.
          0
          Ещё одно замечание. Раз уж делаете в стиле Koahana, то self:: везде замените на имя конечного класса (Antispam), иначе весь transparent extension коту под хвост
      +2
      1. Методы isHuman() и getForm() статические, поэтому и вызывать их надо без использования фабрики.
      2. Какой смысл в конструкторе несколько раз грузить конфиг? Достаточно один раз — когда $botobor_class пустой. Аналогично с правилами, секретом и т.д. — их можно добавить в Botobor через статические методы ОДИН раз.

      В целом, складывается ощущение жуткой поделки на коленке, с использованием неизученной библиотеки. Абы как.

      PS. В голову пришла мысль — такие вещи было бы прикольно прикручивать к штатному валидатору, как правило (callback). Очень полезная штучка получилась бы.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое