Мастерим оригинальную капчу для своего оригинального проекта
Для тех, кто не в курсе: капча — это проверка на человечность. Ни что иное как борьба со спамом. Попытка не допустить автоматических действий роботов. Используется везде, где только присутствуют формы. Отправка комментария, заказ товаров или сообщение администратору, добавление контента (при количестве авторов > 1), регистрация, иногда даже вход в защищённую зону — все эти нежные места сайта охраняются ею (капчей).
Вам доводилось вводить кривенькие циферки с буковками при регистрации на форуме или при публикации комментария? Тогда вы знаете, что такое капча. Если не знаете, то вот вам несколько примеров :)

Немного истории
Почему «капча»? Ок. На самом деле это всего лишь русское произношение английского слова CAPTCHA — Completely Automated Public Turing test to tell Computers and Humans Apart, что переводится как «полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей».
Итак, о чём мы. Капча бывает разная (удержусь от перечисления видов). На счёт эффективности и степени раздражения пользователя можно спорить долго. Кому-то нравится вводить буковки, кому-то — дёргать рычажки, кому-то — решать задачки, кому-то — кликать по чекбоксу. Однако все согласятся, что если бы капчи не было вообще, им стало бы комфортней. Поэтому следует делать её как можно незаметней.
Оригинальному проекту — оригинальная капча
Создавая свой оригинальный проект, никак не хочется вешать на него стандартные решения в виде кривых буковок или математических задач. К тому же, все эти «хитрые» алгоритмы давно распознаются «умными» роботами. Поэтому «защита» из них хреновая.
Очень важную роль играет простота капчи. Чем она сложнее, тем меньше желания у пользователя оставлять комментарий, регистрироваться или делать заказ. Далее рассмотрим несколько простых, но эффективных методов защиты от спама, которые не раздражают пользователя.
Капча «Я не робот»
Очень простое решение защиты от спама в виде чекбокса под названием AmCaptcha реализовал Алексей Московский (изначально идея Dimoning'а) в виде плагина для WordPress. Идея до безобразия проста — при клике по чекбоксу небольшой javascript изменяет значение скрытого поля <input type="hidden" name="antispam" value="spam">, а потом при обработке формы сервер проверяет это значение if($_POST['antispam']==="spam") exit("да это эже спам!");.
Только нужно генерировать значение так, чтобы спамеры не смогли вычислить его. Например, использовать несколько ключей и видов шифрования, подмешивать лишние символы.
Это решение имеет только один заметный минус — работа только при включённом javascript у пользователя. Однако это можно доработать при желании. Об этом я расскажу чуть позже.
Конечно использовать плагин ВП на своём сайте не получится. Нужно будет доработать код. Возможно как-нибудь сделаю это я (или сам Алексей) и выложу в паблик.
Этот метод можно использовать в любом месте сайта. Он не особо надоедает визуально, но требует места в форме. К тому же пользователь должен понимать, что это капча.
Капча на основе Confirm
Ещё более простой и менее надоедливый метод капчи — это использование javascript события confirm. Вы же используете javascript валидацию форм на своём сайте? ;) Просто добавьте ещё одно условие.
Должно получиться что-то типа того:
if (form.name.value==="") { alert("Пожалуйста, укажите Ваше имя."); form.name.focus(); return false; }
if (form.email.value==="") { alert("Вы должны указать свой email адрес."); form.email.focus(); return false; }
if (form.text.value==="") { alert("Вы не заполнили поле сообщения."); form.text.focus(); return false; }
if (confirm("Проверьте ваши данные перед отправкой, чтобы мы могли с вами связаться. Всё верно?")) form.nospam.value="itsnospam"; else return false;
return true;
}
Как всегда всё чрезвычайно просто. При нажатии всплывает формочка с текстом «Проверьте ваши данные перед отправкой, чтобы мы могли с вами связаться. Всё верно?» и вариантами ответа «Ок» и «Отмена». Пользователь может нажать «Отмену» и действительно проверить введённые данные (ещё один плюс). Имхо это очень удобно. Причём пользователь даже и не подумает, что это капча. Ведь это всего лишь напоминание о правильности данных.
Этот метод строится также, как и предыдущий, на изменении скрытого поля, которое проверяется при обработке формы. И точно также серьёзно стоит подойти к генерации значения.
Этот метод более элегантный, но имеет свои недостатки. Всплывающее окошко быстро надоедает, поэтому его нельзя использовать там, где посетитель пользуется формами часто (например, отправка комментариев). Его стоит использовать в формах заказа и отправки сообщения администратору. Зато он не требует места в форме и не похож на капчу. А также эта капча повышает внимание к правильности заполнения всех полей.
Если JavaScript отключён
Как я уже писал, не стоит пренебрегать пользователем, у которого отключен javascript. Это касается обоих описанных методов защиты от спама. Я предлагаю сделать дополнительную обработку и в случае отключённых скриптов отправлять посетителя на страницу с подтверждением человечности. Вот тут можно использовать и классическую капчу с циферками и задачками. Ведь очень немногие пользователи увидят эту страницу. Или можно не использовать капчу вообще — роботы ведь не должны попасть на эту страницу.
Предпросмотр вместо капчи
Очень логичное решение. Пользователю предлагается просмотреть, как будет выглядеть введённая им информация, до отправки данных на сервер.
Механизм очень прост. В форму добавляется кнопка «Предпросмотр», при нажатии которой происходит обработка формы и вывод на экран введённых пользователем данных. Кнопку «Отправить» при этом следует делать неактивной до наступления события предпросмотра.
Как вы уже наверно догадались, при предпросмотре происходит не только разблокировка кнопки «Отправить» (от роботов она ведь не блокируется). Также изменяется какой-то параметр. Например, скрытое поле. А затем производится проверка на сервере.
Огромный плюс этого метода в том, что все обработки происходят на сервере вне зависимости от жаваскрипта. Что более безопасно и защищено от анализа спамерами.
Подобная капча реализована и на этом блоге. Поэтому спешите отправить свои комментарии :) Конечно по теме поста.
Полезность этой защиты от спама очевидна — пользователь вынужден проверить введённую информацию. Это защищает вас также от множества ошибок, возникающих из-за спешки. Уровень защиты и безопасности максимальный. Причём на капчу это не похоже. Для многих форм это просто идеальный вариант.
Послесловие
Будьте оригинальны. Экспериментируйте и создавайте свои методы надёжной и ненавязчивой капчи. Ведь разным проектам подойдут совершенно разные методы. К тому же, не стоит все формы (если у вас много разновидностей таковых) обрабатывать одинаково. Посетитель должен быть доволен.
Обмен линками
Аббат Кальне поделился архиполезной инфой о том, как уменьшить gif-изображение с анимацией в программе photoshop. Я, честно говоря, не знал как изменить анимированную гифку. Думаю, как и многие другие.
В рамках проекта «Постовой по кругу» ссылаюсь на Путеводитель в мире информации. Большой информационный портал на различные темы: компьютеры, саморазвитие, финансы, образование, психология, астрология, спорт.
Поделиться ссылкой:
Комментарии:
Из всех капч, которые всречал, больше всего понравилась та, где нужно картинки поворачивать правильно..
За все небольшое время существования одного из моих сайтов, по данным Яндекс-метрики, на него зашли 14 900 раз, при этом пишет, что java script был отключен у 0% пользователей... Нормальные люди скрип не отключают, а не нормальные вам в блогах не нужны :)
Спасибо автору за статью!
Как по мне, самое главное для пользователя - простота капчи.
Лично я использую математическую капчу.
Галочка «Я не робот» очень примитивная. Ведь сами знаете что стоит хрумеру передать лишний аргумент :)
А вообще лучше сделать как у тебя, изменить параметры name="*" со стандартных на какие либо другие, ну и поправить несколько строк в исполняющих файлах. Тогда можно вообще про капчу забыть, хотя ручной спам еще никто не отменял вроде как.
Хорошая идея, не смотря на то, что все равно требует определенных телодвижений от пользователя.Но по сравнению с математическими, картиночными и прочими - наиболее user-friendly вариант.
Хотя, если подобная система станет массовой, обойти ее очень просто.
Как то на хабре встречал 3д капчу, было намного прикольней чем передвижение картинок, правда очень тяжелая получается
Хорошая идея, сейчас все капчи ломаются, вот если бы придумать что-то действительно надёжное
На скрине капча с формулой - зачет! Еще можно какие нибудь задачьки предлогать решить. Или число П ввести до какого нибудь знака )
Более того, бывает, что просто не можешь прочитать текст на картинке. Мне очень понравилась галочка «я не бот», раньше не встречал такого)
Рулит двойная каптча, типа сначала картинка(какой-нибудь Ленин или Сталин), пользователь нажимает на неё, и только потом появляется настоящяя каптча.
Да каптча очень полезный инстумент от спамеров, но яндекс лучше - взял ввел как и гугль тэг нофолоу и все,теперь смысла в спаме не стало! :)
Не плохая идея, уж лучше так, чем заполнять геморные reCaptcha. Правда не все захотят ручками ковыряться в коде...
Капча это конечно хорошо, но меня от нее тошнит особенно от той что состоит из двух слов
Never Lex привет,знаешь до сегодня даже не задумывался над словом «каптча», ну есть и есть, хорошо что заглянул к тебе, спасибо за ликбез.Плохо что тебе WP не нравится,тема довольно обширная,хоть и грузная. Кстати,сегодня рассылку по jQuery Дениса Хомича не получал? Твоё мнение как, я в этом пока не волоку?
Спасибо, прочитал. Кстати, бесплатное ещё тоже не просматривал. Катастрофически не хватает времени. Извини, побёг на свою основную РАБоту. Спасибо за быстрый отзыв.
Что касается задачек - то почему только Javascript? Есть замечательный WP-плагин, Math Comment Spam, реализован на чистом PHP. Чтобы его поставить придется немного поработать руками, разместив в форме дополнительное поле, но это того стоит.
И никакой паранойи в стиле РеКапчи и прочих.
Капча по клику - куда более лучше. Сегодня на каком-то блоге видел, весьма неплохо было реализовано.
А мне понравилась капча, там где нужно 3 фигуры поставить вертикально - довольно оригинально выглядит :)
Под WordPress можно попробовать плагин Antispam Bee, по сути действия схожий с первым способом.
Давно уже ищу себе капчу на сайт. Спасибо за столь полезную информацию.
Я недавно где то прочел что хрумер умеет капчи разгадывать. Так что если слишком простые то есть риск получить горы спама к себе на блог. Хотя акишмет не дремлет ))
Изначально неактивная кнопка Отправить может смутить пользователя поболее простой задачки сложить числа.
Я использую стандартную image-капчу, но если у пользователя включен Javascript, то она заполняется сама и скрывается с глаз, т.е. её и не видно.
Если Javascript отключен - надо будет пройти стандартную image-капчу.
Публикация с предпросмотром - тоже хороший вариант, элегантно и просто. Меня не напрягает, лишний раз проверить чего же там написал не сложно :)
Установил IPB форум с капчей. позже у самих разработчиков заказал систему капчи.Очень понравилась разработка, т.к. в ней как мне сказали присутствует джава и т.п., что положительно влияет на раскрутку форума. Хотя действительно так оно и есть, на форуме уже более 50 000 человек в сутки.
Точно подмечено что сложная капча отбивает желание вообще комментировать. На одном блоге видел чтоб оставить коммент нужно держать нажатой кнопку мыши. Вообще бред. Имхо.
Каптча может выступать не только защитой от спама, в некоторых случаях с её помощью можно избавиться от глупых комментов в целом.
Кстати, для тех кто на WP,сегодня случайно наткнулся: cpch.ru-вроде помимо капчи можно ещё типа заработать,так сказать «самая ненавязчивая рекламка от производителя».
а можешь смастерить как щас есть капчи где 3 фигурки нужно вертикально выставить??
Очень актуальная информация. Тоже видел 3d капчу... как минимум Ваш блог запомнится. А так считаю, что капча должна быть математической
Пример капчи с вычислением лимита это жестко. Не каждый сможет такое решить.
На всіх блогах одне й те саме. Сапами і проче. От ви всі хоче, щоб спаму не було, але як розкрутити сайт без спаму. Обмін ссилками корисний, але коли в тебе нульовий сайт то хто хоче обмінуватись з тобо ссилками тай в бан можна попасти, якщо ссилок буде дуже багато. От недавно зайшов на один блог і побачив спам ссилку на одну доволі хорошу гру, яка скачалась без усякого і її жанр просто супер. Або ж любителів мільтфільмів думаю дуже зацікавить Шрек Навсегда, який вийшв лище кілька днів назад а тут його можна прогланути в онлайн бесплатно *ссылка вырезана*. Інколи і спам є корисний для користувача, а от власник 100% витре мій коментар адже навіщо йому, щоб усі бажаючі могли перейти на даний сайт з його блогу.
Да не успеваешь проверять блоги, как спама просто море, и ладно если действиельно высказывали люди любые идеи, но ведь сразу видно что прогами топой спам кидают.
Мне очень понравилась каптча где нужно фигурки поворачивать я пытался установить такую у себя,но у меня не получилось
Познавательная статья, хорошо написано, все понятно, я как раз думала какую капчу выбрать для нового сайта. Встречала на сайтах капчи где картинки нужно поворачивать, мне она тоже понравилась, думаю ее и сделаю.
Отличная статейка, раньше никогда не знал даже примерно как делать капчу...
По статье вроде все просто получается, а я так и не смог на свой форум нормальную капчу прикрутить, будем тренироваться.
С каптчей одни проблемы,но и без нее никак.Будет сплошной спам.Спс за статью..
Сейчас такие издевательские капчи пошли - поверни три фигурки, найди большой кружочек, покажи где спрятана кошечка, напряги свои глаза и прочитай эти кривые буквы. Что за издевательство над людьми, есть же много других способов отличить спамера. Я за всякие хитрые скрипты и галочки я не спамер.
Вот здесь я как понимаю, каптча это предварительный просмотр,
тоже элемент защиты!
полезный пост получился!!! много узнал про каптчу!!! очень помогает бороться со спамом!!! как раз то что мне на данный момент и надо!!! устал с ним бороться!!
Без капчи в наше время никак, иначе либо заспамят либо заспамят ;)
Интересная капча - выбор самой большой или самой правильной фигуры :)
Я встречал такие замудренные капчи что пропадало желание комментировать. Например для того чтоб оставить коммент нужно держать нажатой левую кнопку мыши. Бред имхо
вообще то я против этих кривых капчей, а от ровных мало толку. Но без них пока никуда ведь спам еще жив :(
Мне одна капча понравилась. Там стрелочками горизонтальные рисунки надо выстроить.
Хех, у меня стоит Akismet, лучше него, я честно скажу, ничего еще не нашел. Ставил разные каптчи, так их ломают в раз, если только самодельно ее не переделывать.
Да, не спорю, прямо передать параметры в таком случае не смогут. А если написать уникальный скриптик, который будет там что то делать(имитировать нажатие, проработать уникальный ключ). А вот текст в виде картинки нужна махинная программа чтобы правильно распознать. А если еще к примеру две подряд картинки делать, на одной к примеру писать«введите желтые симовлы», а на другой куча разноцветных симовлов.
Как говориться на вкус и цвет товарищей нет. Одному одно нравится другому другое. Не ошибусь наверно, если выражу общее мнение, что на самом деле все бы рады были, если б капчу отменили. Ух, ты рифма нарисовалась :). А так могу сказать, что очень часто попадаются убогие капчи. Все конечно понятно, что каждый борется со спамом как хочет, раздражают еле различимые цифры на непонятном фоне, когда приходится играть в угадайки да не по разу, после чего и регистрироваться не хочется на сайте.
Я не очень поняла принцип работы «Капча на основе Confirm». Делается предположение что для спам-бота не откроется окно с сообщением «Проверьте ваши данные перед отправкой, чтобы мы могли с вами связаться»?
Я в свой недавно созданный блог поставил Disqus - ни одного спам коммента не появилось :)
kCec6J <a href="http://jaxlceirycjj.com/">jaxlceirycjj</a>, [url=http://ybeftwrdfenl.com/]ybeftwrdfenl[/url], [link=http://nhgfzfuzxdec.com/]nhgfzfuzxdec[/link], http://rlmgrzwptldf.com/
Это точно подметили, если капча будет очень сложной, то количество людей желающих оставить комент значительно уменьшится... Но со спамом бороться надо...)))