Какой должна быть капча?

13 комментариев

Сейчас можно заметить что капчу используют везде, где надо и где не надо. Да и, к сожалению, не всегда капчу делают «правильной». Для начала что такое капча. CAPTCHA — разновидность теста Тьюринга.

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

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

Вообщем как выглядит обычная капча думаю знают все. Но вот есть одна беда. Очень часто разработчики задумываются только об одной проблеме — «как защитить свой сайт от спама». Но ввод этой защиты на своем сайте добавляет и другую проблему. В данной статье я расскажу вам о золотом правиле капчи, которое я вывел. А также о том какой должна быть captcha.

Неудобства со стороны пользователя

Проблема заключается в том что, многим пользователям, CAPTCHA доставляет неудобства:

Не всегда понятно что написанно на картинке

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

Людям не нравится тратить свое время попусту

Боюсь времени на разгадывание ТАКОЙ защиты уйдет больше чем на заполнение всей формы, защищаемой ею:
очень сложная капча

Многие не понимают зачем вообще это нужно делать

Набираем в гугле зачем нужна капча и смотрим отзывы пользователей:

  • А зачем нужна «капча» и почему эту хреновину не уберут из интернета?
  • зачем на сайтах капча?
  • да что это за коды с картинок?!

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

Формула эффективности капчи

При оценке капчи следует исходить из формулы:
Эффективность Капчи = Трудоемкость Разгадывания Ботом / Трудоемкость Разгадывания Человеком.
Cамо-собой, понятия трудоемкости здесь эфимерные, никто не сможет выразить в числовом эквиваленте ни трудоемкость разгадывания человеком ни ботом. Но понятие о том какой должна быть капча, это соотношение даст.

То есть, если вы усложняете алгоритм генерации капчи, то вы увеличиваете обе части соотношения, и смысла в этом ноль. Смысл будет тогда, когда вы сможете увеличивать числитель, не трогая или уменьшая знаменатель.

Идеальная капча — та которая отсекает всех ботов (100% невозможность разгадывания компьютером), и не требует абсалютно никаких действий со стороны пользователя (0% трудозатрат со стороны пользователя). Эффективность такой капчи будет равна 100%.

Но к сожалению такой результат не достижим, так как капча или любой другой тест тьюринга, предполагают вынудить клиента совершить какое либо действие по которому мы можем судить, кем является этот клиент — машиной или человеком. А это значит то, что этот тест уже требует какие либо трудозатраты со стороны пользователя (т.е. знаменатель уже не равен нулю). Также, возможно, создание некоего исскуственного интеллекта, который сможет пройти любой тест Тьюринга (т.е теоретически числитель любого теста тьюринга не может быть равен 100%)

Золотая середина

Давайте все таки попробуем определить какую сложность капчи выбрать. Построим два графика зависимости времени разгадывания от сложности самой капчи для человека и бота. Причем для бота шкалу время разгадывания стоит воспринимать как «вероятность разгадывания капчи» компьютером.

Говоря о сложности я имею ввиду колличество и качество эффектов при генерации картинки. Т.е шумы, цвета, искажения, наложения и тд. Чем больше этих эффектов тем сложнее капча.
золотая середина сложности капчи
Если внимательно проследить по графикам, то для обоих графиков наступают переломные моменты:

  • Для человека наступает такой момент когда дальнейшее усложнение  капчи приводит к резкому увелечению времени на разгадывание
  • Для компьютера наступает момент когда дальнейшее усложнение капчи практически не изменяет вероятность разгадывания

Обратите внимание оба эти момента приходятся на один диапазон «сложности капчи» (на графике отмеченно зеленым цветом). Как вы понимаете это и есть «золотая середина» эффективности капчи.

Попробуем усложнить капчу. К чему это приведет? Это приведет к тому что начнем нелинейно усложнять работу людям, но при этом и снизим количество прошедших ботов. Но! снижение количества ботов будет происходить линейно и на незначительное количество. Вообщем если внимательно всмотреться в график, то вы заметите, что это, практически, не принесет никакой пользы, так как ботов будет срезанно всего лишь чуть-чуть больше, но жизнь пользователям мы усложним значительно.

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

Заключение

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

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

      1. Василий

        Слог спецефичный для перевода, поэтому и спросил. Красиво и понятно пишите. Мне понравилось.
        Правда график какойто кривоватый))

        1. Дмитрий Амиров Автор

          Спасибо!
          Это ворд такой график сгенерировал, я не причем =))

  1. Fenix

    Идеальная капча — та которая отсекает всех ботов (100% невозможность разгадывания компьютером), и не требует абсалютно никаких действий со стороны пользователя (0% трудозатрат со стороны пользователя).

    А какже тогда деление на ноль в вашей формуле? :)

    1. Trololo

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

      То есть деления на ноль не будет никогда ;)

    2. Дмитрий Амиров Автор

      Все правильно =) Я же писал ниже что идеальная капча не достижима! А это всего лишь еще одно подтверждение этого факта =)

  2. NightWolf

    Очень много воды. Весь смысл можно было свести к одному предложению:
    Сложность капчи должна быть пропорциональна тому что взломщик может получить написав ее распознавалку.

    1. Дмитрий Амиров Автор

      Вы статью то хоть всю прочитали? Смысл ее в другом)
      Заставить разработчиков обратить внимание на то что его капчу прийдется вводить не только ботам, но и пользователям.

  3. obrat

    Заставить разработчиков обратить внимание на то что его капчу придется вводить не только ботам, но и пользователям.

    Золотые слова!Лучше и понятней не скажешь

Добавить комментарий

Прочли запись? Понравилась? Не стесняйтесь, оставьте, пожалуйста, свой комментарий. Мне очень интересно, что вы думаете об этом. Кстати в комментарии вы можете задать мне любой вопрос. Я обязательно отвечу.

Вы можете оставить коментарий анонимно, для этого можно не указывать Имя и email. Все комментарии проходят модерацию, поэтому ваш комментарий появится не сразу.