войти зарегистрироваться

Ломаем капчу

Гуляя по просторам интернета, зашёл на один высокопосещаемый древний сайт рунета. Для того, чтобы скачать файлик с этого сайта, нужно угадать вот такую капчу:
image
В очередной раз видя картинку с цифрами — решился. В голове уже давно проносились мысли, сломать какую-нибудь капчу :)

Ставлю себе задачу: Написать скрипт, который будет расшифровывать показанную капчу и выплевывать драгоценные циферки.

Название сайта специально не привожу — сами догадаетесь :)

Итак, поехали!



Анализируем картинку


Для начала надо просмотреть как можно больше таких капч, чтобы выявить сходства/различия, какие-то закономерности. Для этих целей я скачал порядка 50 капч. Среди них можно выбрать основные, которые содержат максимум различий:

image   image   image   image   image

Вообще люблю всматриваться в числа, так как в своё время много времени посвятил изучению математики :)

Рассматриваем, и понимаем:
  • картинка черно-белая, в формате gif
  • размер картинки может меняться, но цифры всегда стоят по центру (правда вертикально они выравнены не очень по центру)
  • используется градиент, его направление может меняться в 2 стороны
  • кроме градиента есть, "угловой градиент" (так я его обозвал, не пинайте :) ), тот который идёт из угла под углом 45 (ещё раз не пинайте :) ) это просто линия-диагональ, в моём понимании
  • всего я выявил 6 разных шрифтов написания (точнее 3, другие 3 являются их наклонными версиями)
  • пиксели всех цифр не темнее цвета #606060, но не одного цвета
  • цифр 3-5 в капче, высотой не выше 14px

Ищем решение


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

Пришёл к такому решению:
  • заводим массив с отпечатками
  • обрезаем картинку со всех сторон, лишнее надо выбросить
  • удаляем лишние цвета — это градиент и угловой градиент
  • проходим по всем пикселям слева-направо сверху-вниз, и если цвет пикселя соответствует цвету цифры (>= #606060), то сверяем с отпечатками, со всеми по порядку

Реализация


  1. Готовим отпечатки
    Всего их получается 6 * 10 = 60 штук, их помещаем в массив. Отпечатки я делал по цифрам из капч, для каждого шрифта. Это просто массив строчек, где в каждой строчке буквой "x" отмечен пиксель цифры.

    Например, вот так выглядит цифра 2 первого шрифта:
    image
  2. Открываем картинку
    Это делается просто, через imagecreatefromgif($filename);

  3. Определяем направление градиента
    Надо определить, в какую сторону смотрит градиент, это потребуется в следующих пунктах.
    Это сделать просто, достаточно определить цвет первого пикселя (0, 0)
    $color = imagecolorat($image, 0, 0) < 0x20 ? 'black' : 'white' ;

  4. Вычищаем угловые градиенты
    Здесь нужно почистить угловые линии-градиенты, причём это лучше cделать до обрезания капчи.
    Вот тут как раз нам нужно знать направление градиента, чтобы вычистить с нужной стороны.
    Путём анализа выявляем, что перепад цвета с пикселя (1, 1) на (2, 2) и т.д. не может быть больше #202020.
    Вычистить — это значит закрасить черным цветом, т.к. все цифры у нас не ниже цвета #606060.

    Получаем такую картинку:
    image
    php-код вы можете просмотреть в аттаче (см. ссылку ниже)

  5. Режем капчу
    На этом этапе отрезаем слева и справа по 12px.
    Т.к. высота цифры не выше 14px, то снизу и сверху обрезаем лишнее, в зависимости от высоты всей капчи.

    Получаем:
    image
  6. Чистим градиент
    Со всех сторон всё же остаются лишние полоски градиента. Их надо так же вычистить.
    Проходим сперва сверху-вниз, потом слева-направо, берём цвет полоски, и если она сплошная (длина > 10px) и одного цвета — то считаем что это полоска градиента, и вычищаем её.

    Итого получаем:
    image
    Но в некоторых случаях (~ 5%) всё же могут оставаться вот такие шумы:
    image   image
    Правда они нам всё равно не помешают :) Т.к. их цвет уже не подходит под цвет цифр.

  7. Сверяем с отпечатками
    Проходим по всем пикселям сверху-вниз слева-направо, цвет которых подходит под цвет цифр и сверяем со всеми отпечатками по-порядочку.

