CAPTCHA для Drupal 6: Анти-спам Защита и Проблема Юзабилити

Знак «Нет спаму!»Итак, вы хорошо потрудились и самостоятельно либо с помощью специалистов создали свой веб-сайт. Казалось бы — вот она, тихая и спокойная жизнь счастливого владельца собственного уголка в мировой паутине! Ан нет, на самом деле поддержка и развитие сайта — не менее трудоёмкая задача, чем его запуск.

Пожалуй, главный враг всех веб-мастеров — это спам, который распространяют спам-боты. Удивительно, но порой даже весьма популярные системы управления контентом, используемые для создания сайтов (например, Drupal), не предлагают пользователям встроенной анти-спам защиты. Поэтому столь необходимый функционал приходится добавлять и настраивать самостоятельно, дабы не утонуть в море мусорных сообщений рекламного характера.

Наиболее частым решением проблемы является внедрение системы CAPTCHA (Система автоматического различия людей и ботов) — обычно это некий тест, в ходе которого от пользователя требуется ввести в специально отведённое для этого текстовое поле цифры и/или буквы с демонстрируемого изображения.

Однако, классические CAPTCHA-скрипты имеют некоторые недостатки:

  • Некоторые системы генерации картинок для тестов слишком примитивны, и боты уже давно с легкостью распознают указанные на них символы.
  • Обратное явление — некоторые особо старательные администраторы настраивают систему так, что в картинки вносится настолько много шума и искажений (чтобы затруднить распознавание ботами), что уже человеку бывает трудно с первого раза понять, что же там написано.
  • Постоянная необходимость что-то вводить для того, чтобы отправить комментарий (к примеру) может порядком поднадоесть пользователям, в результате чего сайт будет регулярно терять часть пользователей.

Так как прикладным предметом нашего рассмотрения является именно упомянутая CMS Drupal, то перейдём к более конкретному рассмотрению лишь некоторых из доступных систем CAPTCHA для Drupal.

Встроенные средства Drupal не предусматривают защиты от спама, однако существует достаточно большое количество подключаемых модулей, способных успешно решать эту задачу.

Модуль CAPTCHA — Быстро и Слишком Просто

Первый в списке — классический и во многом ортодоксальный модуль CAPTCHA, который является базой и основой для большого количества зависимых модулей анти-спам защиты. Этот модуль реализует коренной функционал и отчасти является API-модулем, то есть добавляет CAPTCHA-тест в выбранную форму.

Тем не менее, модуль CAPCTHA имеет в себе встроенные возможности для подключения буквенно-численного и математического теста. К сожалению, как уже говорилось, большинство ботов уже давно способны решать такие задачи с высокой долей вероятности, поэтому назвать данное решение достаточным можно лишь в очень редких случаях. В ситуации прицельного "обстрела" остановить нападение спамеров он не сможет.

Пример математического теста CAPTCHAПример математического теста CAPTCHA

reCAPTCHA — Быстрее, Выше, Сильнее!

reCAPTCHA — очень популярный и распространённый тип капчи, который можно встретить на многих сайтах. Наверняка вы уже сталкивались с такими тестами, и не раз. Достойный довесок к базовому модулю CAPTCHA, можно рекомендовать его для использования в большинстве случаев, если вас устраивает сам принцип буквенного теста, используемого reCAPCTHA.

Пример теста reCAPTCHAПример теста ReCAPTCHA

Выше были названы классические, наиболее популярные виды защиты от спама сайта в виде распространённых систем капчи. Тем не менее, из соображений удобства и юзабилити было бы весьма неплохо предложить какой-то более удобный способ различия ботов и людей, так как постоянно вводить числа или буквы с картинки — весьма и весьма надоедающее занятие.

Альтернатива CAPTCHA

Об альтернативной методике защиты от спама без использования модуля CAPTCHA читайте также в статье «Альтернатива CAPTCHA для Drupal 6».

Средствами Drupal и двух модулей сторонних разработчиков можно предложить пользователям облегчённый вариант капчи. Для этого нам понадобится:

  • Собственно, любой сайт, работающий на Drupal.
  • Модуль CAPCTHA.
  • Модуль NotCaptcha.

Для модуля NotCaptcha дополнительно потребуется:

  • Поддержка JavaScript браузером пользователя (все современные браузеры)
  • Подключенный модуль PHP mcrypt на сервере хостера (скорее всего, он у вас уже подключен)
  • Подключенный модуль PHP GD на сервере хостера (аналогично, скорее всего по умолчанию он доступен)

