Вряд ли кто-то сможет разгадать эту капчу :)
Если в двух словах, то Некапча — это сервис интеллектуальной капчи, не требующий от человека прохождения проверки. Естественно, без дополнительной информации сервис не может ничего сказать о пользователе. Откуда же ее взять? Дело в том, что у 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)
Zagrebelion
14.04.2015 12:18+17Подскажите, пожалуйста, на вашем примере первый символ перед A — девятка, a или q?
ilnarb
14.04.2015 12:27a.
хвост ниже от следующего Adkuzevanov
14.04.2015 12:30c2n.me/3g3ELgh.jpg
Согласен, совсем не похоже на q или 9.Zagrebelion
14.04.2015 12:38хвост от q вполне мог спрятаться за левую ногу А, а при таком кривоватеньком шрифте небольшая неровность в палке или кружке незаметна.
Глядя на K и 4 я не могу предположить, как должен выглядеть кружок и палка у q.
zenn
14.04.2015 12:23+4Похоже(логически) на комнатную реализацию gCaptcha 2.0 (она же ранее reCaptcha): habrahabr.ru/post/244779
man0xff Автор
14.04.2015 12:33-24Правильнее сказать, что reCaptcha 2.0 — это гугловская реализация Некапчи :) Наш сервис был запущен раньше на 9 месяцев где-то.
khim
14.04.2015 12:55+22Что значит «запущен раньше на 9 месяцев где-то»? Гугл официально заявил о появлении нового сервиса 3-го декабря, уже поправил к этому моменту документацию и прочая, прочая, прочая. Вы ссылаетесь на какие-то невнятные сообщения на форумах со следами экспериментов. Не проще ли сравнить даты релизов? Или вы считаете что Гугл 1го декабря No CAPTCHA reCAPTCHA придумал, 2го реализовал, а 3го отрелизил? Ваше мнение о способностях гугловых инженеров черезвычайно лестно, конечно, но я боюсь вы их всё-таки переоцениваете.
P.S. В идеале нужно бы сравнивать даты начала разработки, а не релизов, конечно, но тут нужна закрытая информация, без судебного разбирательства мы вряд ли необходимую информацию получим. Ясно только, что в обоих случаях речь идёт о разработках 13го года.man0xff Автор
14.04.2015 13:48-3Да, согласен с вами. У нас не было точной даты релиза, поэтому что-то доказывать другим сложно. Наверно единственное документальное подтверждение того, что это наша идея — это заявка на изобретение, поданная в декабре 2013 года (если это так важно, то наверно скан или копию документа можно будет предоставить).
khim
14.04.2015 13:21+19Небольшое дополнение: то, что Гугл, похоже, всё-таки вас несколько опередил ничуть не умаляет ваших достижений. Совершенно ясно, что вы начали разрабатывать свою «некапчу» до того, как о разработках Гугла стало публично известно, Гугл начал разрабатывать свою «No CAPTCHA» до того, как вы заявили о своих наработках, так что ясно, что «своровать идею» ни Гугл у вас, ни вы у Гугла не могли. Это уже само по себе — неплохое достижение и не нужно превращать Россию в родину слонов.
BusteR27
14.04.2015 12:29+4Рекапчу из начала поста лекго распознать — ведь в ней не обязательно вводить все слова, достаточно только тех, которые искривлены. В вашем случае это просто 'rveage'
Livid
22.04.2015 17:43Можно и так:
????? rveage
Увы да, в юникоде не хватает надстрочной бесконечности. Но по-моему и так — вполне ничего.
la0
14.04.2015 12:31+14Phantomjs с предварительной программной авторизацией на mail.ru вполне распознаётся как человек. Короче, стойкость против программных средств примерно ноль.
Опять делаем защиту от роботов, а имеем защиту от людей.
gCapcha намного умнее в этом плане и так просто не обходится (считаются движения мышью и подобные признаки).la0
14.04.2015 12:33+6Дополнительно:
Если mail.ru считает это хорошей капчей, которую удобно вводить людям, предлагаю эксперимент.
Пусть каждый сотрудник mail.ru вводит её перед входом в дверь офиса. Ну хотябы в течение недели. Результат расстроит.
la0
14.04.2015 12:37+1Пока получилось с точностью до наоборот:
Роботам не надо никакой антикапчи, достаточно один раз авторизоваться на mail.ru (ну на этом этапе возможно 1 раз придётся распознать капчу).khim
14.04.2015 12:56+3Я думаю через какое-то количество заходов начнут счётчики срабатывать и CAPTCHA таки появится. Хотя это, конечно, только предположение.
TheRaven
14.04.2015 12:36+1М, т.е. имея валидного пользователя мейлару (которого можно создать или купить, а затем запрограммить свой бот на него) можно гулять по всем сайтам с этой капчей и делать что вздумается?
man0xff Автор
14.04.2015 12:50+3Вопрос в том, что дешевле — купить валидного пользователя и запостить 1000 сообщений или купить 1000 распознанных капч за 1$. Капча — это не идеальная защита от спама. Надо учитывать несколько факторов: влияние капчи на конверсию, критичный уровень спама, стоимость защиты и т.д.
ionicman
14.04.2015 13:04А зачем покупать? Вы нигде не упомянули про стаж вроде-бы? (ну или если он требуется небольшой — ботик после создания нового пользователя может чуть-чуть потыкать по ссылкам в социалочках и заслужить стаж)
Создал пользователя — и гуляй с ним спокойно. Забанили? Снова создал.
И если раньше на каждый чих нужно было распознавать капчу, то сейчас требуется ее распознавать только при создании нового пользователя.
Или стаж все-таки учитывается? Тогда да, ситуация будет дилеммой между тем, сколько стоит взломанный акк и сколько на нем держится бот с одной стороны, и цена на распознавание капчи — с другой. Что будет выгодней — то и победит.man0xff Автор
14.04.2015 13:11Тут уже написал. Но могу сказать, что стаж учитывается, и новые пользователи капчу все же увидят.
ionicman
14.04.2015 13:47Ну вот это тогда совсем другое дело, если нормально стаж учитывается.
Я, если честно, давно не понимал, почему не сделать для пользователей своих же сетей простую весч — если человек авторизован и был на своей странице в течении недели и имеет на ней активность в течении недели + имеется пересекающаяся активность его друзей с ним — значит можно на 80% утверждать, что это валидный пользователь — и не показывать ему капчу (или какие-либо другие послабления).
При таком вопросе на одной из конференций мне ответили «типа очень ресурсоемко, проще показать капчу».
Ну вот. Оказывается не все так плохо :)jMas
14.04.2015 13:59Вполне себе активные пользователи могут сдавать свои аккаунты в аренду ботам. Если раньше эта схема не работала (нужно было вводить каптчу), то сейчас можно перебирать полученные в аренду аккаунты.
ionicman
14.04.2015 14:48Дак понятно, что это не панацея. Дальше поведенческий фильтр нужен. В любом случае, если % нормальных пользователей гораздо больше % пользователей которые отдаются в аренду — это профит.
А капча — не серебренная пуля вообще ни разу — цены на ее распознавание копеечные. Тут просто что выгодней сервису — довольные активные пользователи или % ботов.
Кроме того, не думаю что таких пользователей много будет, ну и + репутация и поведенческий фильтр сведет это к еще меньшему числу.
brntsrs
14.04.2015 12:42Что есть робот и не-робот в понимании не-каптчи?
Если пользователь поставил userscript-бота, потыкал на сайте часок и включил автоматизацию — это валидный пользователь или все-таки робот? Если робот — тогда интересно; если все-таки валидный пользователь — тогда единичные точки применения для регистраций\авторизаций, и нам нужно проходить мимо.man0xff Автор
14.04.2015 12:57+4Вся работа сервиса построена вокруг алгоритма принятия решения. Если его здесь написать, то сервис можно закрывать.
dkuzevanov
14.04.2015 12:46+2Берем базу e-mail`ов по 2$ за 1000 шт.
Авторизуемся, сохраняем куки, устраняем конкурента.
В чём профит?MichaelBorisov
14.04.2015 12:54Разве по таким ценам продаются адреса с паролями?
DarkByte
14.04.2015 18:43Антикапча предлагает распознавание 1000 капч за 1$. Соответственно за два бакса можно нарегать 2000 аккаунтов. Используя другие подобные сервисы (или меньшую цену капчи на антикапче), можно получить большее количество за те же деньги.
MichaelBorisov
14.04.2015 12:56+1А есть ли какая-нибудь система репутации? Например, ваша «некапча» пропустит на сайт спамера-бота. Модераторы сайта увидят это, забанят пользователя. Отсылаются ли отчеты о банах за спам в вашу центральную базу данных?
rndr
14.04.2015 13:58+5Дело в том, что у Mail.Ru более 100 млн пользователей, причем большая часть из них авторизована. А это значит, что с запросом на наши домены передаются сессионные куки, по которым мы определяем пользователя, а затем достаем его профиль, статистику, спам-рейтинг и т.д. Вся эта информация подается на вход алгоритма-классификатора, и на выходе мы получаем предположение о том, кем является пользователь — человеком или спам-ботом.
Т.е. Если если я не зарегистрированный\авторизованный пользователь mail.ru, то я всегда буду видеть капчу? Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?Areso
14.04.2015 23:10Хороший вопрос. Facebook на этом регулярно ловят (включая «громкие» публикации).
Beltoev
14.04.2015 23:46+1Ради ответа на такой вопрос перечитал комментарии. До сих пор тишина: ждём-с ответа =)
Хотя, учитывая, что ВК и ОК принадлежат mail.ru, думаю, что предположение
Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?
более, чем верное
kolyaflash
15.04.2015 00:33+1> Или mail.ru своими кнопочками\лайками\капчами будет следить за мной несмотря на то, что я не ставил никаких галочек о принятии того, чего никто не читает?
А вы думали зачем в Mail.ru Group сделали [бесплатную] Некапчу? Just for fun?
mtp
14.04.2015 14:04+11> Вы не робот. Подтверждено Mail.ru
Увидев такую «антикапчу», я бы испытал сильное желание закрыть вкладку. Я и так знаю, что я не робот, зачем тут какое-то Mail.ru со своими гвардами и Интернетом примазывается?
Нет, ну то есть, я знаю, что у Mail.ru есть много хорошего. Но в целом репутация компании ниже плинтуса. В отличие от того же Яндекса, например, который тоже не ангел с барами и стринговым браузером, но в целом он — на коне.
Shvonder
14.04.2015 14:22+6Я думаю, в случае верифицированного состояния лучше вообще не показывать картинок.
Vorchun
14.04.2015 14:33+4Зашел, чтобы написать этот комментарий ) Да, зачем эта реклама mail.ru? Если уверен, что не робот, то не надо выводить. Меньше данных в форме — лучше. А такая картинка заставляет прочитать, задуматься.
Меня лично смутило. Я подсознательно ищу куда нажать «да, я не робот».priv8v
14.04.2015 14:48А я инстинктивно потянулся к телефону — чтоб доказать, что не робот я обычно отправляю смс или ввожу свой номер телефона, а потом пришедший на него код. Постоянно при скачке файлов доказываю, что я не робот кому-то :)
man0xff Автор
14.04.2015 15:37+1По умолчанию виджет не скрывается, чтобы не поехала верстка в формах. Бывают формы, где нужно скрыть не только виджет, но и часть верстки (строку таблички, подпись или что-то еще). Чтобы корректно скрыть виджет можно использовать специальное js событие.
Было бы удобнее, если бы в настройках был пункт «скрыть если не робот» и опционально колбэк для скрытия дополнительной верстки?
TimsTims
14.04.2015 20:22Подождем годик, посмотрим много ли ботов научатся обходить эту защиту, а там и посмотрим — ставить или нет.
susnake
15.04.2015 13:15Лучше бы не буквы, а что-то типа матан-капчи:
А если серьезно, на нескольких сайтах видел «капчу» по типу собери рисунок. Встречалась только 2 или 3 раза. Очень удобно и ненужно вглядываться в буквы-цифры. Почему их не используют? Из-за мобильных устройств?Zenitchik
16.04.2015 17:00Матан-капча не создаёт дополнительных трудностей для роботов. А для людей — создаёт.
ZhukV
17.04.2015 09:34У Киевстара уже очень давно используется такого рода каптча. По типу «Выдели рисунки живой природы».
www.kyivstar.ua/ru/cr/smsAcuna
21.04.2015 23:57Вот я сколько вижу предложений капч такого рода — ни разу не видел какого-либо их обсуждения. На мой взгляд это самая совершенная защита (выбрать наугад, к примеру, 3 верных картинки из 9 — задача непосильная, плюс варианты и картинки каждый раз меняются, увеличивая количество решений), но, к сожалению, удостовериться в этом лично я не имею никакой возможности, так как какие-либо комментарии по этому поводу отсутствуют.
nitro80
16.04.2015 14:28man0xff может лучше ваша команда будет антиспам разрабатывать?? Ну правда же, с самого момента запуска Gmail я очень редко вижу спам во Входящих. И постоянно вижу его во входящих на mail.ru. К чему все эти капчи, если работа по профилю компании просто на уровне 1999 года???
Beltoev
17.04.2015 01:18+2«Правильнее сказать, что антиспам в Gmail.com — это гугловская реализация антиспама Mail.ru :) Наш антиспам был запущен раньше на 9 месяцев где-то.»
khim
17.04.2015 02:14Ну это-то вообще правда однозначная. Gmail.com появился в 2004м году и, конечно, сильно изменил мир вебмейла, но утверждать, что до него антиспама не было просто глупо. Mail.ru и его антиспам к этому моменту уже много лет работали…
nitro80
17.04.2015 08:19А вот это вы зря. Антиспам у них если и работает, то как-то совсем не как антиспам
lamoss
21.04.2015 23:00А расскажите, может вы знаете — как на почтовый ящик, который был создан, но ни разу нигде не использовался может приходить спам? Откуда у спамеров адрес взялся для рассылки?
maxic
20.04.2015 13:20В своих проектах использую вот такую каптчу (идея и реализация мои) http://oc2.opencartadmin.com/tretja-novost/ (отзывы)
Как рапортуют пользователи очень удобно (есть подсказка, не надо клавиатуры), и особенно удобно, по словам пользователей (а официально используют более 2000 интернет-магазинов) на мобильных девайсахmaxic
20.04.2015 13:29+1rock
20.04.2015 14:02+1Удобно, конечно. Но я правильно понимаю, что бот угадает эту капчу 1 раз из 24?
maxic
20.04.2015 14:08Нет, посчитайте сами количество математических вариантов разной последовательности четырех элементов. ;)
А к тому же, можно количество «символов» в каптче увеличивать до широты вашей фантазииrock
20.04.2015 14:124 * 3 * 2 с 4 символами / кнопками, а если больше — всё удобство теряется.
maxic
20.04.2015 14:20Не правильно поняли задачу :)
Подумайте, как бот угадает… Если он первый раз не угадал, то каптча то измениться. Уже совсем другая задача, т.е. увеличивается количество вариантов, соответствию количеству символов и цифр
И даже если увеличить количество символов — все равно удобноrock
20.04.2015 14:25Если не увеличивать кол-во символов каждый раз — тот же 1 / 24. Увеличивать — издевательство над пользователями, что не могут капчу разобрать, да и не сильно поможет, если не в разы. Где я не прав? :)
maxic
20.04.2015 16:15Это только идея.
Можно усложнить её как угодно. Допустим величины — закодировать с солью, а надписи через ajax jquery накладывать. Плюс переменное количество символов, обновление «надписей» на кнопке — КАРТИНКАМИ.
Т.е. уже будет — собери последовательность картинок
Вариантов много.khim
20.04.2015 20:08+1Можно усложнить её как угодно.
Тут одно из двух: либо у вас вариантов много (и тогда никакого облегчения для человека не будет), либо их мало (и тогда робот с большим удовольствием и упорством будет подбирать варианты попадая на сайт раз в 24 попытки).
Вариантов много.
Откуда тут «много вариантов», чёрт побери? Если вы будете тупо имитировать нажатие мышкой в серединку первой кнопки, потом второй, потом третьей и, наконец, четвёртой, то в среднем за одну попытку из 24 будете попадать на сайт. Всё. Остальное робота не волнует — соль, сахар, jquery и прочее можете оставить себе.maxic
20.04.2015 20:44-1Вы наверно не совсем меня понимаете.
Смотрите, приходит 50 «кнопок» с дублями (правильными вариантами) (к примеру), т.е. вариантов где-то как с 15 кнопочным вариантом. Но показываются к примеру 4 (зависит от настроек), остальные скрыты. При вводе первой меняется видимость порядка кнопок. Т.е. динамическое изменение порядка (а порядок заложен изначально в вывод, как соль своего рода)
Т.е. реально выбор робота из вариантов 50 кнопок (минус нужные дубли) ~ 15 — 25 кнопок.
И если не понимаете меня, то зачем минусы ставить? ;)
Вы же не представляете алгоритм
Вариант, который показан, это идея и прототип. А реализовать «запутать робота» можно многими алгоритмами. Лучший думаю динамический с выбранным показом кнопок из большого количества прямо при вводе. И порядок — это соль.
khim
20.04.2015 21:38+1Но показываются к примеру 4 (зависит от настроек), остальные скрыты.
Ну значит из этих 4х робот и будет выбирать. Почему его должны остальные кнопки волновать?
Вы же не представляете алгоритм
Это вы его, похоже, не представляете. Алгоритм туп как валенок: запустили какой-нибудь Chrome, «нажали» (послали сообщение от мыши) на 4 кнопки по порядку, зашли (с веротностью 1/24) на сайт. Всё. Сколько, куда и каких кнопок вы вставляли и как их солили и сахарили — робота не волнует. То есть вообще.
zenn
20.04.2015 15:37+1Зачем боту какие-либо символы?
Для него задача будет решаться следующим образом: есть 4 символа и необходимо определить лишь их последовательность для успешного достижения результата. Исходя из общей т.в. P = 1/4! = 1/24 (т.е. в данном случае из 24 загрузок страницы бот 1 раз получит success. С логикой загрузки 100 раз странички при 4 success очень уж недурной пробив.maxic
20.04.2015 16:08-3Такой же процент угадывания как и «обычной» каптчи с картинкой в которой все символы различимы человеком. Я бы сказал даже меньше :)
Вы учитывайте тот факт что здесь есть подсказка, поэтому можно усилить фон, разные шрифты, тени, угол и т п
Т.е. усложнить саму каптчу.
Даже если один, два символа вообще не видно — человек их различит очень легко, согласно подсказке (человеческой логике).
Ну и если вам надо каптча с меньшим процентом «отказов», то увеличьте до «стандартного» значения количества — обычно используют 6 символов. Тогда какой процент будет ;) Ответ — в пределах «нормы» обычной 6 знаковой каптчи. А может даже и лучшеzenn
20.04.2015 16:41Вовсе не такой же процент как на обычной капче. Если бы на обычной капче был такой «процент», то как вы думаете, что бы было в приоритете — разбирать изображение и пытаться сопоставить символы с эталоном или попросту «пробить» в страничку 24 раза случайными комбинациями из УЖЕ определенных символов?
Еще раз обращу ваше внимание на то, что задача тут сводится НЕ к разгадыванию символов а к подбору последовательности уже определенных символов (что номинально вовсе не является тестом Тьюринга).maxic
20.04.2015 18:47-4Немного не правильно считаете? После первого промаха комбинация — ДРУГАЯ
Плюс не всегда бывает точное количество, бывает 4 бывает 6, 10 символов.
Мало того:
Алгоритм обработки тоже можно изменить, это только прототип.
Можно сделать 20 кнопок (а показывать 4, 5, 6 — причем картинками) и 20-ти значный скрытый код, а «не нужные» скрыть и т.п.
Пусть робот «думает» какие кнопки действительно отвечают за ввод, а какие нет. Уже только в этом есть варианты комбинаций.
Как в таком случае — вариантов комбинаций уже сколько? ;)
khim
20.04.2015 20:10Плюс не всегда бывает точное количество, бывает 4 бывает 6, 10 символов.
6 — это уже кое-что, 720 вариантов, а 10 — уже совсем хорошо, почти столько же вариантов сколько у обычной CAPTCHA, вот только не будет ли уже и человеку такую капчу разгадывать так же сложно, как обычную?
maxic
20.04.2015 16:22-3Надпись на кнопках — картинками (в стиле каптчи, только более легкими), а величины кодировкой с солью. И будет лучше обычной каптчи. И вероятность отгадать боту меньше чем у «обычной» каптчи.
Для человеческой логики соединить однотипные «известные» картинки гораздо проще, чем «разгадывать»Zagrebelion
20.04.2015 18:01+3Да не будет робот ничего распознавать, а будет тупо слать «первая кнопка, вторая кнопка, третья кнопка, четвёртая кнопка.»
23 раза не угадает, на 24-й раз подойдёт.maxic
20.04.2015 18:41-2После первого промаха меняется комбинация.
Я же говорю — это только прототип идеи.
Алгоритм обработки тоже можно изменить.
Можно сделать 20 кнопок и 20-ти значный скрытый код и не нужные скрыть jquery и отслеживать реальный клик, а не функцией и т.п.
Пусть робот «думает» какие кнопки действительно отвечают за ввод, а какие нет.
Как в таком случае — вариантов уже сколько? ;)khim
20.04.2015 20:01+2Как в таком случае — вариантов уже сколько? ;)
По прежнему 24. Или вы думаете робота тяжело научить нажимать только на кнопки посылая сообщения от мыши в браузер?maxic
20.04.2015 20:50-2Вы о чем?,.click() != клик пользователя мышкой. .click будет кликать по объекту, а вот порядок предоставления динамически генерируемый, изменяемый, при вводе вы не учли, т.е. при вводе пользователя меняется порядок объектов согласно «соли» т е робот еще должен разгадать порядок из 20 (к примеру, можно 50) кнопок, который будет передаваться с каптчей (типа соли).
khim
20.04.2015 21:46+2.click() != клик пользователя мышкой.
Вы действительно не понимаете или издеваетесь? Боту совершенно необязательно вообще работать с вашими объектами. Он может запросто жить вне браузера. Просто на картинке в GPU-буфере (вернее в эмуляции оного) найти изображение кнопки и послать в браузер сообщение о тыкании пальцем в эту точку. И всё.
т е робот еще должен разгадать порядок из 20 (к примеру, можно 50) кнопок, который будет передаваться с каптчей (типа соли).
Госсподя. Зачем ему всё это? С точки зрения вашего супер-пупер-мега-скрипта это будет просто нажатие пальцем человека по кнопке и он сам всё сделает — и выберет нужную кнопку и картинку и на сервер событие отошлёт. Максимум, что вы можете пытаться оценивать — тайминги какие-нибудь, но даже и их можно подделать без больших проблем.
maxic
20.04.2015 23:31-2Нет, не издеваюсь, просто вы приводите такой сценарий при котором и recaptcha определяется в 95% попыток (информация google)
Это уже очень продвинутый робот и с ним бороться каптчей не реально. разве что через СМС подтверждение :)
Такой робот у каждого спамера? И каждый может настроить так, чтобы «робот» искал картинки кнопок, относительно других элементов страницы и т.п.?
Вы приводите почти не реальный сценарий в жизни обычного «спамера»
Я имею ввиду сценарий робота «взять контент», обработать, отослать post, get.khim
21.04.2015 01:11Это уже очень продвинутый робот и с ним бороться каптчей не реально. разве что через СМС подтверждение :)
Собственно для борьбы с подобным зверьём и появились noCAPTCHA reCAPTCHA, Некапча Mail.ru и прочие.
Такой робот у каждого спамера?
А почему бы и нет?
И каждый может настроить так, чтобы «робот» искал картинки кнопок, относительно других элементов страницы и т.п.?
Это один раз нужно сделать.
Вы, определитесь, пожалуйста, чего вы вообще хотите: если вам нужно решение для одного-двух сайтов, то вопросы/картинки по тематике отсеют как роботов, так и людей, которые «не в теме» (что зачастую тоже хорошо). А если вы делаете «массовое» решение, то должны быть готовы и к роботам с продвинутым AI, и к распознавальщикам кнопок на картинках и к прочему.
Да, людей, способных это сделать немного, и большинство работать со спамерами не будут, но ведь нужен всего один — потом его творение просто растиражируют.maxic
21.04.2015 02:02-1Собственно для борьбы с подобным зверьём и появились noCAPTCHA reCAPTCHA, Некапча Mail.ru и прочие.
Вы читаете мои посты? Здесь, на хабре, была статья. про исследования google, в которой сказано, что такого класса робот распознает 95%! reCAPTCHA.
Это вы определитесь. Хватит уже демагогии. Вам google четко сказал, что бороться с такого класса роботами средствами каптчи бесполезно. А вы развели эпатаж и троллизм. Заранее ставя автора поста на который вы отвечали в проигрышную ситуацию, при этом не упоминая о ней (про практически мало реальный сценарий). Уж извините — так не поступают. И в ЛС вы так и не ответили. Вам надо шоу, ну как и всем троллям
И не надо давить «на слабо»
А если вы делаете «массовое» решение
Уже доказано, что от такого рода сценариев каптча (любая) не поможет.
Описанная вами ситуация ставит любую каптчу не дееспособной вообще.
А некапча — работает с авторизироваными пользователями, на основе большого количества информации о его действиях. Это единичные, большие порталы могут позволить себе такое.
maxic
21.04.2015 02:21И кстати вот стандартная «массовая» каптча opencart, которая была заменена
Не знаю почему но хабр отказался использовать разметку, поэтому просто ссылка:
easycaptures.com/fs/uploaded/810/1583787203.jpg
Вот такого рода каптчи имеют 100% — определение.
Поэтому она и была заменена.
Да, не идеал. Но при 6 символах — вероятность определения во много меньше «стандартной». А при доработки алгоритма, еще меньше вероятность определения. А вот удобство использования (юзабилити) на порядок лучше многих вариантов, особенно на мобильных девайсах.
Тот кто ничего не делает, тому нечего и улучшать.
Рука не устала минусовать? Ответить нечего?
Beltoev
23.04.2015 23:59Очень продвинутый робот? Вы реально?
Вы слышали что-нибудь про iMacros? Судя по всему, нет.
Так вот, это такое расширение, которое может эмулировать человека в браузере. Простыми словами, в этом расширении бота на вашу антикапчу можно создать за пару минут:
1. Нажимаем кнопку «Запись»
2. Кликаем поочередно (либо в случайном порядке) по кнопкам вашей антикапчи на сайте
3. Останавливаем запись
4. (По желанию) При успешной операции грузим CSV со спамом и дописываем инструкции по его распространению. При не успешной — перезагружаем страницу (это все в командах макроса).
5. Профит!
Можно даже случайным образом нажимать по кнопкам, храня их координаты. Что тут такого нереального?
Вам здравую критику дают, перечитайте комментарии: такому боту не интересно, что под капотом и какие объекты вы скрытыми храните на сайте.
Намного разумнее будет с каждым обновлением страницы выдавать случайное количество кнопок, скажем, от 4 до 6-7, одна из которых — ложная. Вот тут-то уже можно будет об эффективности и непробиваемости что-то говорить. А пока так и остаётся — 1 из 24maxic
24.04.2015 00:13Я полностью с Вами согласен. Я показал прототип.
Он очень удобен. Особенно для мобильных девайсах.
А вот алгоритм «запутывания» робота, всегда можно усовершенствовать, о чем я и писал выше.
С каждой ошибкой просто добавлять количество кнопок с «ложными» кнопками, при этом описывая пользователю. Робот все равно не поймет, а вот пользователь отлично справиться. И юзабилити все равно сохраниться.
Поймите, это прототип идеи
maxic
21.04.2015 00:03-1С не реальным сценарием робота (через эмуляцию пользователя) можно тррллить любую «каптчу». Google четко об этом сказал — любая каптча таким роботом и человеком умеющим его настраивать разгадывается с вероятностью 95% и даже выше.
Не корректно вы повели. Уж извините. Я вам про одно (реальный сценарий и инструментарий), а вы троллите на своей волне.
maxic
20.04.2015 13:37Тоже подавать заявку на изобретение «велика»? :)
Раз опубликовал, значит авторство «подтверждено»
BelBES
А в чем фишка то? В том, что особо наглые боты будут отсеиваться, а те, котоые не проявляют аномальной активности, смогут лазать по сайту без препятствий?
man0xff Автор
Фишка в том, что мы не выводим капчу всем подряд, а пытаемся на основе дополнительной информации оценить, кем является пользователь. Если по ряду признаков мы решаем, что это человек, то капчу не показываем.
BelBES
При таком подходе интересна статистика того, сколько ботов пропускает таже recaptcha и ваш подход. Не зная алгоритма анализа поведения сложно сказать, но по моему, ваш подход «ломаться» будет довольно просто подгонкой поведения бота под средне-статистическое.
man0xff Автор
Все же для reCaptcha и Некапчи ботов будут писать специализированных, поэтому сравнивать статистику по ним нельзя. Более того, для Некапчи их еще вообще нет, а если появятся, то мы будем их изучать и усиливать алгоритм.
Что такое среднестатистическое поведение?
BelBES
Что значит нельзя? Оба подхода решают одну задачу — отсеивание ботов с сайта. Значит можно сравнивать качетсво, с которым они это делают.
Как уже написали ниже, судя по описанному в статье, простой userscript-бот сможет обойти вашу защиту.
Среднестатистические паттерны поведения пользователей сайта. Например, глубина просмотра сайта, время проведенное на отдельных страницах, публикуемые материалы, частота публикаций и т.д. и т.п.
HoverHell
То же самое можно было бы подумать и про спам-письма – что все фильтры должны ломаться подгонкой под легитимных пользователей – однако это не совсем так. Будет ли такая же ситуация с некапчей или эта затея всё-таки провалится как только станет достаточно популярной – предсказать с значительной точностью не получится.
priv8v
Сервис тестировали на пользователях с анализом данных? Насколько часто алгоритм принимает верное решение?