Привет, Хабр! Сегодня я хочу рассказать вам про наш относительно недавно созданный сервис капчи. Этот сервис отличается от аналогичных тем, что нашу капчу никогда чаще всего вообще не требуется разгадывать. Как известно, капча негативно влияет на конверсию — не все могут быстро ее разгадать, особенно если она неоправданно сложная, а часть пользователей уходят с ресурса. И я не знаю таких людей, которые любят ломать глаза и получают удовольствие от процесса разгадывания. Поэтому если избавить пользователя от необходимости вводить еще одно дополнительное поле, то это сделает его немножечко лояльнее.


Вряд ли кто-то сможет разгадать эту капчу :)

Если в двух словах, то Некапча — это сервис интеллектуальной капчи, не требующий от человека прохождения проверки. Естественно, без дополнительной информации сервис не может ничего сказать о пользователе. Откуда же ее взять? Дело в том, что у Mail.Ru более 100 млн пользователей, причем большая часть из них авторизована. А это значит, что с запросом на наши домены передаются сессионные куки, по которым мы определяем пользователя, а затем достаем его профиль, статистику, спам-рейтинг и т.д. Вся эта информация подается на вход алгоритма-классификатора, и на выходе мы получаем предположение о том, кем является пользователь — человеком или спам-ботом.

Мы подали заявку на изобретение по системе PCT в декабре 2013 года, сам сервис запущен весной 2014 года (кстати, задолго до запуска обновленной reCAPTCHA — пруф и, например, пруф). Чтобы быть уверенным, что сервис работает исправно, нам пришлось довольно долго держать его в статусе беты и запустить небольшую рекламу. Но теперь настал момент представить Некапчу широкой публике. Сервис создан для защиты форм на любых сайтах, доступен бесплатно всем пользователям и уже почти год успешно используется некоторыми нашими проектами.

Как это выглядит для пользователя


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


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


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

Как это выглядит для вебмастера


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

API сервиса очень простое и состоит из двух вызовов:
  • /captcha — генерация капчи
  • /check — проверка капчи

На страницу добавляется ссылка на скрипт:

<script type="text/javascript" src="https://api-nocaptcha.mail.ru/captcha?public_key=KEY"></script>

И внутри формы div с идентификатором nocaptcha, в котором будет отрисовываться виджет:

<div id="nocaptcha"></div>

Виджет добавляет два новых поля в форму:

<input type="text" name="captcha_value" value="">
<input type="hidden" name="captcha_id" value="CAPTCHA_ID">

Эти поля передаются среди параметров формы в обработчик. Если капча не показывалась, то поле captcha_value останется пустым. На стороне сервера в обработчике необходимо вытащить значения этих полей и передать их в запрос на проверку капчи. Вот так может выглядеть обработчик формы до встраивания Некапчи:

<?php

function expand_template($file, $vars = null)
{
    if ($vars !== null)
        extract($vars, EXTR_OVERWRITE);
    include $file;
}

$vars = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // здесь делаем обработку формы
    $vars['result'] = 'ok';
} else {
    // просто отображаем форму
    $vars['form'] = true;
}
expand_template('template.html', $vars);

В зависимости от метода запроса либо отрисовывается форма, либо выполняется обработка отправленной формы. После встраивания обработчик незначительно изменяется:

<?php

// публичный и секретный ключи, полученные на https://nocaptcha.mail.ru
define('PUBLIC_KEY', 'ed64110f3e3ef4c2aad78446fdfe63a5');
define('PRIVATE_KEY', 'da9d56871519a43eba63a9a394f8fd53');

// импортируем PHP-модуль Некапчи
require_once('../../Package/nocaptcha/captcha.php');

function expand_template($file, $vars = null)
{
    if ($vars !== null)
        extract($vars, EXTR_OVERWRITE);
    include $file;
}

$vars = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $result = check_captcha(PRIVATE_KEY, $_POST['captcha_id'],
                            $_POST['captcha_value']);
    if ($result === true) {
        // здесь делаем обработку формы
        $result = 'ok';
    } else {
        // здесь информируем пользователя о том,
        // что введено неверное значение капчи
    }
    $vars['result'] = $result;
} else {
    // просто отображаем форму
    $vars['form'] = true;
    $vars['nocaptcha_script'] = display_captcha(PUBLIC_KEY);
}
expand_template('template.html', $vars);

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

На запрос проверки капчи сервис отвечает в формате JSON. Если капча введена верно, то возвращается true, в противном случае — false. Для обработчика процедура проверки скрытой и показанной капчи одинакова и прозрачна. На запрос проверки скрытой капчи всегда возвращается true вне зависимости от значения captcha_value.

{"status": "ok", "is_correct": true/false}

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



А так выглядит диаграмма сообщений, когда пользователь отправил заполненную форму:



Настройка виджета


Виджет имеет ряд настроек отображения. Они задаются при помощи javascript-объекта nocaptchaSettings, который необходимо создать на странице с формой.

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

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

Также можно задать tabindex поля для ввода капчи, чтобы обеспечить непрерывный ввод данных и корректное переключение по TAB между полями формы. Для этого используется параметр tabindex.

