Распознавание капчи бесплатно: Лучшие сервисы автоматического распознавания капчи для приложений

Содержание

Самые удобные сервисы для распознания капчи – Лайфхакер

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

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

Существуют дорогие программы типа OCR, которые отлично справляются с поставленной задачей. Но, согласитесь, кому хочется тратить кучу денег для того чтобы распознать картинки. Поскольку безвыходных ситуаций не бывает, решение находится и в этом случае – бесплатный онлайн-сервис, причем, стоит заметить, что он такой не один. Ниже рассмотрим подробнее имеющиеся варианты.

Содержание

  • 1 Критерии выбора программы для распознавания капчей
  • 2 Перечень бесплатных программ для обхода капч и их отличия

Критерии выбора программы для распознавания капчей

nabor kapchi v ru kapcha 1 - Самые удобные сервисы для распознания капчиЕсли вы занимаетесь какой-либо деятельностью, которая требует постоянного распознавания кодов, тогда есть смысл приобрести дорогой вариант программы, в случае, когда осуществлять рассматриваемый процесс приходится не так часто, не стоит выбрасывать крупную сумму денежных средств, для такого дела бесплатный сервис, воспользоваться которым не составит труда.

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

Для того чтобы сделать правильный выбор из такого многообразия программ, необходимо учитывать следующие аспекты:

  • в первую очередь, выбранный вами сервис в обязательном порядке должен быть полностью бесплатным. Этот критерий самый важный, так что смотрите, чтобы никаких ограничений на этот счет не было;
  • выбранный сервис должен уметь «угадывать» текст на русском языке, без этого критерия, у вас вряд ли получится сделать процесс ввода капч автоматическим;
  • количество капчи, которые можно определить автоматически, должно быть неограниченным.

Смотрите видео – Как включить распознавание капчи через antigate, rucaptcha, captcha24, captchabot на DelphiXE5

Заработок 💰 онлайн на вводе капчиВсё, что вам нужно — это правильно ввести текст с картинки (с капчи).

Вы получаете деньги 💵 за каждый ввод капчи.

Зарегистрироваться>>>

Перечень бесплатных программ для обхода капч и их отличия

Итак, начнем рассмотрение имеющихся бесплатных вариантов, на очереди онлайн сервис Google Диск. Для того чтобы воспользоваться рассматриваемой программой, необходимо будет зарегистрироваться, такой ход событий ожидает пользователя практически во всех сервисах аналогичного назначения. В том случае. Если вы когда-либо уже создавали. К примеру, блог на blogspot, тогда регистрация вам в данном случае не понадобится. Здесь возможно автоматический ввод такой капчи: PDF, JPG, PNG и GIF. Необходимо отметить, что объем файлов для распознания должен быть не больше 2-3 Мб.

Онлайн-сервис OCR Convert. Здесь регистрации пользователю не понадобится. Форматы капчи, которые поддерживаются, следующие: JPEG, GIF, BMP. Нужно отметить, что сохраненные файлы имеют вид URL ссылки, расширение которых в формате TXT. Здесь пользователь сможет одновременно поставить на загрузку 5-7 документов.

Сервис i2OCR.  Для того чтобы распознать капчи, необходимо для начала зарегистрироваться. Одновременно загруженных файлов и документов может быть не больше 10. Пользоваться данным сервисом удобно и просто. Форматы, которые он распознает следующие: GIF, PBM, PGM, PPM.

Тестируем универсальную распознавалку CAPTCHA — «Хакер»

Содержание статьи

Есть разные способы для обхода CAPTCHA, которыми защищены сайты. Во-первых, существуют специальные сервисы, которые используют дешевый ручной труд и буквально за $1 предлагают решить 1000 капч. В качестве альтернативы можно попробовать написать интеллектуальную систему, которая по определенным алгоритмам будет сама выполнять распознавание. Последнее теперь можно реализовать с помощью специальной утилиты.

 

Решить CAPTCHA

Распознавание CAPTCHA — задача чаще всего нетривиальная. На изображение необходимо накладывать массу различных фильтров, чтобы убрать искажения и помехи, которыми разработчики желают укрепить стойкость защиты. Зачастую приходится реализовывать обучаемую систему на основе нейронные сетей (это, к слову, не так сложно, как может показаться), чтобы добиться приемлемого результата по автоматизированному решению капч. Чтобы понять, о чем я говорю, лучше поднять архив и прочитать замечательные статьи «Взлом CAPTCHA: теория и практика. Разбираемся, как ломают капчи» и «Подсмотрим и распознаем. Взлом Captcha-фильтров» из #135 и #126 номеров соответственно. Сегодня же я хочу рассказать тебе о разработке TesserCap, которую автор называет универсальной решалкой CAPTCHA. Любопытная штука, как ни крути.

Схема анализа CAPTCHA-изображений с помощью TesserCap

 

Первый взгляд на TesserCap

Что сделал автор программы? Он посмотрел, как обычно подходят к проблеме автоматизированного решения CAPTCHA и попробовал обобщить этот опыт в одном инструменте. Автор заметил, что для удаления шумов с изображения, то есть решения самой сложной задачи при распознавании капч, чаще всего применяются одни и те же фильтры. Получается, что если реализовать удобный инструмент, позволяющий без сложных математических преобразований накладывать фильтры на изображения, и совместить его с OCR-системой для распознавания текста, то можно получить вполне работоспособную программу. Это, собственно, и сделал Гурсев Сингх Калра из компании McAfee. Зачем это было нужно? Автор утилиты решил таким образом проверить, насколько безопасны капчи крупных ресурсов. Для тестирования были выбраны те интернет-сайты, которые являются самыми посещаемыми по версии известного сервиса статистики. Кандидатами на участие в тестировании стали такие монстры, как Wikipedia, eBay, а также провайдер капч reCaptcha.

Если рассматривать в общих чертах принцип функционирования программы, то он достаточно прост. Исходная капча поступает в систему предварительной обработки изображений, очищающей капчу от всяких шумов и искажений и по конвейеру передающей полученное изображение OCR-системе, которая старается распознать текст на нем. TesserCap имеет интерактивный графический интерфейс и обладает следующими свойствами:

  1. Имеет универсальную систему предварительной обработки изображений, которую можно настроить для каждой отдельной капчи.
  2. Включает в себя систему распознавания Tesseract , которая извлекает текст из предварительно проанализированного и подготовленного CAPTCHA-изображения.
  3. Поддерживает использование различных кодировок в системе распознавания.

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

Предварительная обработка изображений и извлечение
текста из капчи

 

About

Мы не могли не сказать хотя бы пары слов об авторе замечательной утилиты TesserCap. Его зовут Гурсев Сингх Калра. Он работает главным консультантом в подразделении профессиональных услуг Foundstone, которое входит в состав компании McAfee. Гурсев выступал на таких конференциях, как ToorCon, NullCon и ClubHack. Является автором инструментов TesserCap и SSLSmart. Помимо этого, разработал несколько инструментов для внутренних нужд компании. Любимые языки программирования — Ruby, Ruby on Rails и C#. Подразделение профессиональных услуг Foundstone®, в котором он трудится, предлагает организациям экспертные услуги и обучение, обеспечивает постоянную и действенную защиту их активов от самых серьезных угроз. Команда подразделения профессиональных услуг состоит из признанных экспертов в области безопасности и разработчиков, имеющих богатый опыт сотрудничества с международными корпорациями и государственными

 

Интерфейс. Вкладка Main

После запуска программы перед нами предстает окно с тремя вкладками: Main, Options, Image Preprocessing. Основная вкладка содержит элементы управления, которые используются для запуска и остановки теста CAPTCHA-изображения, формирования статистики теста (сколько отгадано, а сколько нет), навигации и выбора изображения для предварительной обработки. В поле для ввода URL-адреса (элемент управления № 1) должен быть указан точный URL-адрес, который веб-приложение использует для извлечения капч. URL-адрес можно получить следующим образом: кликнуть в правой части CAPTCHA-изображения, скопировать или просмотреть код страницы и извлечь URL-адрес из атрибута src тега изображения . Например, в случае с xakep.ru это адрес www.xakep.ru/common/rateit/captcha.asp?name=xakep.ru. Рядом со строкой адреса находится элемент, задающий количество капч, которые нужно загрузить для тестирования. Так как приложение может одновременно показывать только 12 изображений, в нем предусмотрены элементы управления для постраничного пролистывания загруженных капч. Таким образом, при масштабном тестировании мы сможем пролистывать загруженные капчи и просматривать результаты их распознавания. Кнопки Start и Stop запускают и останавливают тестирование соответственно. После тестирования нужно оценить результаты распознавания изображений, отметив каждый из них как корректный или некорректный. Ну и последняя, наиболее значимая функция служит для передачи любого изображения в систему предварительной обработки, в которой задается фильтр, удаляющий с изображения шумы и искажения. Чтобы передать картинку в систему предварительной обработки, надо щелкнуть на требуемом изображении правой кнопкой мыши и в контекстном меню выбрать пункт Send To Image Preprocessor.

 

