О каптчах и СЮРПРИЗ для вас!

вторник, 30 июня 2009 г.
Как вы знаете, я активно сейчас пользуюсь AllSubmitter'ом (решил уйти немного в СЕО). При этом я "по ходу" переделал их каталог (читать тут). Но сегодня о другом.
При сабмите сайтов в тысячи каталогов вам естественно прийдется сталкиваться с "защитой от ботов" - каптчами. Почему в кавычках? Да потому что эта защита уже давненько не работает. Многое даже сам AllSubmitter ломает. А что не ломает - на помощь прийдет уже довольно известная ANTICAPTCHA - http://ac-service.info/
Обезьянки всего за 0,001 доллар разгадают за вас каптчу. Вот инвайт для затравочки:
a7cc7cbd4f

Нужно больше? Обращайтесь в комменты.

Но я даже не об этом хотел с вами поговорить. Дело в том, что маразм креатива по каптчам дошел до того, что их просто невозможно ввести.
Вот пример каптчи от Google:
не сразу то и введешь, правда? Люди страдают (честные), а свою функцию каптча уже не выполняет.
А теперь ВНИМАНИЕ! - представляю вам мой труд (заняло 4 часа) myWebNotCaptcha.
Да - скрипт НЕ каптчи. Проверка на человечность, но немного другим способом. Антикаптче не по зубам.
Не буду долго писать - смотрите сами на сайте NotCaptcha.

Кому лень кликнуть - опишу:
выводится 3 символа (картинкой) и юзеру надо с помощью ползунков установить символы вертикально. И все!
Над чем-то подобным работает сейчас Гугл (читал недавно). Ну пусть работают, а я быстренько написал.
Вопрос автоспама на сайтах решен =) пользуйтесь на здоровье.
Что скажете?

16 коммент.:

Andrey K. комментирует...

Круто придумано))))

Но подумай над набором символов. Некоторые непонятно как ставить - 6 или 9, u или n, думаю и еще есть...

Можно, наверное использовать однозначные символы типа смайликов))))

Jema комментирует...

Продумано. Такие символы исключены. О смайлах и других картинках думаю в следующей версии.
Вы тестируйте, пишите как улучшить.

03ermaN комментирует...

Фигня, если капча станет распространённой её легко сломают.

Тут проблема в фиксированном количестве вариантов и картинок.
Обучить ломать такое - дело нехитрое.
Другое дело, если юзать этот скриптец небольшой компашкой - то да, ломать никто не будет.

Jema комментирует...

03ermaN, глупости говоришь. Вариантов ввода при 3-х картинках - 512. Это не так много и не так мало.
По поводу взлома, я это естественно придусмотрел и некоторые вещи закодировал (потратил на это дополнительное время).
Если тебе нужна больше защита, увеличивай количество картинок - но это опять уход в маразм и неудобство пользователя.

xekcc комментирует...

Вместо символов лучше использовать картинки, типа машинка, человечек, дерево и т.д.

Jema комментирует...

xekcc, согласен.
Эту версию я выпустил очень быстро - чтобы понять на сколько нужна, как "пойдет".
Если всем понравится - конечно буду улучшать, и будут прикольные картинки вместо символов.

bomjek комментирует...

А при выключенном JavaScript не работает, следовательно, пользователи Opera mini и те, у кого он специально отключен - не смогут оставить коммент...

Если бы Вы смогли сделать без JS, то тогда было бы круто.

Как вариант предлагаю дополнительное окно, в котором можно выбрать один из 9 вариантов для каждого символа.

Окно стоит в тегах noscript и появляется только при отключенном JS.

Могу ли я использовать этот скрипт в собственном сервисе?

С уважением, Екатеринодарский Бомж.

Jema комментирует...

bomjek, отличный совет - сделаю.
Использовать конечно можно.

03ermaN комментирует...

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

Твоя капча очень простая.
Есть набор правильных картинок N штук.
Есть три символа в капче. Но возьмем M - [3..10] или насколько вебмастеру хватит смелости сделать.

Итак, все эти M символов разделены - это первый минус твойей капчи.
Кроме того, картинки неизменны - это второй минус твоей капчи.

Описываю алгоритм:
1. Сохраняем все возможные картинки из твоей капчи. (сделать надо один раз)

2. Заходим на страницу получаем M символов капчи, начинаем вертеть буковку.

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

То есть за максимум 8 * N операций мы гарантировано нашли первую букву (или картинку). 8 раз крутим и для каждого раза делаем N сравнений.

4. Повторить M раз (кол-во букв в капче) и получить ответ. Причём 100% верный.

То есть сложность распознавания твоей капчи 8*N*M - что по сути ваще легко :)

Гуглёвая капча потому и сложная, потому что там искажение идёт и нет фиксированного набора символов, каждая буква искажается + нету точного разделения 1, 2, 3 и тд буква. Там автоматически не определить где кончается одна и начинается другая буковка.

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

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

Максим Соколов комментирует...

Дай еще инвайтик

Jema комментирует...

03ermaN, алфавитов сейчас 22 штуки, но они как-то неразличимы в таком размере, а вообще придусмотрены, так что их хоть 100 можно сделать (подключаются автоматом, кому надо - флаг в руки).
100% надо делать не символы, а картинки - чтобы различия были в наборах.

Максим Соколов, инвайт:
e91998b020

Андрей Роговский комментирует...

Идея не очень
Лучше сделать так
5 картинок:
Груша
Яблоко
Мячи
Арбуз
Киви

И вопрос - укажи лишнюю картинку
:)

Jema комментирует...

Андрей Роговский, для этого уже нужен определенный уровень IQ
Мне качется поставить предметы "на ноги" проще чем определить лишнее. Да и перебор в этом варианте получается проще.

Serj комментирует...

А можно и мне инвайт для ac-service.info

Jema комментирует...

Serj, бери тот что чуть выше, его еще не использовали.

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

Зелёный Керчив комментирует...

Сломать не сложно, ты ведь понимаешь что скрипту даже не надо будет что то вертеть - просто отойслать методом POST.
Но у тебя там мешанина жс, так что идея класная) Тока крутить не так то удобно