Документация и вспомогательные модули


Мы постарались составить хорошую и полную документацию о том, как встраивать Некапчу, как она работает и как пользоваться ее API. Она доступна по адресу.

Кроме этого, были реализованы небольшие вспомогательные модули для двух языков — PHP и Python. Они расположены на github, доступны для скачивания, изучения и использования в любых проектах. В этих модулях есть несколько примеров, которые помогут разобраться с тем, как пользоваться их функциями. Также на основе исходного кода модулей можно легко написать свои собственные библиотеки для других фреймворков.

Надеюсь, наш новый сервис придется вам по вкусу, и ваши пользователи оценят его преимущества. :)

Ждем у нас на сайте https://nocaptcha.mail.ru.

Комментарии (118)


  1. BelBES
    14.04.2015 12:17

    А в чем фишка то? В том, что особо наглые боты будут отсеиваться, а те, котоые не проявляют аномальной активности, смогут лазать по сайту без препятствий?


    1. man0xff Автор
      14.04.2015 12:28
      +11

      Фишка в том, что мы не выводим капчу всем подряд, а пытаемся на основе дополнительной информации оценить, кем является пользователь. Если по ряду признаков мы решаем, что это человек, то капчу не показываем.


      1. BelBES
        14.04.2015 13:00
        +1

        При таком подходе интересна статистика того, сколько ботов пропускает таже recaptcha и ваш подход. Не зная алгоритма анализа поведения сложно сказать, но по моему, ваш подход «ломаться» будет довольно просто подгонкой поведения бота под средне-статистическое.


        1. man0xff Автор
          14.04.2015 14:07
          +1

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

          Что такое среднестатистическое поведение?


          1. BelBES
            14.04.2015 14:37
            +2

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

            Что значит нельзя? Оба подхода решают одну задачу — отсеивание ботов с сайта. Значит можно сравнивать качетсво, с которым они это делают.

            Более того, для Некапчи их еще вообще нет, а если появятся, то мы будем их изучать и усиливать алгоритм.

            Как уже написали ниже, судя по описанному в статье, простой userscript-бот сможет обойти вашу защиту.

            Что такое среднестатистическое поведение?

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


        1. HoverHell
          23.04.2015 12:43

          То же самое можно было бы подумать и про спам-письма – что все фильтры должны ломаться подгонкой под легитимных пользователей – однако это не совсем так. Будет ли такая же ситуация с некапчей или эта затея всё-таки провалится как только станет достаточно популярной – предсказать с значительной точностью не получится.


      1. priv8v
        14.04.2015 13:02
        +2

        Сервис тестировали на пользователях с анализом данных? Насколько часто алгоритм принимает верное решение?


  1. Zagrebelion
    14.04.2015 12:18
    +17

    Подскажите, пожалуйста, на вашем примере первый символ перед A — девятка, a или q?


    1. ilnarb
      14.04.2015 12:27

      a.
      хвост ниже от следующего A


      1. dkuzevanov
        14.04.2015 12:30

        c2n.me/3g3ELgh.jpg
        Согласен, совсем не похоже на q или 9.


        1. Zagrebelion
          14.04.2015 12:38

          хвост от q вполне мог спрятаться за левую ногу А, а при таком кривоватеньком шрифте небольшая неровность в палке или кружке незаметна.
          Глядя на K и 4 я не могу предположить, как должен выглядеть кружок и палка у q.


    1. DenVdmj
      17.04.2015 05:57

      Никто и никогда этого не узнает.


  1. zenn
    14.04.2015 12:23
    +4

    Похоже(логически) на комнатную реализацию gCaptcha 2.0 (она же ранее reCaptcha): habrahabr.ru/post/244779


    1. man0xff Автор
      14.04.2015 12:33
      -24

      Правильнее сказать, что reCaptcha 2.0 — это гугловская реализация Некапчи :) Наш сервис был запущен раньше на 9 месяцев где-то.


      1. khim
        14.04.2015 12:55
        +22

        Что значит «запущен раньше на 9 месяцев где-то»? Гугл официально заявил о появлении нового сервиса 3-го декабря, уже поправил к этому моменту документацию и прочая, прочая, прочая. Вы ссылаетесь на какие-то невнятные сообщения на форумах со следами экспериментов. Не проще ли сравнить даты релизов? Или вы считаете что Гугл 1го декабря No CAPTCHA reCAPTCHA придумал, 2го реализовал, а 3го отрелизил? Ваше мнение о способностях гугловых инженеров черезвычайно лестно, конечно, но я боюсь вы их всё-таки переоцениваете.

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


        1. man0xff Автор
          14.04.2015 13:48
          -3

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


      1. khim
        14.04.2015 13:21
        +19

        Небольшое дополнение: то, что Гугл, похоже, всё-таки вас несколько опередил ничуть не умаляет ваших достижений. Совершенно ясно, что вы начали разрабатывать свою «некапчу» до того, как о разработках Гугла стало публично известно, Гугл начал разрабатывать свою «No CAPTCHA» до того, как вы заявили о своих наработках, так что ясно, что «своровать идею» ни Гугл у вас, ни вы у Гугла не могли. Это уже само по себе — неплохое достижение и не нужно превращать Россию в родину слонов.


  1. zenden2k
    14.04.2015 12:28
    +66

    Логотип mail.ru отпугнет пользователей


    1. SamKrew
      14.04.2015 12:55
      +50

      Подтвердите что вы не бот — установите браузер Амиго!


      1. Fedcomp
        15.04.2015 22:22

        Не установил = не бот?


    1. zenn
      14.04.2015 13:06
      +26

      … и при вводе капчи автоматически установит гарда, агента и амиго )


    1. zenn
      14.04.2015 19:05
      +23

      Извините, не удержался, а отредактировать старый пост уже нельзя: в «сеть» утекла информация об обновлении некапчи mail.ru:


      1. mtp
        16.04.2015 00:16

        Он «Амиго» или «Интернет»? Думал, переименовали, чтобы совсем уж не позориться, но нет: internet.mail.ru


        1. Layan
          22.04.2015 21:11

          И то, и другое: amigo.mail.ru ;)


    1. ilvar
      14.04.2015 19:29
      +12

      Если пользователь не испугался и не закрыл тут же страницу — с большой долей вероятности это бот


      1. zenn
        14.04.2015 21:05

        Возможно парням из mailru следует прислушаться к рекомендации: на практике вероятность ложного срабатывания должна быть крайне мала!


  1. BusteR27
    14.04.2015 12:29
    +4

    Рекапчу из начала поста лекго распознать — ведь в ней не обязательно вводить все слова, достаточно только тех, которые искривлены. В вашем случае это просто 'rveage'


    1. lany
      14.04.2015 14:40
      +1

      Не все это знают. И в форме написано «введите два слова». Что вообще говоря некрасиво по отношению к пользователю.


      1. Duduka
        15.04.2015 05:54

        можно вывести 3-4 объекта и только два читабельных, и попросить ввода только двух ;)


    1. Livid
      22.04.2015 17:43

      Можно и так:

      ????? rveage

      Увы да, в юникоде не хватает надстрочной бесконечности. Но по-моему и так — вполне ничего.


  1. la0
    14.04.2015 12:31
    +14

    Phantomjs с предварительной программной авторизацией на mail.ru вполне распознаётся как человек. Короче, стойкость против программных средств примерно ноль.
    Опять делаем защиту от роботов, а имеем защиту от людей.

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


    1. la0
      14.04.2015 12:33
      +6

      Дополнительно:
      Если mail.ru считает это хорошей капчей, которую удобно вводить людям, предлагаю эксперимент.
      Пусть каждый сотрудник mail.ru вводит её перед входом в дверь офиса. Ну хотябы в течение недели. Результат расстроит.


    1. la0
      14.04.2015 12:37
      +1

      Пока получилось с точностью до наоборот:
      Роботам не надо никакой антикапчи, достаточно один раз авторизоваться на mail.ru (ну на этом этапе возможно 1 раз придётся распознать капчу).


      1. khim
        14.04.2015 12:56
        +3

        Я думаю через какое-то количество заходов начнут счётчики срабатывать и CAPTCHA таки появится. Хотя это, конечно, только предположение.


  1. TheRaven
    14.04.2015 12:36
    +1

    М, т.е. имея валидного пользователя мейлару (которого можно создать или купить, а затем запрограммить свой бот на него) можно гулять по всем сайтам с этой капчей и делать что вздумается?


    1. man0xff Автор
      14.04.2015 12:50
      +3

      Вопрос в том, что дешевле — купить валидного пользователя и запостить 1000 сообщений или купить 1000 распознанных капч за 1$. Капча — это не идеальная защита от спама. Надо учитывать несколько факторов: влияние капчи на конверсию, критичный уровень спама, стоимость защиты и т.д.


      1. ionicman
        14.04.2015 13:04

        А зачем покупать? Вы нигде не упомянули про стаж вроде-бы? (ну или если он требуется небольшой — ботик после создания нового пользователя может чуть-чуть потыкать по ссылкам в социалочках и заслужить стаж)

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

        Или стаж все-таки учитывается? Тогда да, ситуация будет дилеммой между тем, сколько стоит взломанный акк и сколько на нем держится бот с одной стороны, и цена на распознавание капчи — с другой. Что будет выгодней — то и победит.


        1. man0xff Автор
          14.04.2015 13:11

          Тут уже написал. Но могу сказать, что стаж учитывается, и новые пользователи капчу все же увидят.


          1. ionicman
            14.04.2015 13:47

            Ну вот это тогда совсем другое дело, если нормально стаж учитывается.

            Я, если честно, давно не понимал, почему не сделать для пользователей своих же сетей простую весч — если человек авторизован и был на своей странице в течении недели и имеет на ней активность в течении недели + имеется пересекающаяся активность его друзей с ним — значит можно на 80% утверждать, что это валидный пользователь — и не показывать ему капчу (или какие-либо другие послабления).

            При таком вопросе на одной из конференций мне ответили «типа очень ресурсоемко, проще показать капчу».

            Ну вот. Оказывается не все так плохо :)


            1. jMas
              14.04.2015 13:59

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


              1. ionicman
                14.04.2015 14:48

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

                А капча — не серебренная пуля вообще ни разу — цены на ее распознавание копеечные. Тут просто что выгодней сервису — довольные активные пользователи или % ботов.

                Кроме того, не думаю что таких пользователей много будет, ну и + репутация и поведенческий фильтр сведет это к еще меньшему числу.


                1. jMas
                  14.04.2015 15:00

                  Я просто о том, что нужно быть готовым и к такому сценарию. ;)


  1. brntsrs
    14.04.2015 12:42

    Что есть робот и не-робот в понимании не-каптчи?
    Если пользователь поставил userscript-бота, потыкал на сайте часок и включил автоматизацию — это валидный пользователь или все-таки робот? Если робот — тогда интересно; если все-таки валидный пользователь — тогда единичные точки применения для регистраций\авторизаций, и нам нужно проходить мимо.


    1. man0xff Автор
      14.04.2015 12:57
      +4

      Вся работа сервиса построена вокруг алгоритма принятия решения. Если его здесь написать, то сервис можно закрывать.


      1. brntsrs
        14.04.2015 13:05

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


        1. man0xff Автор
          14.04.2015 13:08

          Могу сказать, что потыкать часок на сайте не достаточно.


  1. dkuzevanov
    14.04.2015 12:46
    +2

    Берем базу e-mail`ов по 2$ за 1000 шт.
    Авторизуемся, сохраняем куки, устраняем конкурента.

    В чём профит?


    1. MichaelBorisov
      14.04.2015 12:54

      Разве по таким ценам продаются адреса с паролями?


      1. Apathetic
        14.04.2015 13:23

        Реальных пользователей — нет. Нагенерированных роботом — да.
        Ну, это мои предположения, разумеется, не более того :)


        1. priv8v
          14.04.2015 13:29

          Ну типа того. Чуть подороже обычно, но действия ведете в верном направлении :)


      1. DarkByte
        14.04.2015 18:43

        Антикапча предлагает распознавание 1000 капч за 1$. Соответственно за два бакса можно нарегать 2000 аккаунтов. Используя другие подобные сервисы (или меньшую цену капчи на антикапче), можно получить большее количество за те же деньги.


  1. MichaelBorisov
    14.04.2015 12:56
    +1

    А есть ли какая-нибудь система репутации? Например, ваша «некапча» пропустит на сайт спамера-бота. Модераторы сайта увидят это, забанят пользователя. Отсылаются ли отчеты о банах за спам в вашу центральную базу данных?


    1. man0xff Автор
      14.04.2015 13:06
      +1

      Нет, такой системы сейчас нет. Но идея интересная, спасибо.


  1. rndr
    14.04.2015 13:58
    +5

    Дело в том, что у Mail.Ru более 100 млн пользователей, причем большая часть из них авторизована. А это значит, что с запросом на наши домены передаются сессионные куки, по которым мы определяем пользователя, а затем достаем его профиль, статистику, спам-рейтинг и т.д. Вся эта информация подается на вход алгоритма-классификатора, и на выходе мы получаем предположение о том, кем является пользователь — человеком или спам-ботом.

    Т.е. Если если я не зарегистрированный\авторизованный пользователь mail.ru, то я всегда буду видеть капчу? Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?


    1. Areso
      14.04.2015 23:10

      Хороший вопрос. Facebook на этом регулярно ловят (включая «громкие» публикации).


    1. Beltoev
      14.04.2015 23:46
      +1

      Ради ответа на такой вопрос перечитал комментарии. До сих пор тишина: ждём-с ответа =)
      Хотя, учитывая, что ВК и ОК принадлежат mail.ru, думаю, что предположение

      Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?
      более, чем верное


    1. kolyaflash
      15.04.2015 00:33
      +1

      > Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?

      А вы думали зачем в Mail.ru Group сделали [бесплатную] Некапчу? Just for fun?


  1. mtp
    14.04.2015 14:04
    +11

    > Вы не робот. Подтверждено Mail.ru

    Увидев такую «антикапчу», я бы испытал сильное желание закрыть вкладку. Я и так знаю, что я не робот, зачем тут какое-то Mail.ru со своими гвардами и Интернетом примазывается?

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


    1. Acuna
      21.04.2015 23:46
      -1

      У вас прям наболело. Прямо даже пожалеть захотелось)


  1. Shvonder
    14.04.2015 14:22
    +6

    Я думаю, в случае верифицированного состояния лучше вообще не показывать картинок.


    1. Vorchun
      14.04.2015 14:33
      +4

      Зашел, чтобы написать этот комментарий ) Да, зачем эта реклама mail.ru? Если уверен, что не робот, то не надо выводить. Меньше данных в форме — лучше. А такая картинка заставляет прочитать, задуматься.

      Меня лично смутило. Я подсознательно ищу куда нажать «да, я не робот».


      1. priv8v
        14.04.2015 14:48

        А я инстинктивно потянулся к телефону — чтоб доказать, что не робот я обычно отправляю смс или ввожу свой номер телефона, а потом пришедший на него код. Постоянно при скачке файлов доказываю, что я не робот кому-то :)


        1. man0xff Автор
          14.04.2015 15:37
          +1

          По умолчанию виджет не скрывается, чтобы не поехала верстка в формах. Бывают формы, где нужно скрыть не только виджет, но и часть верстки (строку таблички, подпись или что-то еще). Чтобы корректно скрыть виджет можно использовать специальное js событие.

          Было бы удобнее, если бы в настройках был пункт «скрыть если не робот» и опционально колбэк для скрытия дополнительной верстки?


  1. webportal
    14.04.2015 14:22
    -8

    Хы. Я уже придумал как обойти)


    1. berezuev
      14.04.2015 14:47
      +7

      Все вас внимательно слушают


  1. landy
    14.04.2015 16:34
    +2

    Есть примеры сайтов, где ЭТО используется?

    И повторю вопрос от rndr — если я не пользуюсь никакими сервисами мейл.ру, я всегда буду видеть капчу?


    1. zenn
      14.04.2015 16:51
      +2

      Я надеюсь таких примеров не будет, да и люди, связанные с веб-технологиями консервативны(по моему мнению) к ресурсам mailru из-за плохой кармы дистрибуции их grayware.


      1. landy
        14.04.2015 16:59
        +1

        тсс… вы не совсем поняли, зачем я это спросил ;)


  1. ibnteo
    14.04.2015 19:12

    А можно отключить отображение сообщения, что «Вы не робот»? Раз не робот, и каптча не нужна, то можно и не показывать ничего.


    1. Acuna
      21.04.2015 23:52
      -1

      Вы не поняли, просто mail.ru показывают крутость своих алгоритмов таким образом ;)


  1. TimsTims
    14.04.2015 20:22

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


  1. AloneCoder
    15.04.2015 11:29

    Кому интересно, запилил альтернативную реализацию апишки на php 5.3+



  1. susnake
    15.04.2015 13:15

    Лучше бы не буквы, а что-то типа матан-капчи:
    image
    А если серьезно, на нескольких сайтах видел «капчу» по типу собери рисунок. Встречалась только 2 или 3 раза. Очень удобно и ненужно вглядываться в буквы-цифры. Почему их не используют? Из-за мобильных устройств?


    1. Beltoev
      15.04.2015 14:15

      К слову, на мобильных устройствах всё спокойно собирается. Ради интереса сейчас всё-таки проверил: андроид, UC Web, полёт нормальный)


      1. priv8v
        15.04.2015 14:31

        Зависит не от платформы больше, а от возможностей браузера.


    1. Zenitchik
      16.04.2015 17:00

      Матан-капча не создаёт дополнительных трудностей для роботов. А для людей — создаёт.


    1. ZhukV
      17.04.2015 09:34

      У Киевстара уже очень давно используется такого рода каптча. По типу «Выдели рисунки живой природы».
      www.kyivstar.ua/ru/cr/sms


      1. Acuna
        21.04.2015 23:57

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


  1. nitro80
    16.04.2015 14:28

    man0xff может лучше ваша команда будет антиспам разрабатывать?? Ну правда же, с самого момента запуска Gmail я очень редко вижу спам во Входящих. И постоянно вижу его во входящих на mail.ru. К чему все эти капчи, если работа по профилю компании просто на уровне 1999 года???


    1. Beltoev
      17.04.2015 01:18
      +2

      «Правильнее сказать, что антиспам в Gmail.com — это гугловская реализация антиспама Mail.ru :) Наш антиспам был запущен раньше на 9 месяцев где-то.»


      1. khim
        17.04.2015 02:14

        Ну это-то вообще правда однозначная. Gmail.com появился в 2004м году и, конечно, сильно изменил мир вебмейла, но утверждать, что до него антиспама не было просто глупо. Mail.ru и его антиспам к этому моменту уже много лет работали…


        1. nitro80
          17.04.2015 08:19

          А вот это вы зря. Антиспам у них если и работает, то как-то совсем не как антиспам


        1. lamoss
          21.04.2015 23:00

          А расскажите, может вы знаете — как на почтовый ящик, который был создан, но ни разу нигде не использовался может приходить спам? Откуда у спамеров адрес взялся для рассылки?


  1. maxic
    20.04.2015 13:20

    В своих проектах использую вот такую каптчу (идея и реализация мои) http://oc2.opencartadmin.com/tretja-novost/ (отзывы)
    Как рапортуют пользователи очень удобно (есть подсказка, не надо клавиатуры), и особенно удобно, по словам пользователей (а официально используют более 2000 интернет-магазинов) на мобильных девайсах


    1. maxic
      20.04.2015 13:29
      +1

      image


      1. rock
        20.04.2015 14:02
        +1

        Удобно, конечно. Но я правильно понимаю, что бот угадает эту капчу 1 раз из 24?


        1. maxic
          20.04.2015 14:08

          Нет, посчитайте сами количество математических вариантов разной последовательности четырех элементов. ;)
          А к тому же, можно количество «символов» в каптче увеличивать до широты вашей фантазии


          1. rock
            20.04.2015 14:12

            4 * 3 * 2 с 4 символами / кнопками, а если больше — всё удобство теряется.


            1. maxic
              20.04.2015 14:20

              Не правильно поняли задачу :)
              Подумайте, как бот угадает… Если он первый раз не угадал, то каптча то измениться. Уже совсем другая задача, т.е. увеличивается количество вариантов, соответствию количеству символов и цифр
              И даже если увеличить количество символов — все равно удобно


              1. rock
                20.04.2015 14:25

                Если не увеличивать кол-во символов каждый раз — тот же 1 / 24. Увеличивать — издевательство над пользователями, что не могут капчу разобрать, да и не сильно поможет, если не в разы. Где я не прав? :)


                1. maxic
                  20.04.2015 16:15

                  Это только идея.
                  Можно усложнить её как угодно. Допустим величины — закодировать с солью, а надписи через ajax jquery накладывать. Плюс переменное количество символов, обновление «надписей» на кнопке — КАРТИНКАМИ.
                  Т.е. уже будет — собери последовательность картинок

                  Вариантов много.


                  1. khim
                    20.04.2015 20:08
                    +1

                    Можно усложнить её как угодно.

                    Тут одно из двух: либо у вас вариантов много (и тогда никакого облегчения для человека не будет), либо их мало (и тогда робот с большим удовольствием и упорством будет подбирать варианты попадая на сайт раз в 24 попытки).
                    Вариантов много.
                    Откуда тут «много вариантов», чёрт побери? Если вы будете тупо имитировать нажатие мышкой в серединку первой кнопки, потом второй, потом третьей и, наконец, четвёртой, то в среднем за одну попытку из 24 будете попадать на сайт. Всё. Остальное робота не волнует — соль, сахар, jquery и прочее можете оставить себе.


                    1. maxic
                      20.04.2015 20:44
                      -1

                      Вы наверно не совсем меня понимаете.
                      Смотрите, приходит 50 «кнопок» с дублями (правильными вариантами) (к примеру), т.е. вариантов где-то как с 15 кнопочным вариантом. Но показываются к примеру 4 (зависит от настроек), остальные скрыты. При вводе первой меняется видимость порядка кнопок. Т.е. динамическое изменение порядка (а порядок заложен изначально в вывод, как соль своего рода)

                      Т.е. реально выбор робота из вариантов 50 кнопок (минус нужные дубли) ~ 15 — 25 кнопок.
                      И если не понимаете меня, то зачем минусы ставить? ;)
                      Вы же не представляете алгоритм

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


                      1. khim
                        20.04.2015 21:38
                        +1

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

                        Вы же не представляете алгоритм
                        Это вы его, похоже, не представляете. Алгоритм туп как валенок: запустили какой-нибудь Chrome, «нажали» (послали сообщение от мыши) на 4 кнопки по порядку, зашли (с веротностью 1/24) на сайт. Всё. Сколько, куда и каких кнопок вы вставляли и как их солили и сахарили — робота не волнует. То есть вообще.


                        1. maxic
                          20.04.2015 22:29



              1. zenn
                20.04.2015 15:37
                +1

                Зачем боту какие-либо символы?
                Для него задача будет решаться следующим образом: есть 4 символа и необходимо определить лишь их последовательность для успешного достижения результата. Исходя из общей т.в. P = 1/4! = 1/24 (т.е. в данном случае из 24 загрузок страницы бот 1 раз получит success. С логикой загрузки 100 раз странички при 4 success очень уж недурной пробив.


                1. maxic
                  20.04.2015 16:08
                  -3

                  Такой же процент угадывания как и «обычной» каптчи с картинкой в которой все символы различимы человеком. Я бы сказал даже меньше :)
                  Вы учитывайте тот факт что здесь есть подсказка, поэтому можно усилить фон, разные шрифты, тени, угол и т п
                  Т.е. усложнить саму каптчу.
                  Даже если один, два символа вообще не видно — человек их различит очень легко, согласно подсказке (человеческой логике).
                  Ну и если вам надо каптча с меньшим процентом «отказов», то увеличьте до «стандартного» значения количества — обычно используют 6 символов. Тогда какой процент будет ;) Ответ — в пределах «нормы» обычной 6 знаковой каптчи. А может даже и лучше


                  1. zenn
                    20.04.2015 16:41

                    Вовсе не такой же процент как на обычной капче. Если бы на обычной капче был такой «процент», то как вы думаете, что бы было в приоритете — разбирать изображение и пытаться сопоставить символы с эталоном или попросту «пробить» в страничку 24 раза случайными комбинациями из УЖЕ определенных символов?
                    Еще раз обращу ваше внимание на то, что задача тут сводится НЕ к разгадыванию символов а к подбору последовательности уже определенных символов (что номинально вовсе не является тестом Тьюринга).


                    1. maxic
                      20.04.2015 18:47
                      -4

                      Немного не правильно считаете? После первого промаха комбинация — ДРУГАЯ
                      Плюс не всегда бывает точное количество, бывает 4 бывает 6, 10 символов.
                      Мало того:

                      Алгоритм обработки тоже можно изменить, это только прототип.

                      Можно сделать 20 кнопок (а показывать 4, 5, 6 — причем картинками) и 20-ти значный скрытый код, а «не нужные» скрыть и т.п.
                      Пусть робот «думает» какие кнопки действительно отвечают за ввод, а какие нет. Уже только в этом есть варианты комбинаций.
                      Как в таком случае — вариантов комбинаций уже сколько? ;)


                      1. khim
                        20.04.2015 20:10

                        Плюс не всегда бывает точное количество, бывает 4 бывает 6, 10 символов.
                        6 — это уже кое-что, 720 вариантов, а 10 — уже совсем хорошо, почти столько же вариантов сколько у обычной CAPTCHA, вот только не будет ли уже и человеку такую капчу разгадывать так же сложно, как обычную?


                        1. maxic
                          20.04.2015 20:46

                          А когда 50 (к примеру) кнопок «приходит» а показывается 4, но при вводе динамически меняется порядок согласно соли.


                          1. khim
                            20.04.2015 21:39
                            +2

                            … то это не влияет на сложность перебора вообще.


        1. maxic
          20.04.2015 16:22
          -3

          Надпись на кнопках — картинками (в стиле каптчи, только более легкими), а величины кодировкой с солью. И будет лучше обычной каптчи. И вероятность отгадать боту меньше чем у «обычной» каптчи.
          Для человеческой логики соединить однотипные «известные» картинки гораздо проще, чем «разгадывать»


          1. Zagrebelion
            20.04.2015 18:01
            +3

            Да не будет робот ничего распознавать, а будет тупо слать «первая кнопка, вторая кнопка, третья кнопка, четвёртая кнопка.»
            23 раза не угадает, на 24-й раз подойдёт.


            1. maxic
              20.04.2015 18:41
              -2

              После первого промаха меняется комбинация.
              Я же говорю — это только прототип идеи.

              Алгоритм обработки тоже можно изменить.

              Можно сделать 20 кнопок и 20-ти значный скрытый код и не нужные скрыть jquery и отслеживать реальный клик, а не функцией и т.п.
              Пусть робот «думает» какие кнопки действительно отвечают за ввод, а какие нет.
              Как в таком случае — вариантов уже сколько? ;)


              1. khim
                20.04.2015 20:01
                +2

                Как в таком случае — вариантов уже сколько? ;)
                По прежнему 24. Или вы думаете робота тяжело научить нажимать только на кнопки посылая сообщения от мыши в браузер?


                1. maxic
                  20.04.2015 20:50
                  -2

                  Вы о чем?,.click() != клик пользователя мышкой. .click будет кликать по объекту, а вот порядок предоставления динамически генерируемый, изменяемый, при вводе вы не учли, т.е. при вводе пользователя меняется порядок объектов согласно «соли» т е робот еще должен разгадать порядок из 20 (к примеру, можно 50) кнопок, который будет передаваться с каптчей (типа соли).


                  1. khim
                    20.04.2015 21:46
                    +2

                    .click() != клик пользователя мышкой.
                    Вы действительно не понимаете или издеваетесь? Боту совершенно необязательно вообще работать с вашими объектами. Он может запросто жить вне браузера. Просто на картинке в GPU-буфере (вернее в эмуляции оного) найти изображение кнопки и послать в браузер сообщение о тыкании пальцем в эту точку. И всё.

                    т е робот еще должен разгадать порядок из 20 (к примеру, можно 50) кнопок, который будет передаваться с каптчей (типа соли).
                    Госсподя. Зачем ему всё это? С точки зрения вашего супер-пупер-мега-скрипта это будет просто нажатие пальцем человека по кнопке и он сам всё сделает — и выберет нужную кнопку и картинку и на сервер событие отошлёт. Максимум, что вы можете пытаться оценивать — тайминги какие-нибудь, но даже и их можно подделать без больших проблем.


                    1. maxic
                      20.04.2015 23:31
                      -2

                      Нет, не издеваюсь, просто вы приводите такой сценарий при котором и recaptcha определяется в 95% попыток (информация google)
                      Это уже очень продвинутый робот и с ним бороться каптчей не реально. разве что через СМС подтверждение :)
                      Такой робот у каждого спамера? И каждый может настроить так, чтобы «робот» искал картинки кнопок, относительно других элементов страницы и т.п.?
                      Вы приводите почти не реальный сценарий в жизни обычного «спамера»

                      Я имею ввиду сценарий робота «взять контент», обработать, отослать post, get.


                      1. khim
                        21.04.2015 01:11

                        Это уже очень продвинутый робот и с ним бороться каптчей не реально. разве что через СМС подтверждение :)
                        Собственно для борьбы с подобным зверьём и появились noCAPTCHA reCAPTCHA, Некапча Mail.ru и прочие.
                        Такой робот у каждого спамера?
                        А почему бы и нет?
                        И каждый может настроить так, чтобы «робот» искал картинки кнопок, относительно других элементов страницы и т.п.?
                        Это один раз нужно сделать.

                        Вы, определитесь, пожалуйста, чего вы вообще хотите: если вам нужно решение для одного-двух сайтов, то вопросы/картинки по тематике отсеют как роботов, так и людей, которые «не в теме» (что зачастую тоже хорошо). А если вы делаете «массовое» решение, то должны быть готовы и к роботам с продвинутым AI, и к распознавальщикам кнопок на картинках и к прочему.

                        Да, людей, способных это сделать немного, и большинство работать со спамерами не будут, но ведь нужен всего один — потом его творение просто растиражируют.


                        1. maxic
                          21.04.2015 02:02
                          -1

                          Собственно для борьбы с подобным зверьём и появились noCAPTCHA reCAPTCHA, Некапча Mail.ru и прочие.

                          Вы читаете мои посты? Здесь, на хабре, была статья. про исследования google, в которой сказано, что такого класса робот распознает 95%! reCAPTCHA.

                          Это вы определитесь. Хватит уже демагогии. Вам google четко сказал, что бороться с такого класса роботами средствами каптчи бесполезно. А вы развели эпатаж и троллизм. Заранее ставя автора поста на который вы отвечали в проигрышную ситуацию, при этом не упоминая о ней (про практически мало реальный сценарий). Уж извините — так не поступают. И в ЛС вы так и не ответили. Вам надо шоу, ну как и всем троллям
                          И не надо давить «на слабо»
                          А если вы делаете «массовое» решение
                          Уже доказано, что от такого рода сценариев каптча (любая) не поможет.
                          Описанная вами ситуация ставит любую каптчу не дееспособной вообще.
                          А некапча — работает с авторизироваными пользователями, на основе большого количества информации о его действиях. Это единичные, большие порталы могут позволить себе такое.


                        1. maxic
                          21.04.2015 02:21

                          И кстати вот стандартная «массовая» каптча opencart, которая была заменена

                          Не знаю почему но хабр отказался использовать разметку, поэтому просто ссылка:
                          easycaptures.com/fs/uploaded/810/1583787203.jpg
                          Вот такого рода каптчи имеют 100% — определение.
                          Поэтому она и была заменена.
                          Да, не идеал. Но при 6 символах — вероятность определения во много меньше «стандартной». А при доработки алгоритма, еще меньше вероятность определения. А вот удобство использования (юзабилити) на порядок лучше многих вариантов, особенно на мобильных девайсах.

                          Тот кто ничего не делает, тому нечего и улучшать.

                          Рука не устала минусовать? Ответить нечего?


                      1. Beltoev
                        23.04.2015 23:59

                        Очень продвинутый робот? Вы реально?

                        Вы слышали что-нибудь про iMacros? Судя по всему, нет.
                        Так вот, это такое расширение, которое может эмулировать человека в браузере. Простыми словами, в этом расширении бота на вашу антикапчу можно создать за пару минут:

                        1. Нажимаем кнопку «Запись»
                        2. Кликаем поочередно (либо в случайном порядке) по кнопкам вашей антикапчи на сайте
                        3. Останавливаем запись
                        4. (По желанию) При успешной операции грузим CSV со спамом и дописываем инструкции по его распространению. При не успешной — перезагружаем страницу (это все в командах макроса).
                        5. Профит!


                        Можно даже случайным образом нажимать по кнопкам, храня их координаты. Что тут такого нереального?

                        Вам здравую критику дают, перечитайте комментарии: такому боту не интересно, что под капотом и какие объекты вы скрытыми храните на сайте.
                        Намного разумнее будет с каждым обновлением страницы выдавать случайное количество кнопок, скажем, от 4 до 6-7, одна из которых — ложная. Вот тут-то уже можно будет об эффективности и непробиваемости что-то говорить. А пока так и остаётся — 1 из 24


                        1. maxic
                          24.04.2015 00:13

                          Я полностью с Вами согласен. Я показал прототип.
                          Он очень удобен. Особенно для мобильных девайсах.
                          А вот алгоритм «запутывания» робота, всегда можно усовершенствовать, о чем я и писал выше.
                          С каждой ошибкой просто добавлять количество кнопок с «ложными» кнопками, при этом описывая пользователю. Робот все равно не поймет, а вот пользователь отлично справиться. И юзабилити все равно сохраниться.

                          Поймите, это прототип идеи


                    1. maxic
                      21.04.2015 00:03
                      -1

                      С не реальным сценарием робота (через эмуляцию пользователя) можно тррллить любую «каптчу». Google четко об этом сказал — любая каптча таким роботом и человеком умеющим его настраивать разгадывается с вероятностью 95% и даже выше.

                      Не корректно вы повели. Уж извините. Я вам про одно (реальный сценарий и инструментарий), а вы троллите на своей волне.


    1. maxic
      20.04.2015 13:37

      Тоже подавать заявку на изобретение «велика»? :)
      Раз опубликовал, значит авторство «подтверждено»


  1. saaivs
    21.04.2015 00:17

    НЕКАПЧА…

    По умолчанию используется русский язык.

    В mail.ru талант придумывать названия для «новых» продуктов.
    Вспомнилась преснопамятная футубра, которая на английском звучит не менее дико, чем «некапча» на русском.