Pull to refresh

Comments 102

Déjà vu. Где-то на хабре уже видел этот топик пару дней назад.
В песочнице. Там нет комментариев, но мне интересно обсудить данную тему. Правила перечитал, пункта, запрещающего повторного постинга не нашел.
Роботы смогут отправлять эту форму рандомом, но зато вас возненавидит каждый двадцатый пользователь мужского пола.
UFO just landed and posted this here
У женщин дальтонизм встречается на порядок реже.
UFO just landed and posted this here
В корне возненавидят все, если не уберет повторный ввод имейла.
На картинке робот смотрит на нее, как на говно глупого и никчемного человечика, мол «ну чо ты пыжишься, своими никчемными нейронными мозгишками, супротив моих позитронных....» :)

А на счет метода — ерунда, имхо
Лично меня, да и, думаю, большинство, игры в «переставляйки» будут напрягать еще больше, чем капча.
К тому же — выключается яваскрипт и все ломается (нет, мне, на самом деле, плевать на параноиков выключающих яваскрипт, пусть горят в Аду, но есть, например, мобилки — что там делать?).
На мобилках можно точно так же набрать половину форм, наткнуться на капчу, и не смочь ее решить. А обновить не получится, потому что нет JS.

Тенденция развития мобильных браузеров радует. Скоро проблема отсутствия JS не будет волновать разработчика.
а опера мобайл разве не решила эту проблему? там вроде как всё норм с JS
UFO just landed and posted this here
На популярных Андроиде и айфоне есть стандартные полноценные браузеры, вообще-то.
UFO just landed and posted this here
Нет, просто свой предыдущий комментарий Вы сформулировали так, будто на этих платформах других браузеров нет.
UFO just landed and posted this here
Опера Мобаил лучше я считаю, смотрю на мини как на кусок добра
Мне понравилась идея и реализация. Думаю, что для многих она проще, чем вглядывание в абракадабру традиционных капч, персонально для меня точно.
Кстати прошу человеку подкинуть немного кармы, чтобы можно было перенести топик в тематический блог.
В какой именно блог? Я сомневаюсь с выбором…
Есть куда более простые и удобные способы избежать «вглядывания в абракадабру». Например www.1clicaptcha.com
Эта капча ломается за три секунды без напряга, даже на JS. Достаточно проверить три нужных пикселя, залиты они черным, или нет.
Каких три пикселя? Вы о чем?
Я о приведенной по ссылке капче. Там используется несколько радиобатонов с картинками, и вопрос. Текстовый вопрос распарсить не составляет труда, это простой регексп. Дальше, подгружаем картинки, которые приведены в головоломке. Эти картинки созданы в чернобелом варианте, без шума, без градиентов. Если нужно найти не цифру, то для каждой цифры вручную или неким алгоритмом находятся три точки на картинке, которые стопроцентно характеризуют эту картинку как цифру, и дальше выбирается картинка, которая не совпадает с 10-ю паттернами.

Например, для 1 будут некие координаты [ [10, 7], [16, 7], [4, 5] ]. Если цвет пикселя в данных точках черный, то это единица. Иначе идем дальше.

Логика понятна?
По приведенной выше ссылке классический вопрос из тестов на IQ: «выбрать из множества лишний элемент». И я вас уверяю, что не существует на данный момент алгоритмов, решающих подобные задачи.
А приведенный вами алгоритм работать не будет, вернее он может и будет работать, но только в одном случае из миллиона — когда все символы будут написаны одним шрифтом, одного размера и без наклонов и шума. К тому же он будет работать только для одного конкретного случая, а по ссылке примеры были не только с цифрами, но еще и со стрелками и животными. Как вы будете по трем точками определять животное?
Ассортимент картинок, предлагаемых для выбора, ограничен и очень скромен.

Хакеру достаточно один раз потртатить сравнительно немного времени на то, чтобы выгрузить все картинки, рассортировать их по категориям и написать взломщик, который будет разгадывать эту капчу на ВСЕХ сайтах со СТОПРОЦЕНТНЫМ успехом.
их можно крутить
Ничто не мешает увеличить количество картинок. Кроме этого одна картинка может входить в несколько категорий. А это меняет все принципиальным образом. Нет техногенных алгоритмов решения такой задачи.
А в чем сложность?

