Сейчас можно заметить что капчу используют везде, где надо и где не надо. Да и, к сожалению, не всегда капчу делают «правильной». Для начала что такое капча. CAPTCHA — разновидность теста Тьюринга.
Тест Тьюринга — тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Основная идея теста: предложить пользователю такую задачу, которую с лёгкостью может решить человек, но которую несоизмеримо сложнее решить компьютеру.
Все программисты рано или поздно задумываются о том как же им защитить свой сайт от спам-ботов. И все начинают с того что вводят на своем сайте капчу. То есть любой программист вводя captcha, ставит перед собой задачу отловить все компьютеры, но оставить доступ реальным людям.
Вообщем как выглядит обычная капча думаю знают все. Но вот есть одна беда. Очень часто разработчики задумываются только об одной проблеме — «как защитить свой сайт от спама». Но ввод этой защиты на своем сайте добавляет и другую проблему. В данной статье я расскажу вам о золотом правиле капчи, которое я вывел. А также о том какой должна быть captcha.
Неудобства со стороны пользователя
Проблема заключается в том что, многим пользователям, CAPTCHA доставляет неудобства:
Не всегда понятно что написанно на картинке
Вот пара примеров из интернета.
Представьте что что то похожее выпало вам. Не правда ли, сразу пропадает желание регистрироваться (комментировать и тд.) на сайте?
Людям не нравится тратить свое время попусту
Боюсь времени на разгадывание ТАКОЙ защиты уйдет больше чем на заполнение всей формы, защищаемой ею:
Многие не понимают зачем вообще это нужно делать
Набираем в гугле зачем нужна капча и смотрим отзывы пользователей:
- А зачем нужна «капча» и почему эту хреновину не уберут из интернета?
- зачем на сайтах капча?
- да что это за коды с картинок?!
- …
Каждый новичок в интернете, не понимает зачем ему надо вводить этот код с картинки. А если человек что то не понимает, то обычно его это раздражает. И вот вы представьте, каково новичку начинать знакомство с вашим сайтом с такого вот не приятного момента.
Формула эффективности капчи
При оценке капчи следует исходить из формулы:
Cамо-собой, понятия трудоемкости здесь эфимерные, никто не сможет выразить в числовом эквиваленте ни трудоемкость разгадывания человеком ни ботом. Но понятие о том какой должна быть капча, это соотношение даст.
То есть, если вы усложняете алгоритм генерации капчи, то вы увеличиваете обе части соотношения, и смысла в этом ноль. Смысл будет тогда, когда вы сможете увеличивать числитель, не трогая или уменьшая знаменатель.
Идеальная капча — та которая отсекает всех ботов (100% невозможность разгадывания компьютером), и не требует абсалютно никаких действий со стороны пользователя (0% трудозатрат со стороны пользователя). Эффективность такой капчи будет равна 100%.
Но к сожалению такой результат не достижим, так как капча или любой другой тест тьюринга, предполагают вынудить клиента совершить какое либо действие по которому мы можем судить, кем является этот клиент — машиной или человеком. А это значит то, что этот тест уже требует какие либо трудозатраты со стороны пользователя (т.е. знаменатель уже не равен нулю). Также, возможно, создание некоего исскуственного интеллекта, который сможет пройти любой тест Тьюринга (т.е теоретически числитель любого теста тьюринга не может быть равен 100%)
Золотая середина
Давайте все таки попробуем определить какую сложность капчи выбрать. Построим два графика зависимости времени разгадывания от сложности самой капчи для человека и бота. Причем для бота шкалу время разгадывания стоит воспринимать как «вероятность разгадывания капчи» компьютером.
Говоря о сложности я имею ввиду колличество и качество эффектов при генерации картинки. Т.е шумы, цвета, искажения, наложения и тд. Чем больше этих эффектов тем сложнее капча.
Если внимательно проследить по графикам, то для обоих графиков наступают переломные моменты:
- Для человека наступает такой момент когда дальнейшее усложнение капчи приводит к резкому увелечению времени на разгадывание
- Для компьютера наступает момент когда дальнейшее усложнение капчи практически не изменяет вероятность разгадывания
Обратите внимание оба эти момента приходятся на один диапазон «сложности капчи» (на графике отмеченно зеленым цветом). Как вы понимаете это и есть «золотая середина» эффективности капчи.
Попробуем усложнить капчу. К чему это приведет? Это приведет к тому что начнем нелинейно усложнять работу людям, но при этом и снизим количество прошедших ботов. Но! снижение количества ботов будет происходить линейно и на незначительное количество. Вообщем если внимательно всмотреться в график, то вы заметите, что это, практически, не принесет никакой пользы, так как ботов будет срезанно всего лишь чуть-чуть больше, но жизнь пользователям мы усложним значительно.
Попробуем облегчить капчу. Это в свою очередь приводит к тому что мы нелинейно увеличиваем количество прошедших спам ботов, а пользователи, скорее всего, не заметят разницы.
Заключение
Надеюсь вы теперь поняли почему надо выбирать правильную капчу. Возможно вы захотите написать свой алгоритм генерации капчи, и я надеюсь что, при разработке вы учтете материал описанный тут.
По сути весь материал описанный в статье элементарен, и кажется, что все это очевидно. Но все чаще и чаще приходится встречать сайты, где вместо нормальной работы с сайтом большинство времени проходится тратить именно на ввод различных кодов с картинок. Надеюсь эта статья вам поможет в поиске оптимальной защиты вашего сайта от спам ботов, и поможет оставить ваших пользователей довольными.
Интересная статья, спасибо! Это перевод?
Нет, это оригинал. =)
Слог спецефичный для перевода, поэтому и спросил. Красиво и понятно пишите. Мне понравилось.
Правда график какойто кривоватый))
Спасибо!
Это ворд такой график сгенерировал, я не причем =))
Вы пользуетесь 2003 вордом? 0_o
А какже тогда деление на ноль в вашей формуле? :)
То есть деления на ноль не будет никогда ;)
Все правильно =) Я же писал ниже что идеальная капча не достижима! А это всего лишь еще одно подтверждение этого факта =)
:D
Лифчик с капчей это жесть… Ее спамеры атакуют? :-D
Очень много воды. Весь смысл можно было свести к одному предложению:
Сложность капчи должна быть пропорциональна тому что взломщик может получить написав ее распознавалку.
Вы статью то хоть всю прочитали? Смысл ее в другом)
Заставить разработчиков обратить внимание на то что его капчу прийдется вводить не только ботам, но и пользователям.
Золотые слова!Лучше и понятней не скажешь