Как видно из требований модуля NotCaptcha, такой вариант подойдёт многим, но не всем, так как на данный момент пока ещё нет версии модуля NotCaptcha, работающего без JS. Однако, если ваш сайт ориентирован в подавляющем большинстве на "настольных" пользователей с современными браузерами — проблем возникнуть не должно.

NotCaptcha

Рассмотрим подробнее модуль NotCaptcha. Ключевой особенностью данного модуля является способ реализации теста "компьютер или человек?" — в отличие от других решений, здесь не нужно вглядываться в картинки, пытаясь распознать буквы или цифры, не нужно ничего вводить. Система принципиально иная — при помощи слайдеров нужно установить три вращающиеся картинки в вертикальное положение. Всё! Тест пройден.

Пример теста NotCaptchaПример теста NotCAPTCHA

Использование модуля NotCaptcha может нивелировать первую и вторую из названных в самом начале статьи проблем юзабилити стандартной капчи.

- Постойте! — скажете Вы. — А как же третья проблема? Как избавить пользователя от необходимости проходить тест, к примеру, перед каждой отправкой комментария?

И эта проблема может быть решена. Для этого в настройках модуля CAPTCHA есть специальная опция:

Настройка поведения модуля CAPTCHA Настройка поведения модуля CAPTCHA

Суть: в данном блоке можно выбрать, каким образом будет вести себя CAPTCHA для каждого отдельного пользователя. Сверху вниз доступны три опции:

  • Всегда проводить испытание
  • Проводить испытание для каждой формы отедельно, в случае успешного ответа испытание больше не проводить (для данной формы)
  • Проводить испытание единожды для всех форм, в случае правильного ответа испытание больше не проводить (для всех форм)

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

Стоит заметить, что использовать данную возможность стоит всё же с осторожностью, так как случайно дорвавшийся до вожделенного свободного доступа бот может обеспечить вас работой по очистке сайта от следов его бурной деятельности на продолжительное время.

Заключение

В этой заметке была рассмотрена проблема спама, недостатки типичной системы CAPTCHA и способ борьбы с ними при помощи Drupal и модуля NotCaptcha. Стоит отметить, что методики борьбы со спамом далеко не ограничиваются рассмотреными модулями, и существует их гораздо больше, чем было рассмотрено в данной статье. Другие решения будут предложены моим читателям в последующих материалах на данную тему.

Всегда помните, что пользователя не любят сложности и трудности — старайтесь достигать своих целей наиболее простым и лёгким способом.


Важное замечание: Друзья! Хочу дополнительно обратить ваше внимание, что модуль CAPTCHA, о котором шла речь в данной заметке, имеет одну неприятную особенность. Соответственно, все остальные модули, которые зависят от него и основаны на CAPTCHA API, имеют эту же "особенность". Дело в том, что Drupal не кэширует страницы с CAPTCHA! То есть любая страница, на которой находится тест CAPTCHA, не может быть кеширована средствами Drupal, а значит она будет генерироваться заново при каждом обращении, что очень сильно скажется на общей производительности сайта.

Чтобы не перегружать данный пост — подробности перенёс в отдельный материал, найти который можно по приведённой выше ссылке. Кроме того, в том же материале приведена ещё одна альтернатива стандартной СAPTCHA, во многом даже более элегантная, чем NotCaptcha.

Average: 5.8 (4 votes)
Об авторе: Сергей “Treidge” Данченко

АватарСергей "Treidge" Данченко — автор блога 3DG.Me, вольный 3D-художник и разработчик игр, веб-разработчик на Drupal и человек-оркестр с опытом в некоторых других областях. Личное кредо — "хочешь сделать что-нибудь хорошо, сделай это сам". В моменты особого вдохновения пишет стихи и играет в волейбол. Основные профессиональные инструменты — Autodesk Maya, Autodesk Mudbox и Adobe Photoshop. Без ума от индюков и попугаев. Спасибо за внимание, заходите снова!

Комментарии

анука протестирую твою капчу

ха, так вот ты пишешь про НОТкапчу а сам поставил "галочку"... так что же лучше

Статья довольно-таки пожилая и с момента написания не обновлялась. Естественно, время не стоит на месте — сейчас есть варианты получше. "Галочка" — это модуль Simple Anti-Spam, могу рекомендовать его, работает шикарно.

А какой модуль комментариев используется на этом сайте?

Copyright © 2010-2013 Сергей "Treidge" Данченко. Свяжитесь со мной, если у вас есть вопросы или предложения. Тема основана на BlogBuzz от Antsin.com