

Итак, вы хорошо потрудились и самостоятельно либо с помощью специалистов создали свой веб-сайт. Казалось бы — вот она, тихая и спокойная жизнь счастливого владельца собственного уголка в мировой паутине! Ан нет, на самом деле поддержка и развитие сайта — не менее трудоёмкая задача, чем его запуск.
Пожалуй, главный враг всех веб-мастеров — это спам, который распространяют спам-боты. Удивительно, но порой даже весьма популярные системы управления контентом, используемые для создания сайтов (например, Drupal), не предлагают пользователям встроенной анти-спам защиты. Поэтому столь необходимый функционал приходится добавлять и настраивать самостоятельно, дабы не утонуть в море мусорных сообщений рекламного характера.
Наиболее частым решением проблемы является внедрение системы CAPTCHA (Система автоматического различия людей и ботов) — обычно это некий тест, в ходе которого от пользователя требуется ввести в специально отведённое для этого текстовое поле цифры и/или буквы с демонстрируемого изображения.
Однако, классические CAPTCHA-скрипты имеют некоторые недостатки:
Так как прикладным предметом нашего рассмотрения является именно упомянутая CMS Drupal, то перейдём к более конкретному рассмотрению лишь некоторых из доступных систем CAPTCHA для Drupal.
Встроенные средства Drupal не предусматривают защиты от спама, однако существует достаточно большое количество подключаемых модулей, способных успешно решать эту задачу.
Первый в списке — классический и во многом ортодоксальный модуль CAPTCHA, который является базой и основой для большого количества зависимых модулей анти-спам защиты. Этот модуль реализует коренной функционал и отчасти является API-модулем, то есть добавляет CAPTCHA-тест в выбранную форму.
Тем не менее, модуль CAPCTHA имеет в себе встроенные возможности для подключения буквенно-численного и математического теста. К сожалению, как уже говорилось, большинство ботов уже давно способны решать такие задачи с высокой долей вероятности, поэтому назвать данное решение достаточным можно лишь в очень редких случаях. В ситуации прицельного "обстрела" остановить нападение спамеров он не сможет.
Пример математического теста CAPTCHA
reCAPTCHA — очень популярный и распространённый тип капчи, который можно встретить на многих сайтах. Наверняка вы уже сталкивались с такими тестами, и не раз. Достойный довесок к базовому модулю CAPTCHA, можно рекомендовать его для использования в большинстве случаев, если вас устраивает сам принцип буквенного теста, используемого reCAPCTHA.
Пример теста ReCAPTCHA
Выше были названы классические, наиболее популярные виды защиты от спама сайта в виде распространённых систем капчи. Тем не менее, из соображений удобства и юзабилити было бы весьма неплохо предложить какой-то более удобный способ различия ботов и людей, так как постоянно вводить числа или буквы с картинки — весьма и весьма надоедающее занятие.
Об альтернативной методике защиты от спама без использования модуля CAPTCHA читайте также в статье «Альтернатива CAPTCHA для Drupal 6».
Средствами Drupal и двух модулей сторонних разработчиков можно предложить пользователям облегчённый вариант капчи. Для этого нам понадобится:
Для модуля NotCaptcha дополнительно потребуется:
Как видно из требований модуля NotCaptcha, такой вариант подойдёт многим, но не всем, так как на данный момент пока ещё нет версии модуля NotCaptcha, работающего без JS. Однако, если ваш сайт ориентирован в подавляющем большинстве на "настольных" пользователей с современными браузерами — проблем возникнуть не должно.
Рассмотрим подробнее модуль NotCaptcha. Ключевой особенностью данного модуля является способ реализации теста "компьютер или человек?" — в отличие от других решений, здесь не нужно вглядываться в картинки, пытаясь распознать буквы или цифры, не нужно ничего вводить. Система принципиально иная — при помощи слайдеров нужно установить три вращающиеся картинки в вертикальное положение. Всё! Тест пройден.
Пример теста NotCAPTCHA
Использование модуля NotCaptcha может нивелировать первую и вторую из названных в самом начале статьи проблем юзабилити стандартной капчи.
- Постойте! — скажете Вы. — А как же третья проблема? Как избавить пользователя от необходимости проходить тест, к примеру, перед каждой отправкой комментария?
И эта проблема может быть решена. Для этого в настройках модуля CAPTCHA есть специальная опция:
Настройка поведения модуля CAPTCHA
Суть: в данном блоке можно выбрать, каким образом будет вести себя CAPTCHA для каждого отдельного пользователя. Сверху вниз доступны три опции:
Таким образом, если выбрать вариант номер два, то пользователь, пожелавший оставить комментарий, должен будет лишь однажды пройти тест. После успешного прохождения он сможет оставлять комментарии без прохождения теста (т.е. получит условный статус "человек").
Стоит заметить, что использовать данную возможность стоит всё же с осторожностью, так как случайно дорвавшийся до вожделенного свободного доступа бот может обеспечить вас работой по очистке сайта от следов его бурной деятельности на продолжительное время.
В этой заметке была рассмотрена проблема спама, недостатки типичной системы CAPTCHA и способ борьбы с ними при помощи Drupal и модуля NotCaptcha. Стоит отметить, что методики борьбы со спамом далеко не ограничиваются рассмотреными модулями, и существует их гораздо больше, чем было рассмотрено в данной статье. Другие решения будут предложены моим читателям в последующих материалах на данную тему.
Всегда помните, что пользователя не любят сложности и трудности — старайтесь достигать своих целей наиболее простым и лёгким способом.
Важное замечание: Друзья! Хочу дополнительно обратить ваше внимание, что модуль CAPTCHA, о котором шла речь в данной заметке, имеет одну неприятную особенность. Соответственно, все остальные модули, которые зависят от него и основаны на CAPTCHA API, имеют эту же "особенность". Дело в том, что Drupal не кэширует страницы с CAPTCHA! То есть любая страница, на которой находится тест CAPTCHA, не может быть кеширована средствами Drupal, а значит она будет генерироваться заново при каждом обращении, что очень сильно скажется на общей производительности сайта.
Чтобы не перегружать данный пост — подробности перенёс в отдельный материал, найти который можно по приведённой выше ссылке. Кроме того, в том же материале приведена ещё одна альтернатива стандартной СAPTCHA, во многом даже более элегантная, чем NotCaptcha.
Сергей "Treidge" Данченко — автор блога 3DG.Me, вольный 3D-художник и разработчик игр, веб-разработчик на Drupal и человек-оркестр с опытом в некоторых других областях. Личное кредо — "хочешь сделать что-нибудь хорошо, сделай это сам". В моменты особого вдохновения пишет стихи и играет в волейбол. Основные профессиональные инструменты — Autodesk Maya, Autodesk Mudbox и Adobe Photoshop. Без ума от индюков и попугаев. Спасибо за внимание, заходите снова!
анука протестирую твою капчу
ха, так вот ты пишешь про НОТкапчу а сам поставил "галочку"... так что же лучше
Статья довольно-таки пожилая и с момента написания не обновлялась. Естественно, время не стоит на месте — сейчас есть варианты получше. "Галочка" — это модуль Simple Anti-Spam, могу рекомендовать его, работает шикарно.
А какой модуль комментариев используется на этом сайте?