Интерфейс. Вкладка Options

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

Теперь о каждой опции поподробней. Прежде всего, можно выбрать OCR-систему. По умолчанию доступна только одна — Tesseract-ORC, так что заморачиваться с выбором тут не придется. Еще одна очень интересная возможность программы — выбор диапазона символов. Возьмем, например, капчу с xakep.ru — видно, что она не содержит ни одной буквы, а состоит только из цифр. Так зачем нам лишние символы, которые только увеличат вероятность некорректного распознавания? Конечно, они нам ни к чему, поэтому при тестировании капчи xakep.ru лучше указать, что она содержит одни цифры: Numerics. Но что если выбрать Upper Case? Сможет ли программа распознать капчу, состоящую из заглавных букв любого языка? Нет, не сможет. Программа берет список символов, используемых для распознавания, из конфигурационных файлов, находящихся в \Program Files\Foundstone Free Tools\TesserCap 1.0\tessdata\configs. Поясню на примере: если мы выбрали опции Numerics и Lower Case, то программа обратится к файлу lowernumeric, начинающемуся с параметра tesseditcharwhitelist. За ним следует список символов, которые будут использоваться для решения капчи. По умолчанию в файлах содержатся только буквы латинского алфавита, так что для распознавания кириллицы надо заменить или дополнить список символов.

Теперь немного о том, для чего нужно поле Http Request Headers. Например, на некоторых веб-сайтах нужно залогиниться, для того чтобы увидеть капчу. Чтобы TesserCap смогла получить доступ к капче, программе необходимо передать в запросе HTTP такие заголовки, как Accept, Cookie и Referrer и т. д. Используя веб-прокси (Fiddler, Burp, Charles, WebScarab, Paros и т. д.), можно перехватить посылаемые заголовки запроса и ввести их в поле ввода Http Request Headers. Еще одна опция, которая наверняка пригодится, — это Follow Redirects. Дело в том, что TesserCap по умолчанию не следует переадресации. Если тестовый URL-адрес должен следовать переадресации для получения изображения, нужно выбрать эту опцию.

Ну и осталась последняя опция, включающая/отключающая механизм предварительной обработки изображений, который мы рассмотрим далее. По умолчанию предварительная обработка изображений отключена. Пользователи сначала настраивают фильтры предварительной обработки изображений согласно тестируемым CAPTCHA-изображениям и затем активируют этот модуль. Все CAPTCHA-изображения, загружаемые после включения опции Enable Image Preprocessing, проходят предварительную обработку и уже затем передаются в OCR-систему Tesseract для извлечения текста.

 

Интерфейс. Вкладка Image Preprocessing

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

Этап 1. Инверсия цвета

На данном этапе инвертируются цвета пикселей для CAPTCHA-изображений. Код, представленный ниже, демонстрирует, как это происходит:

for(each pixel in CAPTCHA)
{
    if (invertRed is true)
        new red = 255 – current red
    if (invertBlue is true)
        new blue = 255 – current blue
    if (invertGreen is true)
        new green = 255 – current green
}

Инверсия одного или нескольких цветов часто открывает новые возможности для проверки тестируемого CAPTCHA-изображения.

Этап 2. Изменение цвета

На данном шаге можно изменить цветовые компоненты для всех пикселей изображения. Каждое числовое поле может содержать 257 (от  1 до 255) возможных значений. Для RGB-компонентов каждого пикселя в зависимости от значения в поле выполняются следующие действия:

  1. Если значение равно -1, соответствующий цветовой компонент не меняется.
  2. Если значение не равно -1, все найденные компоненты указанного цвета (красный, зеленый или синий) меняются в соответствии с введенным в поля значением. Значение 0 удаляет компонент, значение 255 устанавливает его максимальную интенсивность и т. д.

Этап 3. Градация серого (Шкала яркости)

На третьем этапе все изображения конвертируются в изображения в градациях серого. Это единственный обязательный этап преобразования изображений, который нельзя пропустить. В зависимости от выбранной кнопки выполняется одно из следующих действий, связанных с цветовой составляющей каждого пикселя:

  1. Average -> (Red + Green + Blue)/3.
  2. Human -> (0.21 * Red + 0.71 * Green + 0.07 * Blue).
  3. Average of minimum and maximum color components -> (Minimum (Red + Green + Blue) + Maximum (Red + Green + Blue))/2.
  4. Minimum -> Minimum (Red + Green + Blue).
  5. Maximum -> Maximum (Red + Green + Blue).

В зависимости от интенсивности и распределения цветовой составляющей CAPTCHA любой из этих фильтров может улучшить извлекаемое изображение для дальнейшей обработки.

Изменение помех при изменении различных диапазонов цветового значения пикселей в сторону белого или черного

Этап 4. Сглаживание и резкость

Чтобы усложнить извлечение текста из CAPTCHA-изображений, в них добавляют шум в форме однопиксельных или многопиксельных точек, посторонних линий и пространственных искажений. При сглаживании изображения возрастает случайный шум, для устранения которого потом используются фильтры Bucket или Cutoff. В числовом поле Passes следует указать, сколько раз нужно применить соответствующую маску изображения перед переходом на следующий этап. Давай рассмотрим компоненты фильтра для сглаживания и повышения резкости. Доступны два типа масок изображения:

  1. Фиксированные маски. По умолчанию TesserCap имеет шесть наиболее популярных масок изображения. Эти маски могут сглаживать изображение или повышать резкость (преобразование Лапласа). Изменения отображаются сразу же после выбора маски с помощью соответствующих кнопок.
  2. Пользовательские маски изображения. Пользователь также может настроить пользовательские маски обработки изображений, вводя значения в числовые поля и нажимая кнопку Save Mask. если сумма коэффициентов в этих окошках меньше нуля, выдается ошибка и маска не применяется. При выборе фиксированной маски кнопку Save Mask использовать не требуется.

Этап 5. Вводим оттенки серого

На этом этапе обработки изображения его пиксели могут быть окрашены в широкий диапазон оттенков серого. Этот фильтр отображает распределение градаций серого в 20 бакетах (bucket)/диапазонах. Процент пикселей, окрашенных в оттенки серого в диапазоне от 0 до 12, указан в бакете (bucket) 0, процент пикселей, окрашенных в оттенки серого в диапазоне от 13 до 25, — в бакете (bucket) 1 и т. д. Пользователь может выбрать одно из следующих действий для каждого диапазона значений, соответствующих оттенкам серого:

  1. Оставить без изменения (Leave As Is).
  2. Заменить белым (White).
  3. Заменить черным (Black).

Благодаря этим опциям можно контролировать различные диапазоны оттенков серого, а также сокращать/удалять шум путем, меняя оттенки серого в сторону белого или черного.

Этап 6. Настройка отсечения (cutoff)

Этот фильтр строит график зависимости значения уровня серого от частоты встречаемости и предлагает выбрать отсечение. Принцип работы отсекающего фильтра показан ниже в псевдокоде:

if (pixel’s grayscale value <= Cutoff)
    pixel grayscale value = (0 OR 255) -> в зависимости, от того какая опция выбрана (<= или => : Set Every Pixel with value <=/=> Threshold to 0. Remaining to 255)

График показывает подробное распределение пикселей CAPTCHA по цветам и помогает удалить помехи с помощью отсечения значений уровня серого.

Этап 7: Обтесывание (chopping)

После применения сглаживающего, отсекающего, bucket- и других фильтров CAPTCHA-изображения все еще могут быть зашумлены однопиксельными или многопиксельными точками, посторонними линиями и пространственными искажениями. Принцип работы фильтра обтесывания заключается в следующем: если количество смежных пикселей, окрашенных в данный оттенок серого, меньше величины в числовом поле, фильтр обтесывания присваивает им значение 0 (черный) или 255 (белый) по выбору пользователя. При этом CAPTCHA анализируется как в горизонтальном, так и в вертикальном направлении.

Этап 8: Изменение ширины границы

Как утверждает автор утилиты, в ходе первоначальных исследований и разработки TesserCap он неоднократно отмечал, что, когда CAPTCHA-изображения имеют толстую граничную линию и ее цвет отличается от основного фона CAPTCHA, некоторые системы OCR не могут распознать текст. Данный фильтр предназначен для обработки граничных линий и их изменения. Граничные линии с шириной, которая указана в числовом поле, окрашиваются в черный или белый по выбору пользователя.

Этап 9: Инверсия серого оттенка

Этот фильтр проходит каждый пиксель и заменяет его значение уровня серого новым, как показано ниже в псевдокоде. Инверсия серого проводится для подгонки изображения под цветовые настройки OCR-системы.

for(each pixel in CAPTCHA)
    new grayscale value = 255 – current grayscale value

Этап 10: Проверка распознавания капчи

