Компания
1 156,62
рейтинг
14 апреля 2015 в 12:08

Разработка → Некапча Mail.Ru – капча, которая не показывается

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


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

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

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

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


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


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


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

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


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

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

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



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



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




Эти поля передаются среди параметров формы в обработчик. Если капча не показывалась, то поле 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.
Автор: @man0xff

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

  • 0
    А в чем фишка то? В том, что особо наглые боты будут отсеиваться, а те, котоые не проявляют аномальной активности, смогут лазать по сайту без препятствий?
    • +11
      Фишка в том, что мы не выводим капчу всем подряд, а пытаемся на основе дополнительной информации оценить, кем является пользователь. Если по ряду признаков мы решаем, что это человек, то капчу не показываем.
      • +1
        При таком подходе интересна статистика того, сколько ботов пропускает таже recaptcha и ваш подход. Не зная алгоритма анализа поведения сложно сказать, но по моему, ваш подход «ломаться» будет довольно просто подгонкой поведения бота под средне-статистическое.
        • +1
          Все же для reCaptcha и Некапчи ботов будут писать специализированных, поэтому сравнивать статистику по ним нельзя. Более того, для Некапчи их еще вообще нет, а если появятся, то мы будем их изучать и усиливать алгоритм.

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

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

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

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

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

            Среднестатистические паттерны поведения пользователей сайта. Например, глубина просмотра сайта, время проведенное на отдельных страницах, публикуемые материалы, частота публикаций и т.д. и т.п.
        • 0
          То же самое можно было бы подумать и про спам-письма – что все фильтры должны ломаться подгонкой под легитимных пользователей – однако это не совсем так. Будет ли такая же ситуация с некапчей или эта затея всё-таки провалится как только станет достаточно популярной – предсказать с значительной точностью не получится.
      • +2
        Сервис тестировали на пользователях с анализом данных? Насколько часто алгоритм принимает верное решение?
  • +17
    Подскажите, пожалуйста, на вашем примере первый символ перед A — девятка, a или q?
    • 0
      a.
      хвост ниже от следующего A
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          хвост от q вполне мог спрятаться за левую ногу А, а при таком кривоватеньком шрифте небольшая неровность в палке или кружке незаметна.
          Глядя на K и 4 я не могу предположить, как должен выглядеть кружок и палка у q.
    • 0
      Никто и никогда этого не узнает.
  • +4
    Похоже(логически) на комнатную реализацию gCaptcha 2.0 (она же ранее reCaptcha): habrahabr.ru/post/244779
    • –24
      Правильнее сказать, что reCaptcha 2.0 — это гугловская реализация Некапчи :) Наш сервис был запущен раньше на 9 месяцев где-то.
      • +22
        Что значит «запущен раньше на 9 месяцев где-то»? Гугл официально заявил о появлении нового сервиса 3-го декабря, уже поправил к этому моменту документацию и прочая, прочая, прочая. Вы ссылаетесь на какие-то невнятные сообщения на форумах со следами экспериментов. Не проще ли сравнить даты релизов? Или вы считаете что Гугл 1го декабря No CAPTCHA reCAPTCHA придумал, 2го реализовал, а 3го отрелизил? Ваше мнение о способностях гугловых инженеров черезвычайно лестно, конечно, но я боюсь вы их всё-таки переоцениваете.

        P.S. В идеале нужно бы сравнивать даты начала разработки, а не релизов, конечно, но тут нужна закрытая информация, без судебного разбирательства мы вряд ли необходимую информацию получим. Ясно только, что в обоих случаях речь идёт о разработках 13го года.
        • –3
          Да, согласен с вами. У нас не было точной даты релиза, поэтому что-то доказывать другим сложно. Наверно единственное документальное подтверждение того, что это наша идея — это заявка на изобретение, поданная в декабре 2013 года (если это так важно, то наверно скан или копию документа можно будет предоставить).
      • +19
        Небольшое дополнение: то, что Гугл, похоже, всё-таки вас несколько опередил ничуть не умаляет ваших достижений. Совершенно ясно, что вы начали разрабатывать свою «некапчу» до того, как о разработках Гугла стало публично известно, Гугл начал разрабатывать свою «No CAPTCHA» до того, как вы заявили о своих наработках, так что ясно, что «своровать идею» ни Гугл у вас, ни вы у Гугла не могли. Это уже само по себе — неплохое достижение и не нужно превращать Россию в родину слонов.
  • +66
    Логотип mail.ru отпугнет пользователей
    • +50
      Подтвердите что вы не бот — установите браузер Амиго!
      • 0
        Не установил = не бот?
    • +26
      … и при вводе капчи автоматически установит гарда, агента и амиго )
    • +23
      Извините, не удержался, а отредактировать старый пост уже нельзя: в «сеть» утекла информация об обновлении некапчи mail.ru:
      • 0
        Он «Амиго» или «Интернет»? Думал, переименовали, чтобы совсем уж не позориться, но нет: internet.mail.ru
        • 0
          И то, и другое: amigo.mail.ru ;)
    • +12
      Если пользователь не испугался и не закрыл тут же страницу — с большой долей вероятности это бот
      • 0
        Возможно парням из mailru следует прислушаться к рекомендации: на практике вероятность ложного срабатывания должна быть крайне мала!
  • +4
    Рекапчу из начала поста лекго распознать — ведь в ней не обязательно вводить все слова, достаточно только тех, которые искривлены. В вашем случае это просто 'rveage'
    • +1
      Не все это знают. И в форме написано «введите два слова». Что вообще говоря некрасиво по отношению к пользователю.
      • 0
        можно вывести 3-4 объекта и только два читабельных, и попросить ввода только двух ;)
    • 0
      Можно и так:

      Σᵢ₌₁∞ rveage

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

    gCapcha намного умнее в этом плане и так просто не обходится (считаются движения мышью и подобные признаки).
    • +6
      Дополнительно:
      Если mail.ru считает это хорошей капчей, которую удобно вводить людям, предлагаю эксперимент.
      Пусть каждый сотрудник mail.ru вводит её перед входом в дверь офиса. Ну хотябы в течение недели. Результат расстроит.
    • +1
      Пока получилось с точностью до наоборот:
      Роботам не надо никакой антикапчи, достаточно один раз авторизоваться на mail.ru (ну на этом этапе возможно 1 раз придётся распознать капчу).
      • +3
        Я думаю через какое-то количество заходов начнут счётчики срабатывать и CAPTCHA таки появится. Хотя это, конечно, только предположение.
  • +1
    М, т.е. имея валидного пользователя мейлару (которого можно создать или купить, а затем запрограммить свой бот на него) можно гулять по всем сайтам с этой капчей и делать что вздумается?
    • +3
      Вопрос в том, что дешевле — купить валидного пользователя и запостить 1000 сообщений или купить 1000 распознанных капч за 1$. Капча — это не идеальная защита от спама. Надо учитывать несколько факторов: влияние капчи на конверсию, критичный уровень спама, стоимость защиты и т.д.
      • 0
        А зачем покупать? Вы нигде не упомянули про стаж вроде-бы? (ну или если он требуется небольшой — ботик после создания нового пользователя может чуть-чуть потыкать по ссылкам в социалочках и заслужить стаж)

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

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

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

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

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

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

                Кроме того, не думаю что таких пользователей много будет, ну и + репутация и поведенческий фильтр сведет это к еще меньшему числу.
                • 0
                  Я просто о том, что нужно быть готовым и к такому сценарию. ;)
  • 0
    Что есть робот и не-робот в понимании не-каптчи?
    Если пользователь поставил userscript-бота, потыкал на сайте часок и включил автоматизацию — это валидный пользователь или все-таки робот? Если робот — тогда интересно; если все-таки валидный пользователь — тогда единичные точки применения для регистраций\авторизаций, и нам нужно проходить мимо.
    • +4
      Вся работа сервиса построена вокруг алгоритма принятия решения. Если его здесь написать, то сервис можно закрывать.
      • 0
        Вопрос заключался не в алгоритме, а в примере.
        Если пользователь включит userscript-бот в браузерной игре, будет ли такой пользователь считаться автоматизированным и требующим показа каптчи?
        • 0
          Могу сказать, что потыкать часок на сайте не достаточно.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Разве по таким ценам продаются адреса с паролями?
      • 0
        Реальных пользователей — нет. Нагенерированных роботом — да.
        Ну, это мои предположения, разумеется, не более того :)
        • 0
          Ну типа того. Чуть подороже обычно, но действия ведете в верном направлении :)
      • 0
        Антикапча предлагает распознавание 1000 капч за 1$. Соответственно за два бакса можно нарегать 2000 аккаунтов. Используя другие подобные сервисы (или меньшую цену капчи на антикапче), можно получить большее количество за те же деньги.
  • +1
    А есть ли какая-нибудь система репутации? Например, ваша «некапча» пропустит на сайт спамера-бота. Модераторы сайта увидят это, забанят пользователя. Отсылаются ли отчеты о банах за спам в вашу центральную базу данных?
    • +1
      Нет, такой системы сейчас нет. Но идея интересная, спасибо.
  • +5
    Дело в том, что у Mail.Ru более 100 млн пользователей, причем большая часть из них авторизована. А это значит, что с запросом на наши домены передаются сессионные куки, по которым мы определяем пользователя, а затем достаем его профиль, статистику, спам-рейтинг и т.д. Вся эта информация подается на вход алгоритма-классификатора, и на выходе мы получаем предположение о том, кем является пользователь — человеком или спам-ботом.

    Т.е. Если если я не зарегистрированный\авторизованный пользователь mail.ru, то я всегда буду видеть капчу? Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?
    • 0
      Хороший вопрос. Facebook на этом регулярно ловят (включая «громкие» публикации).
    • +1
      Ради ответа на такой вопрос перечитал комментарии. До сих пор тишина: ждём-с ответа =)
      Хотя, учитывая, что ВК и ОК принадлежат mail.ru, думаю, что предположение
      Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?
      более, чем верное
    • +1
      > Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?

      А вы думали зачем в Mail.ru Group сделали [бесплатную] Некапчу? Just for fun?
  • +11
    > Вы не робот. Подтверждено Mail.ru

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

    Нет, ну то есть, я знаю, что у Mail.ru есть много хорошего. Но в целом репутация компании ниже плинтуса. В отличие от того же Яндекса, например, который тоже не ангел с барами и стринговым браузером, но в целом он — на коне.
    • –1
      У вас прям наболело. Прямо даже пожалеть захотелось)
  • +6
    Я думаю, в случае верифицированного состояния лучше вообще не показывать картинок.
    • +4
      Зашел, чтобы написать этот комментарий ) Да, зачем эта реклама mail.ru? Если уверен, что не робот, то не надо выводить. Меньше данных в форме — лучше. А такая картинка заставляет прочитать, задуматься.

      Меня лично смутило. Я подсознательно ищу куда нажать «да, я не робот».
      • 0
        А я инстинктивно потянулся к телефону — чтоб доказать, что не робот я обычно отправляю смс или ввожу свой номер телефона, а потом пришедший на него код. Постоянно при скачке файлов доказываю, что я не робот кому-то :)
        • +1
          По умолчанию виджет не скрывается, чтобы не поехала верстка в формах. Бывают формы, где нужно скрыть не только виджет, но и часть верстки (строку таблички, подпись или что-то еще). Чтобы корректно скрыть виджет можно использовать специальное js событие.

          Было бы удобнее, если бы в настройках был пункт «скрыть если не робот» и опционально колбэк для скрытия дополнительной верстки?
  • –8
    Хы. Я уже придумал как обойти)
    • +7
      Все вас внимательно слушают
  • +2
    Есть примеры сайтов, где ЭТО используется?

    И повторю вопрос от rndr — если я не пользуюсь никакими сервисами мейл.ру, я всегда буду видеть капчу?
    • +2
      Я надеюсь таких примеров не будет, да и люди, связанные с веб-технологиями консервативны(по моему мнению) к ресурсам mailru из-за плохой кармы дистрибуции их grayware.
      • +1
        тсс… вы не совсем поняли, зачем я это спросил ;)
  • 0
    А можно отключить отображение сообщения, что «Вы не робот»? Раз не робот, и каптча не нужна, то можно и не показывать ничего.
    • –1
      Вы не поняли, просто mail.ru показывают крутость своих алгоритмов таким образом ;)
  • 0
    Подождем годик, посмотрим много ли ботов научатся обходить эту защиту, а там и посмотрим — ставить или нет.
  • 0
    Кому интересно, запилил альтернативную реализацию апишки на php 5.3+
  • 0
    Лучше бы не буквы, а что-то типа матан-капчи:
    image
    А если серьезно, на нескольких сайтах видел «капчу» по типу собери рисунок. Встречалась только 2 или 3 раза. Очень удобно и ненужно вглядываться в буквы-цифры. Почему их не используют? Из-за мобильных устройств?
    • 0
      К слову, на мобильных устройствах всё спокойно собирается. Ради интереса сейчас всё-таки проверил: андроид, UC Web, полёт нормальный)
      • 0
        Зависит не от платформы больше, а от возможностей браузера.
    • 0
      Матан-капча не создаёт дополнительных трудностей для роботов. А для людей — создаёт.
    • 0
      У Киевстара уже очень давно используется такого рода каптча. По типу «Выдели рисунки живой природы».
      www.kyivstar.ua/ru/cr/sms
      • 0
        Вот я сколько вижу предложений капч такого рода — ни разу не видел какого-либо их обсуждения. На мой взгляд это самая совершенная защита (выбрать наугад, к примеру, 3 верных картинки из 9 — задача непосильная, плюс варианты и картинки каждый раз меняются, увеличивая количество решений), но, к сожалению, удостовериться в этом лично я не имею никакой возможности, так как какие-либо комментарии по этому поводу отсутствуют.
  • 0
    man0xff может лучше ваша команда будет антиспам разрабатывать?? Ну правда же, с самого момента запуска Gmail я очень редко вижу спам во Входящих. И постоянно вижу его во входящих на mail.ru. К чему все эти капчи, если работа по профилю компании просто на уровне 1999 года???
    • +2
      «Правильнее сказать, что антиспам в Gmail.com — это гугловская реализация антиспама Mail.ru :) Наш антиспам был запущен раньше на 9 месяцев где-то.»
      • 0
        Ну это-то вообще правда однозначная. Gmail.com появился в 2004м году и, конечно, сильно изменил мир вебмейла, но утверждать, что до него антиспама не было просто глупо. Mail.ru и его антиспам к этому моменту уже много лет работали…
        • 0
          А вот это вы зря. Антиспам у них если и работает, то как-то совсем не как антиспам
        • 0
          А расскажите, может вы знаете — как на почтовый ящик, который был создан, но ни разу нигде не использовался может приходить спам? Откуда у спамеров адрес взялся для рассылки?
  • 0
    В своих проектах использую вот такую каптчу (идея и реализация мои) http://oc2.opencartadmin.com/tretja-novost/ (отзывы)
    Как рапортуют пользователи очень удобно (есть подсказка, не надо клавиатуры), и особенно удобно, по словам пользователей (а официально используют более 2000 интернет-магазинов) на мобильных девайсах
    • +1
      image
      • +1
        Удобно, конечно. Но я правильно понимаю, что бот угадает эту капчу 1 раз из 24?
        • 0
          Нет, посчитайте сами количество математических вариантов разной последовательности четырех элементов. ;)
          А к тому же, можно количество «символов» в каптче увеличивать до широты вашей фантазии
          • 0
            4 * 3 * 2 с 4 символами / кнопками, а если больше — всё удобство теряется.
            • 0
              Не правильно поняли задачу :)
              Подумайте, как бот угадает… Если он первый раз не угадал, то каптча то измениться. Уже совсем другая задача, т.е. увеличивается количество вариантов, соответствию количеству символов и цифр
              И даже если увеличить количество символов — все равно удобно
              • 0
                Если не увеличивать кол-во символов каждый раз — тот же 1 / 24. Увеличивать — издевательство над пользователями, что не могут капчу разобрать, да и не сильно поможет, если не в разы. Где я не прав? :)
                • 0
                  Это только идея.
                  Можно усложнить её как угодно. Допустим величины — закодировать с солью, а надписи через ajax jquery накладывать. Плюс переменное количество символов, обновление «надписей» на кнопке — КАРТИНКАМИ.
                  Т.е. уже будет — собери последовательность картинок

                  Вариантов много.
                  • +1
                    Можно усложнить её как угодно.

                    Тут одно из двух: либо у вас вариантов много (и тогда никакого облегчения для человека не будет), либо их мало (и тогда робот с большим удовольствием и упорством будет подбирать варианты попадая на сайт раз в 24 попытки).
                    Вариантов много.
                    Откуда тут «много вариантов», чёрт побери? Если вы будете тупо имитировать нажатие мышкой в серединку первой кнопки, потом второй, потом третьей и, наконец, четвёртой, то в среднем за одну попытку из 24 будете попадать на сайт. Всё. Остальное робота не волнует — соль, сахар, jquery и прочее можете оставить себе.
                    • –1
                      Вы наверно не совсем меня понимаете.
                      Смотрите, приходит 50 «кнопок» с дублями (правильными вариантами) (к примеру), т.е. вариантов где-то как с 15 кнопочным вариантом. Но показываются к примеру 4 (зависит от настроек), остальные скрыты. При вводе первой меняется видимость порядка кнопок. Т.е. динамическое изменение порядка (а порядок заложен изначально в вывод, как соль своего рода)

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

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

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

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

              • +1
                Зачем боту какие-либо символы?
                Для него задача будет решаться следующим образом: есть 4 символа и необходимо определить лишь их последовательность для успешного достижения результата. Исходя из общей т.в. P = 1/4! = 1/24 (т.е. в данном случае из 24 загрузок страницы бот 1 раз получит success. С логикой загрузки 100 раз странички при 4 success очень уж недурной пробив.
                • –3
                  Такой же процент угадывания как и «обычной» каптчи с картинкой в которой все символы различимы человеком. Я бы сказал даже меньше :)
                  Вы учитывайте тот факт что здесь есть подсказка, поэтому можно усилить фон, разные шрифты, тени, угол и т п
                  Т.е. усложнить саму каптчу.
                  Даже если один, два символа вообще не видно — человек их различит очень легко, согласно подсказке (человеческой логике).
                  Ну и если вам надо каптча с меньшим процентом «отказов», то увеличьте до «стандартного» значения количества — обычно используют 6 символов. Тогда какой процент будет ;) Ответ — в пределах «нормы» обычной 6 знаковой каптчи. А может даже и лучше
                  • 0
                    Вовсе не такой же процент как на обычной капче. Если бы на обычной капче был такой «процент», то как вы думаете, что бы было в приоритете — разбирать изображение и пытаться сопоставить символы с эталоном или попросту «пробить» в страничку 24 раза случайными комбинациями из УЖЕ определенных символов?
                    Еще раз обращу ваше внимание на то, что задача тут сводится НЕ к разгадыванию символов а к подбору последовательности уже определенных символов (что номинально вовсе не является тестом Тьюринга).
                    • –4
                      Немного не правильно считаете? После первого промаха комбинация — ДРУГАЯ
                      Плюс не всегда бывает точное количество, бывает 4 бывает 6, 10 символов.
                      Мало того:

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

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

                      • 0
                        Плюс не всегда бывает точное количество, бывает 4 бывает 6, 10 символов.
                        6 — это уже кое-что, 720 вариантов, а 10 — уже совсем хорошо, почти столько же вариантов сколько у обычной CAPTCHA, вот только не будет ли уже и человеку такую капчу разгадывать так же сложно, как обычную?
                        • 0
                          А когда 50 (к примеру) кнопок «приходит» а показывается 4, но при вводе динамически меняется порядок согласно соли.
                          • +2
                            … то это не влияет на сложность перебора вообще.
        • –3
          Надпись на кнопках — картинками (в стиле каптчи, только более легкими), а величины кодировкой с солью. И будет лучше обычной каптчи. И вероятность отгадать боту меньше чем у «обычной» каптчи.
          Для человеческой логики соединить однотипные «известные» картинки гораздо проще, чем «разгадывать»
          • +3
            Да не будет робот ничего распознавать, а будет тупо слать «первая кнопка, вторая кнопка, третья кнопка, четвёртая кнопка.»
            23 раза не угадает, на 24-й раз подойдёт.
            • –2
              После первого промаха меняется комбинация.
              Я же говорю — это только прототип идеи.

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

              Можно сделать 20 кнопок и 20-ти значный скрытый код и не нужные скрыть jquery и отслеживать реальный клик, а не функцией и т.п.
              Пусть робот «думает» какие кнопки действительно отвечают за ввод, а какие нет.
              Как в таком случае — вариантов уже сколько? ;)
              • +2
                Как в таком случае — вариантов уже сколько? ;)
                По прежнему 24. Или вы думаете робота тяжело научить нажимать только на кнопки посылая сообщения от мыши в браузер?
                • –2
                  Вы о чем?,.click() != клик пользователя мышкой. .click будет кликать по объекту, а вот порядок предоставления динамически генерируемый, изменяемый, при вводе вы не учли, т.е. при вводе пользователя меняется порядок объектов согласно «соли» т е робот еще должен разгадать порядок из 20 (к примеру, можно 50) кнопок, который будет передаваться с каптчей (типа соли).
                  • +2
                    .click() != клик пользователя мышкой.
                    Вы действительно не понимаете или издеваетесь? Боту совершенно необязательно вообще работать с вашими объектами. Он может запросто жить вне браузера. Просто на картинке в GPU-буфере (вернее в эмуляции оного) найти изображение кнопки и послать в браузер сообщение о тыкании пальцем в эту точку. И всё.

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

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

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

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

                        Да, людей, способных это сделать немного, и большинство работать со спамерами не будут, но ведь нужен всего один — потом его творение просто растиражируют.
                        • –1
                          Собственно для борьбы с подобным зверьём и появились noCAPTCHA reCAPTCHA, Некапча Mail.ru и прочие.

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

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

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

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

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

                          Рука не устала минусовать? Ответить нечего?
                      • 0
                        Очень продвинутый робот? Вы реально?

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

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


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

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

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

                      Не корректно вы повели. Уж извините. Я вам про одно (реальный сценарий и инструментарий), а вы троллите на своей волне.
    • 0
      Тоже подавать заявку на изобретение «велика»? :)
      Раз опубликовал, значит авторство «подтверждено»
  • 0
    НЕКАПЧА…
    По умолчанию используется русский язык.

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

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


    Вы динамически вставляете в чужие страницы элемент с ID, да ещё и с таким простым значением, без вендорного префикса?

    Попахивает и множественной вставкой в одну страницу, и конфликтами с существующими пользовательскими блоками. Особенно в ваших масштабах.

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

Самое читаемое Разработка