Home Contact Sitemap
Заказать качественные web услуги

Блог web-разработчика

Блог о веб-технологиях, скриптовых языках, CMS.

День недели и дата публикации - Четверг, 21 января 2010 - 0:06 в категории PHP, usability. Вы можете читать сайт в RSS потоке.

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

Категория 21 января 2010 in PHP, usability

Проблема распространения СПАМа в Интернет не нова. СПАМ помогает многим компаниям повысить продажи, а так же служит одним из методов размещения ссылки на стороннем ресурсе в целях поискового продвижения. СПАМ-роботы программируются, как правило, на поиск 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-конструкция будет примерно следующей:


<style>

div.ndisplay{

display:none;

}

</style>

<div class="ndisplay">

<input type="text" name="parameter" value="" />

<span>Не заполняйте это поле!</span>

</div> 

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

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

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

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

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

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

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

  1. Александр сказал:

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

  2. devul сказал:

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

  3. mgordeev сказал:

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

  4. ShilinPavel сказал:

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

  5. SaT сказал:

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

  6. Den сказал:

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

  7. Ром сказал:

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

  8. mgordeev сказал:

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

  9. Иван сказал:

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

  10. Levik сказал:

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

  11. Дмитрий сказал:

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

  12. Root сказал:

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

Оставить комментарий

Вы можете подписаться на RSS ленту комментариев.