Цель данного этапа — передать предварительно обработанное CAPTCHA-изображение OCR-системе для распознавания. Кнопка Solve берет изображение после фильтра инверсии серого, отправляет в OCR-систему для извлечения текста и отображает возвращенный текст в графическом интерфейсе. Если распознанный текст совпадает с текстом на капче, значит, мы правильно задали фильтр для предварительной обработки. Теперь можно перейти на вкладку опций и включить опцию предварительной обработки (Enable Image Preprocessing) для обработки всех последующих загруженных капч.

 

Распознаем капчи

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

Результат анализа капчи xakep.ru с предварительной
обработкой изображений. Судя по результатам, фильтр
подобрать не удалось

Итак, запускаем утилиту и идем на сайт журнала. Видим список свежих новостей, заходим в первую попавшуюся и пролистываем до места, где можно оставить свой комментарий. Ага, коммент так просто не добавить (еще бы, а то бы давно уже всё заспамили) — нужно вводить капчу. Ну что ж, проверим, можно ли это автоматизировать. Копируем URL картинки и вставляем его в адресную строку TesserCap. Указываем, что нужно загрузить 12 капч, и нажимаем Start. Программа послушно загрузила 12 картинок и попыталась их распознать. К сожалению, все капчи оказались либо не распознаны, о чем свидетельствует надпись -Failed- под ними, либо распознаны неправильно. В общем, неудивительно, так как посторонние шумы и искажения не были удалены. Этим мы сейчас и займемся. Жмем правой кнопкой мыши на одну из 12 загруженных картинок и отправляем ее в систему предварительной обработки (Send To Image Preprocessor). Внимательно рассмотрев все 12 капч, видим, что они содержат только цифры, поэтому идем на вкладку опций и указываем, что распознавать нужно только цифры (Character Set = Numerics). Теперь можно переходить на вкладку Image Preprocessing для настройки фильтров. Сразу скажу, что поигравшись с первыми тремя фильтрами («Инверсия цвета», «Изменение цвета», «Градация серого») я не увидел никакого положительного эффекта, поэтому оставил там всё по дефолту. Я выбрал маску Smooth Mask 2 и установил количество проходов равным одному. Фильтр Grayscale buckets я пропустил и перешел сразу к настройке отсечения. Выбрал значение 154 и указал, что те пиксели, которых меньше, нужно установить в 0, а те, которых больше, в 255. Чтобы избавиться от оставшихся точек, включил chopping и изменил ширину границы до 10. Последний фильтр включать не было смысла, поэтому я сразу нажал на Solve.

На капче у меня было число 714945, но программа распознала его как 711435. Это, как видишь, совершенно неверно. В конечном итоге, как я ни бился, нормально распознать капчу у меня так и не получилось. Пришлось экспериментировать с pastebin.com, которые без проблем удалось распознать. Но если ты окажешься усидчивее и терпеливее и сумеешь получить корректное распознавание капч с xakep.ru, то сразу заходи на вкладку опций и включай предварительную обработку изображений (Enable Image Preprocessing). Затем переходи на Main и, кликнув на Start, загружай свежую порцию капч, которые теперь будут предварительно обрабатываться твоим фильтром. После того, как программа отработает, отметь корректно/некорректно распознанные капчи (кнопки Mark as Correct/Mark as InCorrect). С этого момента можно посматривать сводную статистику по распознаванию с помощью Show Statistics. В общем-то, это своеобразный отчет о защищенности той или иной CAPTCHA. Если стоит вопрос о выборе того или другого решения, то с помощью TesserCap вполне можно провести свое собственное тестирование.

 

Результат проверки CAPTCHA на популярных сайтах

Веб-сайт и доля распознанных капч:

  • Wikipedia > 20–30 %
  • Ebay > 20–30 %
  • reddit.com > 20–30 %
  • CNBC > 50 %
  • foodnetwork.com > 80–90 %
  • dailymail.co.uk > 30 %
  • megaupload.com > 80 %
  • pastebin.com > 70–80 %
  • cavenue.com > 80 %

 

Заключение

CAPTCHA-изображения являются одним из самых эффективных механизмов по защите веб-приложений от автоматизированного заполнения форм. Однако слабые капчи смогут защитить от случайных роботов и не устоят перед целенаправленными попытками их решить. Как и криптографические алгоритмы, CAPTCHA-изображения, тщательно протестированные и обеспечивающие высокий уровень безопасности, являются самым лучшим способом защиты. На основе статистики, которую привел автор программы, я выбрал для своих проектов reCaptcha и буду рекомендовать ее всем своим друзьям — она оказалось самой стойкой из протестированных. В любом случае не стоит забывать, что в Сети есть немало сервисов, которые предлагают полуавтоматизированное решение CAPTCHA. Через специальный API ты передаешь сервису изображение, а тот через непродолжительное время возвращает решение. Решает капчу реальный человек (например, из Китая), получая за это свою копеечку. Тут уже никакой защиты нет. 🙂

 

