CAPTCHA — это аббревиатура от «Полностью автоматизированный общедоступный тест Тьюринга, позволяющий различать компьютеры и людей», который представляет собой общедоступную автоматическую программу, которая различает, является ли пользователь компьютером или человеком. Это может предотвратить: злонамеренный взлом паролей, считывание билетов и заполнение форумов, эффективно предотвращая хакерские непрерывные попытки входа в систему для определенного зарегистрированного пользователя с помощью определенного метода взлома программы методом грубой силы Относительно простой способ достижения этой функции. Этот вопрос может сгенерировать и оценить компьютер, но ответить на него может только человек. Поскольку компьютеры не могут отвечать на вопросы CAPTCHA, пользователь, который отвечает на вопрос, может считаться человеком.
Captcha часто используется для входа на веб-сайт, чтобы определить, является ли это действием человека или действием машины. Включение проверочного кода — один из распространенных методов для антикраулеров и антихакеров. Однако с непрерывным развитием технологий, особенно с развитием машинного обучения, обычное распознавание проверочного кода не очень сложно.
Схема для определения капчи
Есть две вещи, которые необходимо сделать перед настройкой службы идентификационного кода подтверждения.
1) Используйте существующий поисковый робот, чтобы собрать код подтверждения изображения и отметить эти изображения. Здесь я использую программу сканирования изображений, которую сам разработал.PicCrawler. Так называемая маркировка заключается в том, чтобы невооруженным глазом правильно определить цифры и буквы на картинке, а затем использовать эти цифры и буквы в качестве названия картинки.
2) Используйте тензорный поток для обучения этих моделей генерации кода проверки, по крайней мере, с несколькими тысячами кодов проверки на пакет. Таким образом, обученную модель можно загрузить через API tensorflow.
После выполнения этих действий вам необходимо подумать о том, как интегрироваться в существующий фреймворк.
начальная архитектура
Первоначально рассматривалось использование OpenCV для загрузки модели, поскольку OpenCV имеет API Java. Затем Vert.x взаимодействует с OpenCV. В этой архитектуре есть онлайн-модели и автономные модели, а онлайн-модель — это модель, используемая в производственной среде. Обученная офлайн-модель может каждый раз заменять онлайн-модель. Но у OpenCV возникла проблема с загрузкой модели, поэтому я попробовал другой способ.
более поздние попытки
Заменив OpenCV на tensorflow java api для загрузки модели, этот способ также столкнулся с проблемами и пришлось использовать последний способ.
окончательная архитектура
Используйте флягу веб-фреймворка python и API-интерфейс tensorflow python для загрузки модели. В этой архитектуре Vert.x должен вызывать интерфейс, предоставляемый flask, и, наконец, возвращать распознанный результат.
Наконец, данные, возвращаемые интерфейсом, соответствуют содержанию проверочного кода на картинке. Это можно рассматривать как завершение идентификации кода подтверждения.
считать
В настоящее время можно распознать только 1 или 2 проверочных кода.В будущем различные проверочные коды будут помечены, а затем преобразованы в модель.
Функцию проверочного кода планируется интегрировать в фреймворк краулера.NetDiscovery, как его составная часть. Поскольку платформа сканера имеет открытый исходный код, каждый может использовать этот модуль бесплатно.
Архитектура модуля капчи тоже стремится использовать знакомую Java вместо python.