1) Вариант с вопросом.

Выкачиваем автоматом все картинки, разделяя их на категории в зависимости от вопроса. Тот факт, что каждая картинка может находиться в нескольких категориях — НИЧЕГО не меняет, поскольку бот каждый раз оперирует только с одной категорией.

Когда все картинки выкачаны, вручную отвечаем на все вопросы, то есть сопоставляем верную картинку для каждого вопроса. Готово.

2) Вариант «выбери лишний элемент».

Выкачиваем автоматом набор картинок, скажем, тысячу раз.

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

Затем из накачанных картинок берем каждой по одной штучке и каждой картинке присваиваем те категории, к которым она принадлежит. Опять же, факт принадлежности каждой картинки к нескольким категориям НИЧЕГО не меняет.

Затем пишем бота, который берет набор картинок и смотрит, какая из категорий соответствует всем картинкам, кроме одной. Выбираем оставшуюся картинку. Победа.

 

С этой задачей справится даже школьник: тут нет ни OCR'а, ни эвристики, ни сложных алгоритмов.

Другими словами, данная капча несостоятельна. Все нормальные капчи используют либо бескрайний ассортимент случайно генерируемых значений, либо, в случае reCaptcha, бескрайний ассортимент слов со сканированных страниц архивов New York Times и Google Books. Данная капча использует всего пару десятков категорий и пару сотен картинок, наращивать число которых проблематично и нерезультативно.

Я уже не говорю о том, что ее и взламывать-то не надо.
> Например www.1clicaptcha.com

Эта капча никуда не годится. Выбрать один пункт из 9? Вы смеётесь?
Роботу её даже разгадывать не нужно, просто тыкать наугад — шанс угадать более 10%. Для робота, который может делать по 1000 попыток в минуту (через прокси, с разных IP-адресов) такой вероятности более, чем достаточно, чтобы заспамить под завязку ваш сайт через эту форму.

А если учесть, что количество картинок у вас на сайте конечно, то можно предварительно вытянуть несколько десятков этих картинок, распознать их, тогда шанс пройти роботом капчу будет стремиться к 100%. Т.е. для робота капча будет проходиться быстрее и проще, чем для человека.
Во-первых, там есть варинты с гораздо большим количеством вариантов.

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

Во-третьих, если к вам долбится робот с разных IP-адресов, то вас уже мало что может спасти. Однако ваш ресурс должен еще суметь заинтересовать владельца такой тяжелой артиллерии.

В-четвертых, как замечено выше microuser'ом: «И я вас уверяю, что не существует на данный момент алгоритмов, решающих подобные задачи.»
> Во-первых, там есть варинты с гораздо большим количеством вариантов.

Гораздо большим — это сколько? Для робота даже 1-2% шанс пройти капчу — это уже достаточно, чтобы успешно спамить.

> В-вторых, долбобот, пытаюшийся решить задачу простым подбором блокируется на раз.

Как? Он через тысячи прокси подключается с тысяч IP-адресов. Как вы на стороне сайта вычислите, что все эти подключения от одного робота?

> В-четвертых, как замечено выше microuser'ом: «И я вас уверяю,
> что не существует на данный момент алгоритмов, решающих подобные задачи.»

Я не знаю, кого он там уверяет, но меня не убедил.

Изображений — конечное количество. Признаков сортировки и признака по которому выявляется лишний — тоже конечное количество.
Предварительно скачиваем 100-200 (да хоть 1000) изображений и вручную распознаём их. Каждому распознанному изображению присваеваем несколько тегов (в зависимости от признака возможной сортировки при поиске лишнего). Теги возможны такие: живое, неживое, животное, растение, архитектура, буква, знак валюты, цифра, еда, напиток, овощ, фрукт. У каких-то изображений будет только один тег, у каких-то несколько (это не страшно).

Теперь если предлагается 10 картинок и нужно выбрать из них одну (лишнюю по каким-то критериям), то алгоритм очень простой: все изображения сравниваются с заранее распознанной базой. Если у 9 из 10 картинок есть какой-то тег, а удной этого тега нет, то эту одну и выбирать. При хорошей предварительной подготовке базы картинок с тегами вероятность попадания будет близка к 100%.

Одно из моих правил звучит примерно так: «Если не можешь решить задачу простым способом, то нужно изменить условие задачи так, чтобы она решалась именно простым способом».