Сервисы распознования капчи

  • Распознование капч с помощью сервисов распознования и встроенными инструментами работает и в бесплатной версии программы
    Human Emulator FREE

  • Цитата Wikipedia
    CAPTCHA
    (от англ. Completely Automated Public Turing test to tell C
    omputers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей) —
    товарный знак Университета Карнеги — Меллона, в котором разработали компьютерный тест, используемый для того,
    чтобы определить, кем является пользователь системы: человеком или компьютером.


    Все чаще в интернете при работе по автоматизации,регистрации,добавлении сообщений, комментариев,
    объявлений и так далее, мы сталкиваемся с тестом распознования, кем является пользователь системы: человеком или компьютером.
    Данный компьютерный тест называет «CAPTCHA» и зачастую он распространятся с каждым днем все больше
    и больше, соответственно и алгоритм и сложность данного теста постоянно усовершенствуется,
    чтобы уменьшить уязвимость обхода теста и его распознования.

  • В итоге на данный момент мы имеем различные виды капч, основные, которые чаще встречаются я опишу ниже:

  • №1 yaCAPTCHA

    № 1 yaCAPTCHA
    Это один из самых первых и распространенных видов защиты от спама.
    Обычно его ставят для регистрации на форумах и сайтах. Для блогов, я бы не советовал его ставить,
    так как капча довольно таки сложная, и некоторые пользователи просто из-за лени ее распознавать и вводить,
    просто не захотят оставлять комментарий.


  • №2 Anti Spam Image

    № 1 yaCAPTCHA
    Очень похожая на первый вид капчи, но здесь рядом с картинкой выводится примечание,
    например «вводить только красные символы», или «вводить только цифры» или «вводить только буквы».
    Тем самым если у спамеров есть робот, который умеет распознавать символы с картинки,
    то он логически введет все символы, а не именно те, что требуются в примечании.


  • №3 SI Captcha Anti-spam

    № 1 yaCAPTCHA
    Так же как и первые 2 вида, данный плагин, выводит капчу в виде цифр и букв, но здесь есть возможность прослушать, то что изображено на картинке.

  • №4 reCAPTCHA

    № 1 yaCAPTCHA
    Еще одна разновидность капчи с выводом символов, здесь так же есть возможность воспроизведения символов на картинке.
    Обычно форма с капчей состоит из двух слов. Этот вид, тоже больше подходит как капча на сайт, где требуется регистрация,
    чем капча на блог, где нужно просто оставить комментарий.


  • №5 Simple CAPTCHA

    № 1 yaCAPTCHA
    Капча выводит различные символы, их нельзя прослушать, но если они не видны, то нажав на соседнюю кнопочки символы
    на картинке можно заменить. При этом не обновляя страницу, то есть не теряя написанного комментария в поле.



  • №6 Math Comment Spam Protection

    № 1 yaCAPTCHA
    Здесь на форме с капчей выводятся два числа, но вводить надо не их, а их сумму. Опять же если робот сможет распознать
    цифры на картинке,то сложить их и вписать в поле их сумму, для робота уже проблематично.


  • №7 WP-NOTCAPTCHA

    № 1 yaCAPTCHA
    Это довольно таки забавная и простая капча для человека, но трудная для робота. Здесь просто надо передвигать
    ползунок под картинкой так, что бы картинки расположились вертикально.


  • №8 ImHuman

    № 1 yaCAPTCHA
    Тоже довольно таки интересная форма с капчей, и в тоже время очень сложная для роботов. Здесь выводятся
    несколько картинок, и надо выбрать из них одну, которая написана в примечании.


  • №9 Checkbot

    № 1 yaCAPTCHA
    Этот вид капчи является одним из самых простых и удобных способов защиты от спама. Здесь просто нужно выбрать человечка с поднятой рукой.


  • №10 Dcaptcha – Я не робот(YA-ne-robot)

    № 1 yaCAPTCHA
    Это самая простая капча, для блогов. Здесь, как вы видите, что бы подтвердить то, что вы человек, а не робот, вам просто нужно поставить галочку.


  • Но со всей этой рутиной по разгадыванию каптчи справится наша программа Human Emulator с помощью соответствующих сервисов капч.


  • Принцип работы данных сервисов прост. Вы регистрируетесь в любом сервисе удобным для вас, пополняете счет
    на нужную вам сумму. В своей учетной записи найдете «captcha ключ»
    он же $api_key
    – это ключ сервиса распознания,
    который нужно указывать в разных программах, в том числе и нашей для подключения соответственного сервиса.

  • Вот как все работает, данный алгоритм аналогичен для большинства сервисов каптч:

    1. Ваше приложение загружает капчу нам на сервер и получает ее уникальный ID. (Через HTTP POST, методами multipart или base64).
    2. Ожидаем 10 секунд (среднее минимальное время, за которое наши работники вводят текст с капчи).
    3. Делаете HTTP GET
    запрос с
    ID капчи на наш сервер. Получаете либо текст с капчи, либо код CAPCHA_NOT_READY
    , означающий что она еще не готова.
    4. Если получили CAPCHA_NOT_READY, делаете повторную попытку через 5 секунд (шаг 3).
    5. Если получили OK|SOME_TEXT_HERE,
    то SOME_TEXT_HERE и есть ваш текст с капчи.


  • В Human Emulator есть восемь функций для распознавания капчи, такие как:
    recognize_captcha
    — распознать картинку с диска как капчу.
    recognize_by_anticaptcha
    – распознать капчу картинки через сервис антикапча
    recognize_by_rucaptcha
    – распознать капчу картинки через сервис rucaptcha.com
    recognize_by_captcha24
    – распознать капчу картинки через сервис captcha24.com
    recognize_by_ripcaptcha
    – распознать капчу картинки через сервис ripcaptcha.com
    recognize_by_evecaptcha
    – распознать капчу картинки через сервис eve.cm
    recognize_by_bypasscaptcha
    – распознать капчу картинки через сервис bypasscaptcha.com
    recognize_by_captchabot
    – распознать капчу картинки через сервис captchabot.com

  • Давайте для наглядности рассмотрим пример распознования капчти google с помощью сервиса antigate.com

    $xhe_host ="127.0.0.1:7011";
     
    // The following code is required to properly run XWeb Human Emulator
    require("../../Templates/xweb_human_emulator.php");
     
    // Переходим на пример капчи на сайте google
    $browser->navigate("http://google.ru/sorry");
     
    //Распознаем капчу и вводим ваш индивидуальный api_key
    echo $captcha = $image->recognize_by_anticaptcha("/sorry/image?id=","C:\Temp\1.jpg","$api_key – это ваш ключ сервиса распознания","http://antigate.com");
     
    //Вводим результат капчти в нужное поле
    $input->send_keyboard_input_by_name("captcha", "$captcha");
     
    // Quit
    $app->quit();


  • Ниже приведены ссылки на описание объектов содержащих функционал, позволяющий воспользоваться API сервисов для распознования капч.

    http://humanemulator.net/objects/WEB/anticaptcha.php

    http://humanemulator.net/objects/WEB/rucaptcha.php

    http://humanemulator.net/objects/WEB/captcha24.php

    http://humanemulator.net/objects/WEB/ripcaptcha.php

    http://humanemulator.net/objects/WEB/evecaptcha.php

    http://humanemulator.net/objects/WEB/bypasscaptcha.php

    http://humanemulator.net/objects/WEB/captchabot.php


  • В нынешнем времени сервисы по работе с каптчами все более актульны и востребовательны для использования их в различных интернет ресурсах и сервисах, они стремительно развиваются и наращивают свой функционал, вместе с этим программа HumanEmulator старается идти в ногу со временем и все больше внедряет в свою внутреннюю структуру функционала по работе с данными сервисами. Подведя итоги вышенаписанного, можно с уверенностью сказать, что при работе в тандеме(связке) сервисов каптч и нашего софта, можно легко и с уверенностью разгадывать большинство типов каптч представленных в интернете. Но совершенству нет предела и поэтому мы будем с радостью добавлять и внедрять все новое, что будет связано с данными сервисами и функционалом.
  • Текстовые капчи легко распознаются нейронными сетями глубокого обучения / Хабр

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

    Что такое текстовая капча?

    Капча (англ. “CAPTCHA”) — это тест на “человечность”. То есть задача, которую легко решает человек, в то время как для машины эта задача должна быть сложной. Зачастую используется текст со слипшимися буквами, пример на картинке ниже, также картинку дополнительно подвергают оптическим искажениям.

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

    Полносверточная нейронная сеть

    Если буквы “слиплись”, то их обычно очень трудно разделить эвристическими алгоритмами. Следовательно, нужно искать каждую букву в каждом месте картинки. С этой задачей справится полносверточная нейронная сеть. Полносверточная сеть — сверточная сеть без полносвязного слоя. На вход такой сети подается изображение, на выходе она выдает тоже изображение или несколько изображений (карты центров).

    Количество карт центров равно длине алфавита символов использованных в определенной капче. На картах центров отмечаются центры букв. Масштабное преобразование, которое в сети происходит из-за наличия пуллинг слоев, учитывается. Ниже показан пример карты символа для символа “D”


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

    Первоначально полносверточная сеть была проверена на символе “R”:


    Для проверки применялась небольшая сеть с 2мя пуллингами, натреннированная на CPU. Убедившись, что идея хоть как то работает, я приобрел б/у видеокарту Nvidia GTX 760, 2GB. Это дало мне возможность тренировать более крупные сети для всех символов алфавита, а также ускорило обучение (примерно в 10 раз). Для тренировки сети использовалась библиотека Theano, на текущий момент уже не поддерживаемая.

    Тренировка на генераторе

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

    Финальная точность тренировки на сгенерированных капчах, как оказалось, в 2 раза ниже, по сравнению с тренировкой на реальных капчах. Вероятно, такие нюансы как степень пересечения символов, масштаб, толщина линий символов, параметры искажения и т. п., важны, и в генераторе эти нюансы воспроизвести не удалось. Сеть тренированная на сгенерированных капчах давала точность на реальных капчах около 10%, точность — какой процент капч распознался правильно. Капча считается распознанной, если все символы в ней распознаны правильно. В любом случае этот эксперимент показал, что метод рабочий, и требуется повысить точность распознавания.

    Тренировка на реальном датасете

    Для ручной разметки датасета реальных капч был написан скрипт на Matlab с графическим интерфейсом:

    Здесь кружочки можно расставлять и двигать мышкой. Кружочком отмечается центр символа. Ручная разметка занимала 5-15 часов, однако есть сервисы, где за не большую плату размечают вручную датасеты. Однако, как оказалось, сервис Amazon Mechanical Turk не работает с российскими заказчиками. Разместил заказ на разметку датасета на известном сайте фриланса. К сожалению, качество разметки было не идеальным, поправлял разметку самостоятельно. Кроме того, поиск исполнителя занимает время (1 неделя) и также это показалось дорого: 30 долларов за 560 размеченных капч. От данного способа отказался, в итоге пришел к использованию сайтов ручного распознавания капч, где самая низкая стоимость 1 доллар за 2000 капч. Но полученный ответ там — это строка. Таким образом, ручной расстановки центров избежать не удалось. Более того, исполнители в таких сервисах допускают ошибки или вовсе действуют недобросовестно, печатая произвольную строку в ответе. В итоге приходилось проверять и исправлять ошибки.

    Более глубокая сеть

    Очевидно точность распознавания была недостаточна, поэтому возник вопрос подбора архитектуры. Меня интересовал вопрос “видит” ли один пиксель на выходном изображении весь символ на входном изображении:

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


    Форма данного пятна близка к форме гауссовой функции. Форма получившегося пятна вызывает вопрос, почему пятно круглое, тогда как ядра сверток в сверточных слоях квадратные? (В сети использовались ядра сверток 3×3 и 5×5). Мое объяснение такое: это похоже на центральную предельную теорему. В ней, как и здесь, присутствует стремление к гауссовому распределению. Центральная предельная теорема утверждает, что для случайных величин, даже с разными распределениями, распределение их суммы равно свертке распределений. Таким образом, если мы сворачиваем любой сигнал сам с собой много раз, то по центральной предельной теореме результат стремится к гауссовой функции, а ширина гауссовской функции растет как корень из количества сверток (слоев). Если для такой же сети с константными весами посмотреть, где в выходном изображении значения пикселей больше нуля, то получается все таки квадратная область (см. рисунок ниже), размер этой области пропорционален сумме размеров сверток в сверточных слоях сети.


    Раньше думал, что из-за ассоциативного свойства свертки две последовательные свертки 3×3 эквивалентны свертке 5×5 и потому, если свернуть 2 ядра 3×3 получится одно ядро 5×5. Однако, потом пришел к выводу, что это не эквивалентно хотя бы потому, что у двух сверток 3×3 9*2=18 параметров, а у одной 5×5 25 параметров, таким образом, у свертки 5×5 больше степеней свободы. В итоге, на выходе сети получается гауссова функция с шириной меньше суммы размеров сверток в слоях. Здесь ответил на вопрос какие пиксели на выходе подвержены влиянию одного пикселя на входе. Хотя изначально вопрос ставился обратный. Но оба вопросы эквивалентны, что можно понять из рисунка:


    На рисунке можно представить, что это вид на изображения с боку или, что у нас высота изображений равна 1. Каждый из пикселей A и B имеет свою зону влияния на выходном изображении (обозначены синим цветом): для А это D-C, для B это C-E, на значения пикселя C влияют значения пикселей A и B и значения всех пикселей между A и B. Расстояния равны: AB = DC = CE (с учетом масштабирования: в сети присутствуют пуллинг слои, поэтому входное и выходное изображения имеют разные разрешения). В итоге, получается следующий алгоритм нахождения размера области видимости:

    1. задаем константные веса в сверточных слоях, весам-смещениям задаем значения 0
    2. на вход подаем изображения с одним ненулевым пикселем
    3. получаем размер пятна на выходе
    4. умножаем этот размер на коэффициент учитывающий разное разрешение входного и выходного слоя (например, если у нас 2 пулинга в сети, то разрешение на выходе в 4 раза меньше, чем на входе, значит этот размер надо умножать на 4).

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

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

    Что получилось:

    Для символа “2”:


    Для символа “5”:


    Для символа “L”:


    Для символа “u”:


    Изображения слева — исходные изображения капч, изображения справа — это оптимизированное изображение . Квадратом на изображениях обозначена область видимости output>0, окружности на рисунке — это линии уровня Гауссовой функции области видимости. Малая окружность — уровень 35% от максимального значения, большая окружность — уровень 3%. Примеры показывают, что сеть видит в пределах своей области видимости. Однако, у символа “u” наблюдается выход за область видимости, возможно это частичное ложное срабатывание на символ “n”.

    Было проведено много экспериментов с архитектурой сети, чем более глубокая и широкая сеть, тем более сложные капчи она может распознавать, самой универсальной архитектурой оказалась следующая:


    Синим цветом, поверх стрелок, показано количество изображений (feature maps). c- сверточный слой, p — max-pooling слой, зеленым цветом внизу показаны размеры ядер. В сверточных слоях используются ядра 3×3 и 5×5 без strade, пуллинг слой имеет патч 2×2. После каждого сверточного слоя есть ReLU слой (на рисунке не показан). На вход подается одно изображение, на выходе получется 24 (количество символов в алфавите). В сверточных слоях паддинг подобран таким образом, чтобы на выходе слоя размер изображения был таким же как и на входе. Паддинг добавляет нули, однако это никак не влияет на работу сети, потому что значение фонового пикселя капчи — 0, так как всегда берется негативное изображение (белые буквы по черному фону). Паддинг лишь незначительно замедляет работу сети. Так как в сети 2 пуллинг слоя, то разрешение изображения на выходе в 4 раза меньше разрешения изображения на входе, таким образом каждый пуллинг уменьшает разрешение в 2 раза, например, если на входе у нас капча размером 216×96 то на выходе будет 24 изображения размером 54×24.

    Улучшения

    Переход от решателя SGD к решателю ADAM дал заметное ускорение обучения, и финальное качество стало лучше. Решатель ADAM импортировал из модуля lasagne и использовал внутри theano-кода, параметр learning rate ставил 0.0005, регуляризация L2 была добавлена через градиент. Было замечено, что от тренировки к тренировке результат получается разный. Объясняю это так: алгоритм градиентного спуска застревает в недостаточно оптимальном локальном минимуме. Частично поборол это следующим образом: запускал тренировку несколько раз и выбирал несколько самых лучших результатов, затем продолжал их тренировать еще несколько эпох, после из них выбирал один лучший результат и уже этот единственный лучший результат долго тренировал. Таким образом удалось избежать застревания в недостаточно оптимальных локальных минимумах и финальное значение функции ошибок (loss) получалась достаточно малым. На рисунке показан график — эволюция значения функции ошибок:

    По оси x — число эпох, по оси y — значение функции ошибок. Разными цветами показаны разные тренировки. Порядок обучения примерно такой:

    1) запускаем 20 тренировок по 10 эпох

    2) выбираем 10 лучших результатов (по наименьшему значению loss) и тренируем их еще 100 эпох

    3) выбираем один лучший результат и продолжаем тренировать его еще 1500 эпох.

    Это занимает около 12 часов. Конечно, для экономии памяти, данные тренировки проводились последовательно, например, в пункте 2) 10 тренировок проводились последовательно одна за другой, для этого провел модификацию решателя ADAM от Lasagne, чтобы иметь возможность сохранять и загружать состояние решателя в переменные.

    Разбиение датасета на 3 части позволяло отслеживать переобучение сети:

    1 часть: тренировочный датасет — исходный, на котором сеть обучается

    2 часть: тестовый датасет, на котором сеть проверяется в процессе тренировки

    3 часть: отложенный датасет, на нем проверяется качество обучения после тренировки

    Датасеты 2 и 3 небольшие, в моем случае было по 160 капч в каждом, также по датасету 2 определяется оптимальный порог срабатывания, порог который устанавливается на выходное изображение. Если значение пикселя превышает порог, то в данном месте обнаружен соответствующий символ. Обычно оптимальное значение порога срабатывания находится в диапазоне 0.3 — 0.5. Если точность на тестовом датасете значительно ниже, чем точность на тренировочном датасете — это значит что произошло переобучение и тренировочный датасет необходимо увеличить. В случае, если эти точности примерно одинаковы, но не высокие, то архитектуру нейронной сети нужно усложнять, а тренировочный датасет увеличивать. Усложнять архитектуру сети можно двумя путями: увеличивать глубину или увеличивать ширину.

    Предварительная обработка изображений также повышала точность распознавания. Пример предобработки:


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


    Эти искажения необходимо компенсировать.

    Неудачные идеи

    Всегда интересно почитать про чужие неудачи, опишу их здесь.

    Существовала проблема малого датасета: для качественного распознавания требовался большой датасет, который требовалось разметить вручную (1000 капч). Мной предпринимались различные попытки каким-то образом обучить сеть качественно на малом датасете. Делал попытку обучать сеть на результатах распознавания другой сети. при этом выбирал только те капчи и те места изображений, в которых сеть была уверена. Уверенность определял по значению пикселя на выходном изображении. Таким образом можно увеличить датасет. Однако идея не сработала, после нескольких итераций обучения качество распознавания сильно ухудшилось: сеть не распознавала некоторые символы, путала их, то есть ошибки распознавания накапливались.

    Другая попытка обучиться на малом датасете — использовать сиамские сети, сиамская сеть на входе требует пару капч, если у нас датасет из N капч, то пар будет N2, получаем гораздо больше обучающих примеров. Cеть преобразует капчу в карту векторов. В качестве метрики сходства векторов выбрал скалярное произведение. Предполагалось что сиамская сеть будет работать следующим образом. Сеть сравнивает часть изображения на капче с некоторым эталонным изображением символа, если сеть видит, что символ тот же с учетом искажения, то считается, что в данном месте качи есть соответствующий символ. Сиамская сеть тренировалась с трудом, часто застревала в неоптимальном локальном минимуме, точность была заметно ниже точности обычной сети. Возможно проблема была в неправильном выборе метрики сходства векторов.

    Также была идея использовать автоэнкодер для предварительного обучения нижней части сети (та, что ближе к входу), чтобы ускорить обучение. Автоэнкодер — это сеть, которая обучается выдавать на выходном изображении то же что и подается на вход, при этом в архитектуре автоэнкодера организуют узкий участок. Тренеровка автоэнкодера есть обучение без учителя.

    Пример работы автоэкодера:


    Первое изображение — входное, второе — выходное.

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

    Также был пример капчи, которая использовала цвет:

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

    Результат










    ПримерыТочностьКоментарий

    42 %Капча Микрософт

    , jpg
    61 %
    63 %
    93 %капча mail.ru, 500×200, jpg
    87 %капча mail.ru, 300×100, jpg
    65 %Капча Яндекс, русские слова, gif
    70 %капча Steam, png
    82 %капча World Of Tanks, цифры, png

    Что еще можно было бы улучшить

    Можно было бы сделать автоматическую разметку центров символов. Сервисы ручного распознавания капч выдают лишь распознанные строки, поэтому автоматическая разметка центров помогла бы полностью автоматизировать разметку тренировочного датасета. Идея такова: выбрать только те капчи, в которых каждый символ встречается один раз, на каждый символ натренировать отдельную обычную сверточную сеть, такая сеть будет отвечать лишь на вопрос: есть ли в данной капче символ или нет? Затем посмотреть какие признаки использует сеть, используя метод минимизация значений пикселей входной картинки (описано выше). Полученные признаки позволят локализовать символ, далее тренируем полносверточную сеть на полученных центрах символов.

    Выводы

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

    Однако и такая задача кажется решаемой для сверточной сети. Можно предположить, что в будущем возникнут центры регистрации людей, например, человека по скайпу интервьюирует живой человек, проверяет сканы паспортов и тому подобное, затем человеку выдается цифровая подпись, с которой он может автоматически регистрироваться на любом сайте.
    © Максим Веденев

    Распознавание кириллической Яндекс капчи / Хабр

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

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

    Итак, мы имеем такую капчу:

    Особенности

    • Переменная длина
    • Искажения
    • Шумы (кривая)
    • Кириллические буквы
    • Модный логотип в правом-верхнем углу

    Слабые стороны

    • Искажения незначительны, не препятствуют сегментации
    • Шумы лишь незначительно усложняют распознавание
    • Ограниченный словарь позволяет отсеять неверные варианты и скорректировать ответы сети

    Решение

    Условно разделим распознавание на следующие этапы:

    • Предварительная обработка
    • Поиск расположения и сегментация текста
    • Распознавание
    • Финальная обработка результата

    Предварительная обработка

    Убираем логотип Яндекса и автокадрируем изображение:

    Нормализуем входные данные:


    Где x — значения цвета пикселей, [a,b] – интервал допустимых значений входных сигналов. В нашем случае от -1 до 1.

    Поиск расположения и сегментация текста

    За распознавание длины капчи отвечает сеть с 4-мя нейронами выходного слоя, каждый из которых соответствует значению длины от 4 до 7.

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

    Распознавание

    Для распознавания букв используется сеть из двух слоев.
    Первый слой обучаемый и состоит из 900 нейронов, выходной состоит из 31 нейрона, каждому из которых соответствует буква на картинке.

    Первоначальная обучающая выборка подготовлена благодаря отряду русскоязычных индусов antigate и составила 2,000 капч, после недолгого обучения сети, в роли учителя выступал уже сам Яндекс и подготовленный ранее словарь из 387,143 слов от 4 до 7 символов, сформированный на основе данных из Яндекс словарей.

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

    В течение суток получена точность распознавания каждого символа в 70%.

    Финальная обработка результата

    После получения результата распознавания проверяется наличие оного в словаре.
    Если результат распознавания отсутствует в словаре, скорее всего он не верен.
    Часто возникают ошибки между схожими символами, к примеру н — и, с — е, ь — ы, п — л.
    В таком случае, исходя из ответов сети, выбираем наиболее вероятные буквы и ищем соответствующие слова в словаре.
    Если слов не существует, выбираем варианты с аналогичной длиной и минимальным расстоянием Левенштейна.
    Такой вариант дает 18% точность распознавания капчи.
    Также можно задействовать частоту распределения букв и их сочетаний в русском языке, не говоря уже о готовых решениях для проверки орфографии, в любом случае вариантов множество.
    Даже простое прюнинг результатов, отсутствующих в словаре отбрасывает значительную часть неверных вариантов.

    Заключение

    Как я говорил ранее, при желании и должном числе примеров, любая понятная [и не только] человеку капча поддается распознаванию. Упор нужно делать не на усложнении самого изображения, а на технологиях выявления ботов, пока они сами не начали выявлять и отсеивать людей.

    Кириллическая Яндекс капча довольно слабая, однако порядком более дружелюбна для русскоязычных пользователей, нежели, к примеру, kcaptcha или recaptcha (особенно первой версии).

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

    Исходники

    Если желаете протестировать или разобраться в работе сети — добро пожаловать на GitHub.

    P.S. Если у вас есть интересные задачи в этой области — буду рад помочь.

    Распознавание и взлом CAPTCHA | Капча

    Здравствуйте!

    В этой статье, пойдет речь, о еще нескольких приемах распознавания captcha защиты. Эти приемы я буду демонстрировать на подопытной капче. В качестве подопытной я выбрал капчу некоего Rafontes на которую я набрел когда искал материалы для предыдущей статьи Анализ алгоритмов генерации CAPTCHA.

    Пример сгенерированной капчи:

    Фон мне пришлось использовать другой, так как автор не выложил оригинальный (или я не нашел), но это не повлияет на результат.

    Препроцесс

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

    В первую очередь нам надо отделить фон от текста. Анализируем картинку и код генерации изображения. Налицо первые ошибки:

    • Используется один цвет для всего теста с кодом
    • Цвет для текста генерируется в диапазоне rand(0, 200), 0, rand(0, 200), для R G B соответственно (достаточно выделить цвета только в этом диапазоне)
    • Фон с большим количеством разных цветов (не сможет повлиять на статистику самого часто используемого цвета)

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

    Как видите, мы получили текст, практически без искажений. Правда осталась одна линия, но у нас хитрый алгоритм обрезки (о нем ниже), на который эта линия повлиять не сможет.

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

    Теперь определяем границы по вертикали:

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

    А почему теперь эта линия убралась спросите вы? Потому что теперь анализировалось меньше «столбцов пикселей» и при анализе алгоритмом выявилось что в данном участке слишком много столбцов с одним черным пикселем, а следовательно это шум. Теперь уточняем границу по вертикали:

    Так как область определения стала меньше то, теперь тот та линия что была шумом стала недостаточно темным пятном и была удаленна  совсем. Вот мы и получили участок с текстом. Конечно этот алгоритм иногда не совсем верно выделяет нужную область. Но по моим тестам число НЕверных определений не превышает 5%, чем собственно можно пренебречь.

    Сегментация

    Теперь наша задача разбить полученное изображение на отдельные участки с символами.

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

    • Отступ между каждым символом всегда равен 15 пикселям

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

    Теперь как мы видим вокруг некоторых символов есть пустая область. А нам все таки нужен именно сам символ. Применяем функцию обрезки для каждого символа, и полученные изображения вписываем в прямоугольники размером 17×27:

    Именно такие изображения по отдельности будут подаваться на распознавание.

    Распознавание

    Распознавание мы будет производить БЕЗ всяких новомодных нейронных сетей. Почему? Решающую роль сыграло то что, нет ни одной достойной библиотеки под винду. Пользоваться будем обычным распознаванием по маскам символов.

    Для этого мы, имея доступ к исходным кодам, нагенерируем кучу черно-белых картинок для каждого символа с разными углами поворотов (от двух до четырех градусов), и разными размерами шрифта (от 20pt до 30pt). Каждую полученную картинку, как вы догадались, вписываем в прямоугольник размером 17×27. Каждое полученное изображение называется маской.

    Для каждой буквы я нагенерировал по 10-15 масок. Впринципе этого достаточно, но если увеличить количество масок, то можно увеличить процент распознавания.

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

    Результаты

    Для теста я получил с помощью генерации картинки и ее разбиения на символы 200 зашумленных символов. И програмно запустил тест. И внимание!
    Итог: Удачных: 172 Ошибок: 28 Процент: 86%
    То есть каждый символ на капче будет распознан успешно с вероятностью в 86%!

    Немного математики. Посчитаем процент вероятности успешного распознавания капчи:
    Для 4-символьных капч: 0.86^4=54%
    Для 5-символьных капч: 0.86^5=47%

    В среднем каждая вторая капча будет успешно распознанна.

    Если учесть что на каждую капчу приходится около 1 секунды, а 2 секунды в среднем будет приходится на успешное распознавание. То это очень отличный результат.

    Исходники

    Архив со скриптами (на php):
    CaptchaBreaker_scripts
    Архив масок (распаковать в папку ./masks/):
    CaptchaBreaker_masks

    Скрипт сам генерирует, и сам же распознает капчу. Пример работы скрипта на картинке приведенной в качестве примера автором капчи:

    (Картинка кликабельна)

    Взлом капчи за 0.05 секунд с помощью Машинного Обучения

    Оказывается, нейросети уже давно могут «притворяться» людьми — рассказываем про новую модель генеративно-состязательной сети (GAN), которая распознаёт системы CAPTCHA на 32 посещаемых веб-сайтах.

    Автор: Roberto Iriondo, Machine Learning Department of Carnegie Mellon University

    ДИСКЛЕЙМЕР

    Текст данной статьи приведен исключительно в образовательных целях для информирования пользователей о возможных уязвимостях при разработке сайтов. Информация предоставляется в целях противодействия эксплуатации уязвимостей. Редакция сайта не поддерживает никакие виды противозаконной деятельности в сети Интернет.

    Никто не любит капчи (в смысле, никто из людей, ведь у ботов нет эмоций) — надоедливые картинки с трудно читаемым текстом, который вы должны ввести для доступа к чему-либо в интернете. CAPTCHA (Completely Automated Public Turing tests to tell Computers and Humans Apart) разработана для того, чтобы автоматические программы не могли злонамеренно использовать онлайн-контент (заполнять формы, запрашивать доступ к закрытым файлам, многократно заходить на один и тот же сайт и т. д.). Она должна убедиться, что вы человек, а не бот. Тем не менее, в прошлом были попытки доказать несовершенство систем CAPTCHA. Но ни одна из них не была настолько же точной и быстрой, как алгоритм машинного обучения, предложенный группой исследователей из университета Ланкастера, Северо-Западного университета и Пекинского университета.

    Схема алгоритма:

    Исследователи используют небольшой набор несинтезированных капч для обучения синтезатора CAPTCHA. Синтезатор (1) используется для генерации синтетических CAPTCHA (2), которые применяются для обучения базового решателя (base solver) (3). Base solver затем совершенствуется для создания точно настроенного решателя (fine-tuned solver) несинтезированных капч.

    Одним из первых известных людей, которые продемонстрировали уязвимость CAPTCHA, был Эдриан Роузброк. В своей книге “Deep Learning for Computer Vision with Python” Эдриан рассказывает, как он обошёл системы CAPTCHA на сайте E-ZPass New York. Для обучения своей глубокой модели он использовал большой набор изображений с примерами CAPTCHA.

    Основное отличие решения Адриана от подхода учёных из Ланкастера, Северо-Западного университета и Пекина — последние не использовали набор данных с примерами, а синтезировали CAPTCHA с помощью генеративно-состязательной сети (GAN). Почти вся обучающая выборка состояла из сгенерированных капч, и лишь небольшая часть — из реальных.

    Генеративно-состязательные сети, представленные Яном Гудфеллоу вместе с другими учёными — это глубокие архитектуры, состоящие из двух нейросетей. Эти сети «соревнуются» друг с другом в игре с нулевой суммой (zero-sum game) и синтезируют образцы, близкие к подлинным. Это может быть очень полезно в случае, когда модель не имеет доступа к большому набору данных.

    Исследователи оценили свой подход с помощью 33 текстовых схем CAPTCHA, 11 из которых в настоящее время используют 32 самых популярных веб-сайта по данным Alexa. Туда входят схемы Google, Microsoft, eBay, Wikipedia, Baidu и многие другие. Модели, создаваемой для работы с этими системами, понадобилось всего 500 реальных капч, в то время как другим (в том числе модели Эдриана) требовались миллионы примеров.

    Сеть GAN инициализируется с учётом параметров безопасности капчи, показанных на рисунке:

    Затем она генерирует партию CAPTCHA, чтобы обучить синтезатор с помощью 500 реальных изображений из различных схем капч:

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

    Исследователи использовали 20 тыс. капч для обучения модели Preprocessing и 200 тыс. сгенерированных капч для обучения базового решателя.

    Прототип создан с помощью Python, модель Preprocessing построена в приложении Pix2Pix, которое реализовано с помощью TensorFlow. Точно настроенный решатель сделан с помощью Keras.

    Реальные Google CAPTCHA и сгенерированные версии, созданные синтезатором CAPTCHA

    После обучения GAN со сгенерированными и реальными капчами, решатель CAPTCHA использовался для атаки на системы защиты таких сайтов как Megaupload, Blizzard, Authorize, Captcha.net, Baidu, QQ, reCaptcha, Wikipedia и т.д. Большинство капч было определено с точностью около 80%, а на сайтах Blizzard, Megaupload и Authorize.net — 100%. Этот метод оказался более точным, чем все предыдущие решения, в которых использовались большие несинтезированные наборы обучающих данных.

    Сравнение решателя CAPTCHA с четырьмя другими методами

    Помимо увеличения точности, исследователи упоминают в статье, что их подход также оказался более эффективным и не таким дорогостоящим, как другие решения. Это первая GAN-нейросеть для распознавания капч с открытым исходным кодом — отсюда её эффективность и дешевизна.

    Однако, у модели есть некоторые ограничения: например, капчи с переменным количеством символов. В текущем подходе используется фиксированное число — если его увеличить, то прототип не будет работать. Ещё модель не поддерживает многословные и фото- или видео-капчи. В теории её можно обучить так, чтобы избавиться от этих ограничений, но пока что они присутствуют.

    Посещаемым веб-сайтам следует использовать более надёжные способы защиты своих систем, такие как меры по обнаружению ботов, диагностика кибербезопасности и аналитика. Следует также поддерживать отслеживание местоположения устройства, его тип, используемый браузер и т.д., поскольку теперь сайты стали ещё более лёгкой мишенью для атаки.

    Ссылка на оригинальную статью на портале medium.com.

    Распознавание капчи — 2Captcha FAQ

    Сколько стоит 1000 распознаваний капчи?

    Цена зависит от загруженности сервера от количества капч и количества работающих онлайн. Цена одинакова для всех веб-мастеров одновременно и составляет от 0,5 $ до 1 $. Вы можете узнать текущую ставку по API или по 2captcha API. Веб-мастер может настроить свою максимальную ставку за капчу. Когда скорость выше, чем установлено веб-мастером, капчи не будут загружены, и веб-мастер получит: ERROR_NO_SLOT_AVAILABLE:

    Как формируется цена признания?

    Цена указана в зависимости от загруженности сервера.Минимальная цена 0,0015 $ за одно распознавание — 0,15 $ за 1000 капч, максимальная цена 0,0006 $ за одно или 0,66 $ за 1000 капч. Когда на сервер отправлено несколько решенных капч, цена падает и наоборот. Цена не будет превышать 0,66 за 1000 (но ставка может быть увеличена для больших капч, рекапч и т. Д.)

    Я получил ERROR_NO_SLOT_AVAILABLE что это значит?

    Это означает, что текущая скорость на сервере выше, чем та, которую вы выбрали в настройках.Напоминание: в момент загрузки изображений с вас взимается текущая ставка, а не максимальная ставка, указанная в ваших настройках. Если текущая ставка на сервере выше, чем ваша, вы получите ERROR_NO_SLOT_AVAILABLE , и ваша капча не будет принята.

    Возврат денег за неправильно распознанные изображения

    Для получения возврата вебмастеру необходимо сообщить серверу о некорректном распознавании. Либо с помощью функции reportbad, либо вручную, щелкнув «неверное распознавание» на странице «загруженные капчи».Жалобу необходимо подать в течение 15 минут с момента загрузки изображения. После этого сервер не примет жалобу и вернет ERROR_WRONG_CAPTCHA_ID. После подачи жалобы аккаунт работника блокируется на сумму жалобы, и у работника есть 2 дня, чтобы оспорить жалобу или согласиться с заблокированной суммой в случае неправильного признания. Через 2 дня деньги за неправильно распознанные капчи возвращаются веб-мастеру, за исключением случаев, когда работник оспаривал решение веб-мастера, а модераторы соглашались с позицией работников.

    Как долго загруженная капча хранится на сервере, как долго я могу получить ответ или пожаловаться?

    После загрузки капча хранится 6 часов. Получить ответ или пожаловаться через запрос reportbad на res.php можно только в течение 15 минут.

    ,

    Увеличьте скорость распознавания капчи с опцией 100% распознавания

    Один из наших пользователей решил протестировать нашу опцию 100% распознавания и написал статью о своем исследовании. Мы перевели его с русского на английский, чтобы поделиться с вами:

    Недавно 2Captcha опубликовала статью о своей «возможности 100% распознавания»: https://2captcha.com/blog/for_webmaster/100percenten

    У меня была идея, что их алгоритм может ускорить процесс распознавания, что важно в моем случае, поскольку я решаю множество капч SolveMedia.

    Со следующими настройками:

    • Минимальное количество попыток = 2
    • Минимальное количество совпадений = 1

    captcha будет отправлено двум воркерам одновременно, и будет возвращен первый ответ.

    Поскольку я хочу получить ответ как можно быстрее, я решил протестировать 100% распознавание с разными настройками и проверить, ускорит ли это процесс, а также проверить, упадет ли точность.

    Гипотез:

    Мне нужно было проверить две гипотезы:

    1. Если я увеличиваю минимальное количество попыток (большее количество рабочих решает капчу одновременно), то мой шанс, что капча будет решена быстрым рабочим , будет выше, и капча будет решена быстрее.

    2. Количество правильных ответов будет падать, поскольку fast worker может давать неправильные ответы.

    Метод испытаний:

    Я написал скрипт на PHP, который каждую секунду отправляет капчу из папки с изображениями в API, а затем каждую секунду пытается получить ответ. Получив ответ, я записываю результаты в файл журнала CSV: имя файла, идентификатор капчи, ответ, время распознавания. Затем я запустил скрипт 5 раз с разными настройками 100% распознавания, используя одни и те же изображения.Первый запуск был сделан с отключенным 100% распознаванием, затем я увеличивал минимальное количество попыток каждый раз с 2 до 5.

    Наконец, я объединил все результаты в таблицу EXCEL, чтобы получить сводную статистику для каждого запуска.

    Я использовал набор из 100 изображений для решения капчи, так как я думаю, что это самая сложная капча, которую я встречал. Примеры изображений:

    Желающие выполнить свой текст могут получить код из этого репозитория.

    Результатов:

    Таблица EXCEL со статистикой

    Скриншот таблицы статистики:

    1. Гипотеза первая: скорость подрастет.Подтверждено!

    Когда больше рабочих решают одну и ту же капчу, время распознавания уменьшается. Для моих задач наилучший результат достигается при минимальном количестве попыток 3. Цена увеличивается в 3 раза, но время решения на 32,5% меньше, и я предпочитаю скорость.

    1. Вторая гипотеза: точность упадет. Не подтверждено!

    Вероятно, для более точных результатов мне пришлось использовать более крупный набор изображений, например 1000 изображений. Так как на 100 изображениях один неверный ответ дает 1% потери точности.Но в целом точность остается достаточно хорошей.

    1. Меньше капч остаются неразрешимыми.

    Также я обнаружил, что у меня меньше неразрешимых результатов. Нельзя утверждать, что установка минимального числа попыток на 2 приведет к решению 100% ваших капч. Когда я готовился к тесту, я попытался ввести действительно сложные капчи, и эти капчи не были решены, даже если я установил минимальное количество попыток на 4 или 5. Вот примеры:

    Комментарии от 2Captcha.com

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

    Если вы хотите выполнить те же тесты, делайте небольшие таймауты между вашими запросами к нашему API. Если вы отправите 20 каптчей с минимальным количеством попыток, установленным на 10, то есть вероятность, что мы не сможем сразу найти 200 бесплатных рабочих, и это вызовет задержку для следующей отправленной вами капчи.Вот почему мы просим делать таймауты между вашими запросами.

    ,

    Сборник бесплатных кодов для вашего веб-сайта

    Сборник бесплатных кодов для вашего веб-сайта и многое другое о безопасности

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

    Итак, как я и обещал — сегодня я сделаю обзор сервисов и методов капчи.


    1. reCAPTCHA

    reCAPTCHA — это бесплатный сервис CAPTCHA, который помогает оцифровывать книги, газеты и старые радиопередачи

    2. captchas.net

    Сервис тоже бесплатный. Изображение CAPTCHA показывает случайную строку, которую пользователь должен ввести для отправки формы.Это простая проблема для (видящих) людей, но очень сложная проблема для компьютеров, которым приходится использовать распознавание символов, особенно потому, что отображаемая строка каким-то образом отчуждается, что делает очень трудным для компьютера декодирование

    3. protectwebform.com

    Защитите свою гостевую книгу, форму обратной связи, форму комментариев и любую другую веб-форму с помощью бесплатной службы проверки URL-адресов для защиты от спама.

    4. BotDetect

    BotDetect является уникальным среди решений Captcha, предлагая множество стилей изображения и звука Captcha.Хотя каждый из них легко понятен пользователям, случайное использование нескольких алгоритмов генерации Captcha делает практически невозможным автоматическое выполнение задачи Captcha.

    5. Securimage PHP Captcha

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

    6. Cryptographp

    Cryptographp — это сценарий PHP для генерации капч. Cryptographp ограничивает роботов, бомбардирующих спам и автоматизирующих формы: подписки участников, гостевые книги, форумы… Этот скрипт бесплатный и не использует никаких баз данных.

    7. tipstricks.org

    Сценарий бесплатного классического генератора изображений безопасности ASP (CAPTCHA)

    8. captcha.cc

    Бесплатная служба Captcha.cc позволяет очень просто разместить очень жесткую капчу изображения перед отправкой формы. Эти изображения легко читать людям, но очень трудно читать компьютерам. Это сокращает количество спама в комментариях в блогах, заполнении контактных форм и многом другом.

    9. OpenCaptcha

    OpenCaptcha: бесплатный и открытый веб-сервис Captcha

    10.Web Wiz CAPTCHA

    Web Wiz CAPTCHA — это бесплатное программное обеспечение для изображений безопасности, написанное на ASP, которое отображает изображение безопасности в формах вашего веб-сайта, которые могут читать только люди. Это предотвращает рассылку спама форм на ваших сайтах роботами и взлом с использованием словаря или взлома методом перебора.

    11. WebSpamProtect.com

    WebSpamProtect.com позволяет мгновенно добавить проверочное изображение (CAPTCHA) на ваш веб-сайт и защитить ваши формы от роботов-спама.

    12. BasicCaptcha

    Этот обработчик форм (или сценарий преобразования формы в электронную почту) предназначен для сбора данных из HTML-формы и отправки их на указанный адрес электронной почты. Он работает с любыми типами HTML-форм, и вы можете использовать его несколько раз на своих страницах.

    13. ASP-скрипт Captcha

    Основная идея теста Captcha (полностью автоматизированный общедоступный тест Тьюринга, позволяющий различать компьютеры и людей) состоит в том, чтобы предотвратить автоматическую отправку форм.Этот проект представляет собой очень короткий исходный код сценария VB, который позволяет создавать изображения в формате GIF, JPG или PNG с текстом, который большинство людей может легко прочитать и ввести в поле формы, но автоматизированная компьютерная программа не может.

    14. Элемент управления Captcha Floresense

    Элемент управления Captcha Floresense — это гибкий, многоцелевой элемент управления Captcha для .NET

    15. u229

    Решение CAPTCHA, построенное на классическом ASPcript, CSS и Javascript ,

    16. Text Disguise

    Проще говоря, Text Disguise — это доказательство взаимодействия с человеком. Что такое интерактивное доказательство человека? Это метод, позволяющий отличить пользователей от компьютеров (или также известных как «боты»). Представляя CAPTCHA-изображение пользователю, он требует, чтобы за клавиатурой находился живой, дышащий, думающий человек — взаимодействуя с вашим веб-сайтом.


    Заключение

    И это еще не все, графические и графические капчи конечно хорошо.Но могут быть очень полезны и более человеческие методы, например:

    * математическая капча 1, * математическая капча 2

    * логическая текстовая капча, так что вы даже можете спросить что-то и ждать правильного ответа

    * видео капча — это новинка отличные методы

    Как правило, что еще? Все, что только можно вообразить — какие-нибудь игрушки на фото, любые игры, звуковые, все, что разделяет человека и машину !. Надеюсь, сегодняшняя статья заинтересовала.

    .

    captchas.net

    captchas.net

    Почему http://captchas.net?

    Этот сервер предоставляет изображения CAPTCHA и аудиофайлы, которые вы можете использовать в html-формах.
    Изображения CAPTCHA могут препятствовать использованию форм роботами.

    Как это работает?

    Изображение CAPTCHA показывает случайную строку, которую пользователь должен ввести
    отправить форму. Это простая проблема для (видения) людей, но
    очень сложная проблема для компьютеров, которые должны использовать характер
    распознавание, особенно потому, что отображаемая строка отчуждается в
    способ, который очень затрудняет декодирование для компьютера.Для большего
    информацию см. http://en.wikipedia.org/wiki/Captcha.

    Предварительные требования?

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

    Как изображения интегрированы?

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

    Где я могу зарегистрироваться для этого
    служба?

    Для разработки и тестирования используйте нашего «демо» пользователя.
    Вы получите свой секретный ключ бесплатно на нашем
    страница регистрации.

    Сколько это стоит?
    • Наш сервис бесплатный, в том числе и для коммерческих сайтов.
    • Если вы хотите платить за него, вы можете использовать его без «http://captchas.net/» на изображении: 120 евро (160 долларов США) в год.

    • Интеграция нами услуги в вашу форму: 120 EUR (160 $).

    • Наш генератор изображений максимально просто установить бинарник для вашего веб-сервера: по запросу.
    • Свои запросы отправляйте на [email protected]
    Насколько надежен этот сервис?

    Для обеспечения максимальной доступности мы установили резервный сервер в
    другая сеть, гарантирующая, что ни хостинг, ни сеть
    проблемы нарушат работу службы.В то время как стандартное изображение CAPTCHA
    сервер имеет адрес image.captchas.net, резервный
    адрес сервера — image.backup.captchas.net. Наши образцы
    содержат JavaScript, который автоматически загружает изображение из резервной копии
    сервер, если стандартный сервер должен быть отключен.

    С тех пор, как мы запустили эту услугу в 2004 году, у нас было всего несколько минут
    время простоя нашего основного сервера и отсутствие простоя обоих серверов одновременно.

    Список литературы
    Как вычисляется пароль?
    • Объедините секретный ключ и случайную строку

      (Пример:
      secretRandomZufall).

    • Если Alphabet или Letters отличаются от abcdefghijklmnopqrstuvwxyz / 6, добавьте их через ‘:’

      (<Секрет> <случайное>: <алфавит>: <письма>).

    • Возьмите MD5-сумму полученной строки

      (Пример:
      0x4a 0x7d 0x5d 0xf1 0xdd 0xd7 0x88 0xd4 0x7b 0xd5 0x1e 0x66 0x65 0x45 0xe1 0xec).

    • Возьмите первые 6 байтов полученного
      16-байтовое значение MD5

      (Пример: 74
      125 93 241 221 215).

    • Определите остатки этих 6 байтов при делении на 26

      (Пример:
      22 21 15 7 13 7).

    • Каждое число кодирует символ из выбранного алфавита

      (Пример: «wvphnh»).

    Демонстрация

    Следующий код JavaScript демонстрирует возможности нашей системы.
    (Примечание: JavaScript не нужен на ваших веб-страницах).

    ,

    Отправить ответ

    avatar
      Подписаться  
    Уведомление о