Альтернативная CAPTCHA. Как сократить поток спама.

Проблема распространения СПАМа в Интернет не нова. СПАМ помогает многим компаниям повысить продажи, а так же служит одним из методов размещения ссылки на стороннем ресурсе в целях поискового продвижения. СПАМ-роботы программируются, как правило, на поиск html-форм на странице, заполнении их заранее предопределенными значениями и отправку результатов.

Стандартным и наиболее привычным средством защиты от СПАМ-роботов является так называемая графическая CAPTCHA (от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart»). Но в последнее время технологии распознавания графических изображений (равно как и альтернативные способы распознавания CAPTCHA) шагнули далеко вперед, поэтому графическая CAPTCHA уже не является достаточно надежным средством защиты. К тому же усложнение CAPTCHA, как правило, связанно с уменьшением читабельности символов на картинке. Подобный негативный эффект плохо сказывается на количестве заполнений форм и на usability как отдельной страницы, так и сайта.

Для решения этой проблемы используются не графические CAPTCHA. Их разновидностей очень много: аудио (пользователю предлагается ввести проигранный текст), логические (пользователю предлагается решить простенький математический пример), анимационные (пользователю предлагается пройти flash-лабиринт, не задев ни одной стенки) и т.п. Альтернативой этим методам может служить метод скрытого поля.

Метод скрытого поля базируется на алгоритме 99% СПАМ-роботов, а именно на том, что робот заполняет ВСЕ поля в web-форме. Для применения метода необходимо создать в содержимом тега form контейнер со свойством display:none. Желательно, чтобы свойство display:none было прописано в CSS. В невидимом контейнере надо разместить поле ввода текста и предупреждение о том, что для корректной работы формы это поле заполнять не следует.

Вся html-конструкция будет примерно следующей:

Далее при обработке формы необходимо проверить условие заполненности поля parametr. Если оно заполнено, то присланные значения можно считать СПАМом.

Алгоритм можно усложнить например так:

Java скриптом можно создавать в структуре html невидимое поле input с введенным значением. В noscript поместить вопрос и текстовое поле, в которое надо написать ответ, который заполняется скриптом. И на стороне сервера проверять это поле на наличие правильного ответа

На примере это будет выглядеть примерно так. Создается javascript, который дополняет форму элементом со значением 5. В noscript задан вопрос: «сколько будет один плюс четыре?» и поле ввода ответа с тем же именем. Далее на стороне сервера проверяется переданное значение, и если оно не равно 5 (или «пять», «five»), то результат формы не принимается.

Усложненный вариант этого принципа справляется с задачей отсеивания спама значительно лучше.

Реализация этого метода, так же как и обработка формы для каждой CMS, различна.

  • Спасибо помогло!!!

  • конечно отличная идея, но всегда найдутся боты обходящие это, и кстати не все боты заполняют все поля.. у меня как то были спам -коменты БЕЗ ссылок… тупо бредотекст

  • Немного дополнил статью усложненной реализацией этого подхода.
    Я его несколько раз уже использовал на проектах — результат отличный.

  • Классная вещь, нужно себе на сайт поставить!

  • SaT

    О круто, спасибо автору, обязательно у себя на сайте использую.

  • Den

    Капча не очень помогает от спама.

  • А я установил себе плагин Akismet, который в случае подозрительного коммента заносит его в спам, а дальше уже сам решаю спам это или нет. Пока работает на ура. Поэтому пока нет у меня еобходимоссти в капче даже. Попробуйте)

    • Да, для wordpress плагин хорош, однако на все системы его не распространишь…

  • Кто проверял у себя на сайте? Стоит себе брать на заметку?

  • Пока конкретная реализация не приобрела популярность (в уме «у спамеров»), достаточную для написания «робота» — она будет эффективно работать. Постоянно изменять капчу есть желание и возможность далеко не у всех.. а вот если создать «самомодифицирующуюся» капчу =)

  • Дмитрий

    Очень интересная идейка, но неплохо было бы и в качестве кода примеры эти тоже указать, я про java script.

  • Root

    Лучшая система защиты от спама в любых проявлениях, — это тупо писать свои решения. Либо DISQUS в руки.