Результаты


image

Тестирование


Для тестирования я скачал 200 таких капч, на моём домашнем ПК скрипт разобрал их ~ за 19 секунд.
Это примерно 10 капч в секунду.

Из этих 200 не было выявлено ни одной ошибки, скрипт отлично отработал :)

Итоги


Я написал класс CapCrack, который разбирает капчу.

Если есть желание более подробно разобраться в алгоритме, или протестировать на своём ПК, можете взглянуть на код: cap_crack.zip

На этом успехе я не остановился и решил попробовать написать скрипт для скачки файлов с сайта, в автоматическом режиме, но это уже совсем другая история :) достойная отдельной статьи…

P.S. Это мой первый пост на Хабре, так что прошу строго не судить :)

комментарии (142)

  • раскрыть комментарий
    • Ничего этим не сказано. Можно было написать на С, реализация отличалась бы только на уровне функций для работы с графикой. Автору пришлось бы скачать какой-нибудь libgif и в нем разбиратся. А зачем спрашивается?
      Принципиально не использовать язык Х — просто глупо. Хороший программист должен уметь правильно выбрать инструмент.
      • раскрыть комментарий
        • Ваше пренебрежение языком программирование, показывает, что вы как программист ничтожны — вы просто кодер.
          Для настоящему программиста нет особой разницы на чем писать — на php, бейсике, c/c++, python, ruby или каком-либо еще языке программирования. Он везде напишет хороший код.
          В данном случае автор руководствовался принципом, где быстрее и проще реализовать алгоритм. Да, можно было данный алгоритм реализовать на c++, потратив на это в N раз больше времени — но разве оно стоило того?
          • > Он везде напишет хороший код
            Какие красивые слова. А Вы сами-то на многих языках писали идеальный код? Так легко переключаетесь? В любой момент если надо на любом языке из списка «php, бейсике, c/c++, python, ruby» сбацаете любую задачу?

            Я не защищаю теорию о том что php плох в этой задаче, это-то как раз не соответствует действительности, я ставлю под сомнение утверждение что «для настоящего программиста нет особой разницы на чем писать» — такое может сказать только человек, который никогда не работал в действительно крупных проектах. Всегда есть языки, которые знаешь лучше, и разработка на них выйдет быстрее и качественнее, чем «на любом». Ещё и про «ничтожность» других судите по своим бредовым убеждениям.
            • я считаю, что хороший программист в состоянии выбрать какой язык («инструмент») ему найболее лучше подойдет для решения конкретной задачи. ведь для тривиальной задачи совершенно не нужно подключать навороченный фреймворк, не так ли?
              • Ну это так.
                Но прагматик также подумает, сколько времени займёт у него эта разработка. И если использование фреймворка существенно сократит время разработки, то почему бы и нет? Тут уже надо смотреть, какая задача стоит — достаточно или 10 капч в секунду, или надо миллионы обрабатывать.
            • Я что-то говорил про время?
              Я говорил про составление алгоритма, его реализацию и оформление реализации.
              Эту схему можно хоть блоксхемами сделать, а спроектировать на конкретный язык программирования — не очень сложная задача.

              Как пример, немного утрированный, но можно увелить сложность:
              умножение на 5 можно сделать двумя способами
              1) a = b*5
              2) a = b+b+b+b+b
              Какой бы язык программирования не был — хороший программист выберет первый вариант.
              • В «Ассемблере, не знающем команд умноженья» — только второй :)

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

                Или же a=(b<<2)+b если оптимизировать и переменные у нас целые положительные числа.
                • Ага, если говорить об оптимизации, то я бы тоже сдвинул на 2 бита влево, и потом еще раз прибавил :)
                  Хотя, это пережитки эпохи 8086. Сейчас процессор сам в состоянии (на уровне микрокода) понять, как ему эффективнее сделать ту или иную операцию. Это вам не 86-й, где команда MUL/IMUL могла занимать больше сотни тактов.
            • dfi ваш запрещает вам проповедовать на чем писать ибо вы изначально не можете обладать объективностью
        • Про пост ничего не было. А простая или сложная капча вроде не от языка зависит.
          Куча программистов на похапе говорит лишь о том, что у похапе низкий порог вхождения, поэтому среди похапистов высокая концентрация быдлокодеров. Но если конкретный человек знает пыхпых, то это еще ни о чем не говорит.
          • раскрыть комментарий
            • А сами вы способны такое написать? Или, как всегда, критикуете всё, а сами даже такого написать не можете.
              • раскрыть комментарий
                • >доставляет
                  >таки да
                  • Нечайно отправил. Так вот, там где вы почерпнули этот сленг как раз тонны детей, с которыми можно спорить.
                • Отсюда вывод: у вас «пиписька» маленькая и вы пытаетесь компенсировать недостаток длины здесь.

                  Вообще: мужик сказал — мужик сделал. Может лучше, докажите, если нет — тихо курите в сторонке.
                • ну вы посмотрите на него, словно «Борис хрен попадешь» (с) Snatch
                  автору +1 за статью, я до сих пор борюсь с одной каптчой, но пока не победил :(

                  достали с «доставляет»!
            • Можно посмотреть Вашу нейронную сеть? Я правильно понял, Вы её написали на каком-то другом языке?

              ps: «похапе»? это наречие какое-то? ;)
              • раскрыть комментарий
                • Ясно, думал, реально какие-то наработки есть.
                  • Если я правильно помню курс по нейронным сетям, распознать и классифицировать входные образы, в том числе цифры, как в примере из поста, может двуслойная нейросеть, состоящая из слоя Кохонена и слоя Гроссберга. Кстати, ничего особо сложного.
            • Если вы это расценили как «пост — говно, работа — тоже», то это ваши проблемы. Я вообще не понимаю почему вы сразу отнеслись к нему отрицательно, хотя сами, скорее всего, сам код даже и не глядели.
              Если человек что-то написал, то это само по себе уже заслуживает оценки, и если это что-то не «чятик на дельфи», то я не вижу никакой причина ее занижать.
              • «чятик на дельфи» тоже можно написать очень хорошо.
                • Это вы про QIP? :-D
              • Вы предубеждены по отношению в Delphi? :)

                Я когда-то на нем писал решение подобной задачи — распознавание образа в каком-то роде и решал ее похожими средствами :)

                Кстати, кто-то выше писал про нейронную сеть — система матриц-«отпечатков», предложенная автором — это одна из реализаций нейронной сети и есть :)
              • > Если человек что-то написал, то это само по себе уже заслуживает оценки
                почему же оценка не может быть отрицательной?
            • в написании самой нейросети нет ничего сложного… вся сложность как раз в конвертации исходного изображения в более простое (очищенное от шума и прочего, что и было сделано в этой статье), которое нейросеть сможет прогнать через себя. другими словами методы обработки изображения являются фундаментом для любой нс, которая работает с изображениями, причем нс целесообразно использовать для распознавания рукописного текста, а здесь достаточно того, что было сделано — быстро и относительно просто
            • для вас нейросеть является этолоном сложности задачи? rofl :))
        • При решении этой задачки я не руководствовался тем, какой инструмент лучше бы подошёл… я работал с тем, что было под рукой, что было бы проще понять читателям, и это вовсе не значит что мой любимый язык php, и я только на нём разрабатываю.
          Можно было бы написать код и на Ассемблере. Но зачем?
          Многие бы стали вникать в суть кода? Если здесь самое интересное — понять алгоритм.

          К слову, в своё время писал системные службы на Ассемблере, под Windows. К примеру одна из сетевых служб сейчас уже N-й год работает в одном из интернет-центров города, и подсчитывает трафик.

          Теперь к Windows`у придерётесь? :)

          Ещё раз повторюст, что целью этого поста было показать как можно обойти типичную капчу, проанализировать алгоритм, а не показать какие-то прелести языка.
        • А Вы не брезгаете писать комментарии на сайте который написан на php?
        • очень глупая позиция Мадам.
        • вы бы еще предложили бы каптчу на асме разбирать. на пхп быстрее и проще… и, ИМХО, нет в нем ничего настолько плохого…
    • Жирный тролль — этим все сказано.
    • Я php люблю так же как и C.
      Просто каждый язык использую в нужном мне месте.

      «php — этим всё сказано» — с вами все ясно.
      • > «php — этим всё сказано» — с вами все ясно.

        Так забавно =) Напомнило:

        «Я так не люблю грубость и грубых людей, что готов набить им морду».
        • «Ненавижу расизм и вонючих ускоглазых» (с)не помню откуда
        • «Я так не люблю грубость и грубых людей, что готов набить им морду».

          Да уж, судя по числу минусов, заработанным odinом — на хабре так поступает большинство. Добрее надо быть(
    • хомячки негодуют :)
      вообще конечно знатный велосипед.
      думается gocr даже без препроцессинга бы справился.
    • А жаль, за мысль отличную от всех остальных слили чувака с хабры, а мог бы ведь еще и что-то полезное написать… Демократия это плохо, но лучше нее все равно ничего нет.
    • а может суть поста в том, что некоторые капчи можно «даже» на php взломать за вечер? ;)
  • Это конечно весьма интересно, но все же эта капча уж очень простая. Вот если бы вы нейросеть написали, которая обучена такие капчи распознавать, то это было бы действительно круто.
    • По секрету скажу, что настоящей целью для меня было — попасть на Хабр. :) Цель выполнил, получил инвайт :)
      Т.к. тема интересна — в следующий раз напишу о взломе капчи посложнее, и на каком-нибудь другом языке.
      • Давно собрался поломать капчу на сайте Теле2 (там тоже простая) правда не из спортивного интереса а чтобы смски себе слать когда сервак падает. http://sms.tele2.ru/controls/ImageCode.aspx Если будет желание, можете потренероваться на ней =)
        • Вы меня извините, но я ее даже сам разобрать не могу :)
        • На статью меня пожалуй не хватит, но так… немножко потренировался.
          Там вроде шрифт один и тот же, только наклон разный и шум мешается.

          От шумов картинку можно почистить медианной фильтрацией.
          Потом бинаризовать с помощью k-средних.
          Выделяем объекты, чтобы определить наклон вычисляем наклон главной оси объекта, например, с наименьшим эксцентриситетом. В зависимости от угла сдвигаем строчки пикселей на сколько надо (понятно, что нецелое число, ну и фиг с ними с погрешностями округления =)
          Ну и потом сравниваем с шаблонами циферок.

          Если захотеть, за вечер можно наваять. Про алгоритмы обработки изображений, которые я упомянул, хорошо написано на английской википедии ;)
      • если бы это был python, очень интересно, может возьмётесь..?
        • возможно :)
        • возьмите и перепишите на своём любимом пайтоне (отдельные тру-программеры могут сделать это на рубионрейлс), там ничего phphardcore нету…

          я один устал от просветленных или есть еще такие?
          • > я один устал от просветленных или есть еще такие?

            да, блин, надо просто меньше реагировать на это =) ясно-понятно, что в подобном «просветлении» ключевую роль играет массовая агитация и пропаганда; при этом, «просветлённые», как правило, весьма поверхностно знают и Python, и Ruby (часто — на уровне мануалов «пишем блог за 15 минут»), и, рассуждают в большей мере о фреймворках, противопоставляя (зачем-то? зачем? :)) — язык.

            «Просветлённым»: главное, попадая под влияние массовой мэйнстримовой идеи, иметь смелость жить своим умом. И, если уж Вы хотите, показать, рассказать об особенностях и достоинствах Python'a/Ruby'и, то и нужно писать именно об этом, а не о том, как «похапе» (блин, какое забавное наречие :)) «уныл» ;)
            • вы будете смеяться, но когда я писал верхний мега-комент, у меня в голове там и крутилось посоветовать автору статьи: «уважаемый автор, не надо статей, дайте им видео-каст 'пишем мега-де-капчер за 15 минут'… и не надо сорцы, надо gem install megadecapcher»
              • > и не надо сорцы, надо gem install megadecapcher»

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

                По идее, плагины (в данном случае, руби-джемы) тоже можно представить частями конструктора (уже сгенерированными за человека), из которой кто-то строит свои системы. И это тоже хорошо. Другой вопрос — качество этих плагинов и знание самого Руби (или даже РубиОнРэйлс) — если этот вопрос тоже не столь важен — это тоже хорошо, человек строит свою систему и достигает цели (а цели разные — кому-то хочется глубоко знать язык, кому-то — закрывать побольше заказов — все цели относительно хороши).
  • перенёс из Песочницы :)
    спасибо за инвайт!
  • Помню, когда-то аналогичным способом ломал капчу сервиса по бесплатным отправкам смс-ок. В результате с помощью скрипта на сервере + миниопера я укладывался в 5 нетариффицируемых килобайт, отправляя смс-ку. Но потом тот сервис прикрыли (оставив возможность посылать только локальные смс-ки в пределах дальнего региона РФ).

    Сейчас, наверное, самый простой и дешевый способ распознавать капчи в поток — это воспользоваться специализированными сервисами, которые позволяют распознавать 1000 капч за 1$
    • Угу. За 1$ семья из 10-ти индусов будет и больше капч распознавать :) Где-то пробегала статья про такой вид бизнеса. Сидят ребята, вводят капчи, получают по меркам своей страны кучу бабла.
  • Интересно и познавательно. Большое спасибо )
  • Отнимаете работу у китайцев :)
    • и у индийцев :)
      • и у русских (такие то же есть =) )
    • Со скоростью 10 каптч в секунду, работы лишились 100 китайцев, если исходить из скорости 1 каптча за 10 секунд =)
      • Однако всегда можно увеличить количество потоков.
  • По алгоритму замечание, можно было упростить, до:

    1) Режем капчу
    На этом этапе отрезаем слева и справа по 12px.
    Т.к. высота цифры не выше 14px, то снизу и сверху обрезаем лишнее, в зависимости от высоты всей капчи.

    2) Идем по полоскам, попиксельно закрашиваячерным, если встречаем резкое (критерий надо вывести) увеличение яркости, то закрашиваем белым.
    В результате останутся только цифры на черном фоне

    3) дальше распознаем, наложением шаблона.

    ЗЫ Так же как вариант, можно применить фильтр — четкие границы (недавно была статья на хабре).
    • Да, в принципе этот алгоритм получился бы проще и понятней. И вообщем-то так я и хотел реализовать.
      Но! Оказалось, что в редких случаях, пиксели практически сливались с градиентом (получаем нечёткие границы). Конечно во многих случаях капча бы распознавалась успешно, но всё же был бы достаточно высокий % когда капча не распозновалась.

      Поэтому и пришлось сначала чистить угловой градиент, и лишь потом обрезать саму капчу.
      • Вы же все равно выбираете шаблон, который в максимальном числе пикселей совпадает с данным. Потеря нескольких пикселей не существенна.
  • Было бы здорово написать пост вокруг и окло вот это капчи:
    • Тогда яндексу придётся новую каптчу себе ставить )
    • А вот тут на помощь приходят китайцы ))
      • Им государство запретило за эту работу брать электроюани, так что теперь только на общественных началах)
    • Ну пара минусов заметны. Хотя, конечно, надо смотреть больше примеров.
    • Поста не надо. Ответ: 787006
    • К счастью, есть mail.ru
      • Я что-то пропустил в деле проверки проиндексированности страниц в Яндексе? Тот же YCCY продолжает работать именно через него. Или минусующие вообще не поняли, при чём тут mail.ru? -)
        • а можно попросить чуток просветить?
          • Не знаю, в каких случаях ещё Яндекс показывает даннуюб CAPTCHA, но он точно показывает её при массовой проверке проиндексированности страниц (даже если поставить запрос 1 ссылки каждые 4-5 секунд). Если у вас сайт с десятками тысяч страниц и вы хотите продавать ссылки (через Сапу или что-то ещё), нужно исключить из списка страницы, не проиндексированные Яндексом. Тут вариантов 2 — или Яндекс.XML (платный) или mail.ru, использующий в качестве своего поискового движка тот же Яндекс, но не требующий ввода CAPTCA при массовых запросах. Программ для проверки много, в том числе YCCYб она как раз может использовать 2 метода провеки через mail.ru
    • я глазами-то не каждый раз считываю ее )
    • Синусоиды идут вдоль прямой и с постоянным шагом, — по этому их распознать не сложно. Белые синусоиды потом снять сложней, ибо есть только отдельные точки, но все равно даже пары цифр достаточно. Ну а дальше распознавание самих цифр — тривиальная задача.
    • habrahabr.ru/blogs/artificial_intelligence/64535/
  • В хорошей статье капчи «протухли».
    Обновите. Очень хочется посмотреть.
    • А еще лучше на какой-нибудь imageshack. Обязательно буду ждать.
      • сделал upd, теперь на imageshack
        • теперь сайт не угадают )
  • молодец, хороший пост
  • А можно использовать «математическую морфологию» для удаления фона. Пример на MATLAB:

    I = imread('cap.png');
    A = imsubtract(I, imopen(I, strel('disk', 2)));
    imwrite(A, 'cap-new.png');
    

    Результат:


    Остается диагональная линия, но ее можно не убирать, она не мешает.
    • в данной капче можно без морфологии, в цикле пробегаются цвета пикселей, где RGB будет больше определенного значения -то место и метим. В свое время так битрикс со своими цветными циферками и буковками палился, там правдо нужно было границу «не больше» для каждого цвета подобрать :) ишрифт у них лежал, так что наготовить масок — было делом получаса.
      Вобще gif это зло для капч, там качество цифр на порядки выше чем у jpg и читать такие капчи легче
  • Интересный подход, но скорее относится к алгоритму распознавания текста в картинке. Взлом капчи — более сложная задача и не обязательно связанная с распознаванием картинки.
    Что будет если чуть-чуть изменить алгоритм формирования капчи?! — скрипт перестанет работать.
    Но в целом понравилось ;)
    • Каждый распознаватель пишется под конкретную капчу. Универсального решения нет.
  • Вы аккуратнее с этим сайтом) если все ломанутся ломать (хм...) его капчу, то одним хорошим древним сайтом рунета может стать меньше)
  • спасибо, интересно
  • раскрыть комментарий
    • Не все присутствующие здесь ходят на лекции
    • Как студент, закончивший первый курс универа, заявляю, что у нас этого не было =)

      зы: на лекции хожу.
    • На лекции не хожу — т.к. не учусь, надоело :)
      Про «корреляционный метод» и «математическую морфологию» слышу впервые.

      Так что по-видимому целью моего поста было — показать каким образом, таким смертным как я, не владеющими этими внеземными технологиями — просто разобрать капчу :)
  • Часто для того, что успешно сосчитать такую капчу без сильных искажений, достаточно сканировать только первых несколько столбцов цифры, а то и просто проверять суммы пискселей каждой цифры. Такие маски занимают куда меньше.
  • Здесь можно куда более дешёвый способ предложить — поставить 30 старейших компов в Либерии, посадить за них 30 местных человек (естественно компы на велотяге!) и за тарелку супа в день они каждый будет выдавать по капче в 10 секунд.

    Т.е. 30 капч в 10 секунд = 3 капчи в секунду.

    Причем алгоритмы пусть хоть заменяются. И можно к тому же это на поток поставить.

    Правда гугл, подлец, требует подтверждения по СМСке, но здесь уже надо привлекать китайцев — их много.

    А вааще, если по теме, то афтар — крайне плохой человек, ибо способствует делу спамеров гребаных. Хоть и из праздного любопытства.
    • > А вааще, если по теме, то афтар — крайне плохой человек, ибо способствует делу спамеров гребаных. Хоть и из праздного любопытства.

      А вот это палка о двух концах. Чем больше будет взламываться простых капч, тем больше будет тех, что у Яндекса. Тем сложней будет их взламывать… до поры до времени — пока не научатся )) Закон щита и меча, одним словом.
  • Для начала — хорошо. Но капчи уж больно просты!
  • Меня поразила как-то давно программа Universal Share Downloader с плагином разпознавания капчи на rapidshare. В то время там стола убийственная капча, в которой надо было ввести буквы, на которых нарисованы кошки, но не собаки. Я сам (глазами в смысле) не всегда мог определить, что именно за существо изображено, а вот распознавалка всё съедала и добавки просила.
    • AFAIK в этом случае распознавание было основано на базе уже распознаных каптч, пополняемых вручную, участниками сети.
  • Автору и всем, не надо выкидывать Алана Тьюринга из аббревиатуры КАПТЧА! )
  • НЛО прилетело и опубликовало эту надпись здесь.
    • По моему это банкрефератов
      • Так вот зачем автору распознавалка-то понадобилась :-D
      • НЛО прилетело и опубликовало эту надпись здесь.
  • Научитесь, пожалуйста, расшифровывать reCaptсha (http://recaptcha.ru/about-recaptcha/), помогите делу оцифровки книг для archive.org ^_^
  • Эту картинку и капчей-то назвать нельзя: свою основную функцию — проверку «человек/машина» она не выполняет
  • Топик напомнил о замечательной капче на школьном портале. habrahabr.ru/blogs/humour/42724/

  • Сломаете? ;)
    • степень в числителе надо было совпадающей с нижней, иначе ответ или 0 или бесконечность, которые можно угадать
      • Слишком просто, понимаю…

        Чуть сложнее, не думаете? :)
        • Это не капча, ее человек прочитать не может.
          • Здравствуйте, робот Auren. Насколько вы позитронны? Гильдия кибернетических организмов готовы вас завербовать!
            • 11100101 10101010 11010011 00100010 01100001 00
              01011001 01001010 00101010 00000101 10100010 11
              • Меня просто заливает румянец.
                Давайте лучше продолжим этот интим в личной конфиденциальной переписке? (шутка)

                Кстати, как видим, работает и фильтрует интеллектуальные организмы :)
              • почему антимат не сработал?!
      • Тут же x -> 0!
    • 4/3?
    • Перевести в текст, и — WolframAlpha сломает ;)
  • интересно, а какой есть альтернативный способ заменить капчу? Например на некоторых блогах встречал такое: «5+2= ?». Насколько этот метод спамоустойчивый, может кто его использует, поделитесь впечатлениями. Спасибо!
    • Этот метод настолько же спамоустойчив, как и другие методы. А при распознавании отдельных знаков (5, +, 2) машине пройти его даже проще, чем человеку, поскольку компьютер считает лучше человека
      • так там эти знаки не в открытом виде хранятся на странице, а примерно так: php echo $mcsp_info['operand1']. ' + '. $mcsp_info['operand2']
        • где — «там»?
        • Это на сервере. А в результирующей html-странице это как раз и будет «2+2».
    • угадать ответ тут проще, где-то 5% вероятности, а это много.
      • вспомнил название этого плагина под WordPress: Math Comment Spam Protection
  • а какие будут мнения про reCaptcha? Или ее тоже уже научились считывать?
    • китайцы, индийцы и русские — никакая капча, даже рекапча не устоит
      • Там хоть книжки отцифровывать помогают, причём за чужой счёт. Гениальное решение. =)
  • Кстати, «древний сайт рунета» — это bankreferatov.ru, насколько я понимаю.
  • хороший подход, мне понравилось =)
  • Не зря гугл перешел от каптч на отправку кода на SMS.
    Похоже что нужен интернет с надежной аутентификацией пользователей, тогда и каптчи будут не нужны. На самом деле достало уже вводить их, пихают везде, а толк от них только на некотрых сайтах.
    • В гугле капчи всё равно остались. SMS кажется только на регистрации.
      Иначе можно было бы принять смску и спамить, парсить, досить…
  • прикольно, у самого постоянно рука поднимается ломать подобные штуки))
  • может быть я плохо умею искать или мало кто об этом пишет, но нигде не встречал подобного.
    А сам я даже и не задумывался на этим. Думал, что анализ графики — слишком сложное дело и явно не для пхп.
    Большое спасибо!
    • Анализ графики и работа с изображениями — это довольно большая часть PHP)
      Просто вы видимо самобучались этому языку?)
      • Так точно!

        Работу с изображениями изучал, а вот анализ проспал )))
  • а как вам по сложности такая капча:
    ?
    • кстатии не очень сложна… заметьте линии цифр более вертикальны чем остальные, потом исправляем перспективу и проганяем через нейронную сеть… в теории реально её распознать
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.