А где Вы почерпнули это правило?
Видимо форк от «Сделай настолько просто, насколько это возможно, но не проще.» © A.E.
Это сугубо личные наблюдения за процессом решения проблем. Обычно человек зацикливается на каких-то заданных условиях и не может выйти за их пределы, потому что считает их константой. Изменять условия задачи — единственное, что остается, чтобы решить ее. Этот принцип не нов, и очень активно используется в математике.
Простите, не смог удержаться.
Джек Воробей: «Советую, чтобы прорубиться сквозь чащу размышлений и устранить необходимость выбора — изменить данность.»

Эта фраза была первым, что мне пришло на ум при прочтении Вашего принципа :)
А что мешает боту точно также обновлять страницу и отправлять данные формы?
Помоему написать такого бота проще, нежели для распознавания традиционной капчи.
Процент удачных «регистраций» (при 3х фейковых формах) будет весьма велик.
А увеличение кол-во поддельных форм негативно скажется для пользователей.
Ничего не мешает. Но обновляя страницу он всегда будет попадать на неправильный вариант. Это описано в статье.
Я специально не накручивал систему защиты от неправильных постов, чтобы пользователи могли поиграться с отправкой данных. По идее, каждая неправильная попытка с данного IP должна приводить к увеличивающимся задержкам между следующей порцией данных. Да, я не спорю, решение не идеально.
что мешает роботу правильно отрендерить страницу в картинку и в нужной зоне посмотреть есть ли нужные паззловые картинки? 4 иконки сравнить с оригиналом гораздо проще чем распознавать алфавит.
Мешать будет множество пазловых задач, которые можно подсовывать роботу. Например, фигуры напротив должны совпасть, но могут быть разного цвета; пересесение двух знаков не должно оставлять пустот; смайлики должны или не должны быть всегда улыбающимися и так далее. Нужно решить пазл стопроцентно правильно, а это будет сложнее, чем нынешние капчи.
Вот! Вот тупик! Как и для всех капч — решение проблемы сводится к увеличению оригинальности элементов капчи, как и во всех остальных проинципах((( Жаль. Но добавлять всякие фигурки, смайлики и т.д. — это настолько же просто, насколько и добавить информацию о них боту.
От этого не избавиться никак :( Вроде бы никак. Надо подумать. Хм, первое, что приходит в голову — создать некий алгоритм создания логических задач, т.е. неповторяемого бота, генерирующего уникальную задачу по каждому запросу. Угадывать принципы создания таких задач сугубо по внешним факторам будет очень дорого.

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

но идея, конечно хорошая перейти от каптчи к логической задачке, хоть и не то чтобы новая. самого каптча напрягает сильно.
По сути, получилась та же капча. При этом такую же степень защиты можно получить, не перемешивая элементы формы. Достаточно просто отправлять на сервер вместе с заполненной формой ещё и выбранную последовательность фигур или код этой последовательности. По защите такая вариация будет не хуже, а реализовать — проще.
Неправильное расположение форм быстрее заметить. Юзабилити чуток выше.
А интересное решение. Только полей должно быть много. Больше чем 3. Если не ошибаюсь то количество перестановок тут равно N!.. Для трех полей это всего 6 вариантов. В таком случае достаточно перебрать все варианты. В вашей демке вариантов больше 40000. Там уже перебор не поможет.
Я с трудом представляю поле для отправка сообщений с 10 полями. Но тут можно использовать фиктивные поля. И обойтись 10 парами картинок который нужно расставить в определенном порядке. Способ перестановки самый простой для пользователя — перетаскивание, или выбрать попарно и нажать кнопку.
Ваша демка не юзабельна. Тыкать придется много что бы фигурки совпали. Да и форма у меня в экран не влезла, придется каждый раз скролить что бы проверить.
Решение такое, оставляем поля на месте. Фигурки локализуем в небольшой области экрана и делаем удобный способ расставить их попарно. Т.е. помимо данных отправляются еще данные с капчи, которые формируются в зависимости от того как расставлены картинки.

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

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

Сервисы распознают те капчи, которые популярны. Вставьте formcha в любой форумный движок, как тут же сотни человек по всему миру начнут придумывать алгоритмы взлома. Спрос рождает предложение.
Робот похож на что-то среднее между тем, который был в фильме «Я, робот» и рекламным роботом NOD32.
Согласен с автором в одном… Капчи системы «угадай мелодию с одной ноты» задолбали реально, ощущение что не роботов фильтруют а наоборот людей (причём отфильтровывают именно адекватных, которые не будут делать 500 попыток чтоб зарегистрироваться, а просто пойдут на аналогичный сервис, ибо конкуренция есть во всех областях)
Решение дурацкое.

>Нажимайте кнопку «обновить» до тех пор, пока половинки фигур напротив элементов форм не совпадут по цвету.
>После этого заполняйте форму

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

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

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

По поводу сети из тысячи машин. Ничего. Привязка идет по сессии.
А как работает сессия? Идентификатор сессии храниться в куке. А зачем спам-боту реализовывать поддержку куков?) Соответственно на каждый спам-запрос будут разные сессии.
Бота, который будет это обходить, можно написать двумя путями — либо проанализировав html-страницу, как это делается обычно.
Либо тупо отправить 5 раз форму, и один раз бот угадает. 20% — не так уж и плохо.
Что даст анализ страницы? Не поленитесь, попробуйте найти ответ в коде.
Второй путь блокируется на ура простыми системами защиты от повторных срабатываний.
Я попробую ради спортивного интереса поломать защиту.
А что за система повторных срабатываний? Защита от одинаковых вводов?
Да ни один нормальный бот не будет постоянно слать одинаковые имя/фамилия/мыло
Данные про капчу хранятся в сессии. Если попытка неудачная, то дается всего один шанс на повтор. Если повтор неверный — генерируется новая последовательность, записывается время следующего срабатывания, количество попыток. Если запрос будет до снятия блокировки, то в ответ придет тишина.

Я это не реализовывал, потому что потерялся бы смысл демонстрации.

Что мешает имитировать каждый раз уникальность бота, просто не сохраняя сессию?
Вот и получается, что зашли 5 ботов с разных ip, с разных сессий, ввели данные, и с первой попытки одному из них повезёт.
Почему 5? В демке вроде 8 полей. Ну пусть 5.
Одно поле можно расставить одним способом.
Два поля — двумя: 1-2, 2-1
Три поля 6ю способами: 1-2-3, 2-1-3, 1-3-2, 2-3-1, 3-2-1, 3-1-2
Для 5ти полей количество перестановок равно 120. Проверяйте сами :)
Таким образом вероятность угадать 0,8%.
если меня как пользователя заставят для регистрации тыкать по кнопке 120 раз — я к вам не пойду
Вы путаете количество вариантов, которые можно нагенерировать при помощи перестановки полей, и, непосредственно, само количество перестановок, которое предлагается пользователю
количество перестановок, предложенных пользователю == количество перестановок, предложенных роботу
При этом нужно за один раз угадать со 100% вероятностью правильный вариант
А как же вариант для дальтоников?
Придумайте решение самостоятельно, это же так занятно!
Что предлагаете? как вариант вижу только кольца с разрывами, как у офтальмолога
а что вы скажете по поводу разных геометрических фигур?
Скажем половинить квадрат — на два вертикальных прямоугольника, круг — на два полукруга, ромб на два прямоугольника и тпх.
И по половинке в текст и к соответствующему полю.
А для тех, кто не страдает нарушением цветовосприятия оставить оные фигуры цветными.
Вполне. Можно делать как на купюрах. Геометрическая фигура разрезана на запчасти, и нужно добиться складывания в целую фигуру.
ну это более «человеческий» вариант, только боюс как бы роботы не скринили картинку и не сканировали на предмет совпадения фигура в заданной области.
лично мне сильней всего понравилась такая капча — даётся несколько картинок, одна из них к примеру со скамейкой, а другая с оленем.
вопрос для юзера такой — отметьте картинку с живым существом. для конечного юзера удобно, а для бота взломать такую капчу проблематично. а старые методы типа «введите надпись с картинки» мне кажется себя понемногу изживают.
Не факт. Чуть выше я описывал примитивнейший способ взлома таких капчей. В случае с оленем и скамейкой, это можно свести к одному пикселю вообще.
Вероятность угадать 50%. Считайте, что нет защиты…
я не совсем верно описал. вот более полное описание — есть 9 картинок, надо выбрать 2 из них, соответствующие описанию живой природы. конечно, если выбирать из 2 картинок одну, то вероятность получается 50 процентов — это слишком много. откуда я взял описание любимой мной капчи — www.kyivstar.net/ru/sms/ это сайт отправки смс.
Вы забываете про количество кликов, которые нужно сделать пользователю для регистрации.
Каждый последующий клик повышает цену регистрации пользователя на ~10%

Наиболее приемлимый (т.е. эффективный и рентабельный на текущий момент) способ — регистрация с несложной капчей + активация аккаунта по e-mail.

Дело в том, что форма регистрации может быть сделана такой, что юзер на сервисе будет стоить 3$ (как на игровых сайтах, например), а может регистрация быть сделана со 100 методами защиты, и стоить один юзер будет 8$ — потому что половина юзеров будет просто закрывать страницу, где регистрация будет слишком сложной.
На данном ресурсе я несколько раз обновляю капчу, чтобы стопроцентно гарантировать ее прохождение с первого раза. Вопрос, чем отличается это от приведенного мной варианта?
Тем, что тут просто неудачная реализация капчи. Если её сделать нормальной, не нужно будет кликать много раз, и ваша реализация теряет свою привлекательность.
А что есть «нормальная капча»? Какой должна быть капча, чтобы считалась нормальной?
Такой, что бы люди её вводили без ошибок с первого раза. Например, как капча в вебманях при платеже. Да, некий % ботов прорвется, но это разумное допущение.
А ещё есть сервис по аренде бангладешцев и индонезийцев для разгадывания капч.
1000 капч — за 1 доллар. Всё автоматизировано.
Я всё к тому, веду, что нельзя делать капчи в ущерб удобству. Боты или люди-боты все равно зарегятся, и лучше иметь эффективные инструменты для модерации, чем устраивать полосу испытаний для желающего зарегистрироваться.
Какова вероятность совпадения? Если более 20-ти кликов — пользователь может уйти раньше. Если примерно 20, то 5% ботов совершенно спокойно зарегистрируются с первого раза, даже не заметив вашу капчу.
Я ставил 5 ложных массивов, один из шести.
Поясните механизм, по которому 5% ботов смогут совершенно спокойно зарегистрироваться, при условии, что у него всего одна неправильная попытка, и следующую он сможет произвести через все большее время.
Частенько вываливается прямое расположение полей для ввода…
Если бы убрать вообще возможность «прямой расстановки» полей, мне кажется было бы более правильно
А еще есть такая капча, в которой нужно перевернуть фигурки мышкой что бы они все встали ровно.
Девушка на фотке горячая! :)
На понимание и клики я потратил больше времени, чем потратил бы на ввод трех цифр с картинки. К сожалению, ваш метод неудобен как и большинство других.
Кто эта милая девушка на фото справа?
Это работа фотографа Franz Steiner. Крутой дядька.
Остальные и making-of можно посмотреть здесь: www.blutsbrueder-design.com/
Сколь не воевал с этой проблемой — засилье спаммеров решалось системой инвайтов.
В иных случаях — honeypot не подводит.
Может я не прав, но помоему эту систему проще поломать чем класическую капчу. Посидеть за дебагером немного, найти ваш «массив» по которому подставляются картинки. Картинки проще распознать. Скачать все картинки, распознать, найти одинаковые, и сопоставить картинкам нужный элемент массива…
Для начала поковыряйтесь в коде. :)

У вас есть варианты на выбор
A, C, D, B | B, D, A, C | D, A, B, C | D, B, A, C
Какой из них правильный?
Я же говорю, надо исходить не из этого массива а из картинок, из массива этого идет подстановка стилей с картинками, надо найти совпадающие картинки и уже от них плясать а не сразу тупо влоб выбирать правильный вариант
В демонстрации используется всего один вопрос. Можно задачки разными делать.
Безусловно можно, но если я раз посижу пару дней за дебагером, я узнаю связь между картинками и массивом, дальнейшие изменения будут проще.
Но то все теория, самое главное что мне не нравится, это что надо перед тем как запостить чета, кучу раз поклацать «обновить» :) морально напрягает.
Лично я и так клацаю, потому что напрягать мозг, чтобы угадывать сомнительные символы, нет никакого желания.
Sign up to leave a comment.

Articles