Как пройти captcha со слонами нарисованными листьями
Перейти к содержимому

Как пройти captcha со слонами нарисованными листьями

  • автор:

Как пройти ReCaptcha V2 без браузера, инструкция

В настоящее время можно пройти рекапчу без эмуляции браузера на любом сайте.
Краткое описание как это сделать:
1) На странице, где встретилась рекапча галочкой, посмотрите код элемента
2) Найдите ссылку, начинающаюся на «www.google.com/recaptcha/api2/anchor»
3) Из этой ссылки возьмите значение параметра k=
4) Отправьте нам GET-запрос вида
http://rucaptcha.com/in.php?key=YOUR_CAPTCHA_KEY&method=userrecaptcha&googlekey=%googlekey%&pageurl=%http://site.com%
где
YOUR_CAPTCHA_KEY это Ваш ключ со страницы https://rucaptcha.com/setting
%googlekey% это значение параметра «k» из предыдущего шага
%http://site.com% это адрес страницы, где Вы встретили капчу. Указывайте полный адрес, даже если получить доступ к нему можно лишь после авторизации. 5) В ответ Вы получите
OK|Captcha_ID
где Captcha_ID — номер капчи в нашей системе

6) через 5-10 секунд сделайте запрос к нашему серверу вида
http://rucaptcha.com/res.php?key=YOUR_CAPTCHA_KEY&action=get&id=Captcha_ID
где
YOUR_CAPTCHA_KEY это Ваш ключ
Captcha_ID — номер капчи из предыдущего шага В ответе вы получите
OK|%responce%
где %responce% код для прохождения рекапчи
7) В инспекторе найдите строку, начинающаюся на 8) И уберите оттуда кусок «display: none;»
9) На странице, под рекапчей с галочкой появится поле для ввода.
10) введите туда %responce%, полученный от нашего сервера
11) Нажмите кнопку «Submit»
12) Рекапча пройдена!
Как понимаете, все эти действия возможно реализовать и без использования браузера. Прочтите дополнительную информацию, которая поможет Вам в прохождении рекапчи Дополнительная информация 1) Значение параметра k постоянно и не меняется. Оно может измениться только в том случае, если администратор домена вручную его изменил. 2) Ответ, который Вы получили от нашего сервера активен в течении 120 секунд ( с момента, когда его получил наш работник). 3) Вы можете сначала получить код для прохождения капчи, а только потом открывать страницу, где она используется. Вы можете работать в многопоточном режиме: вы можете получить несколько кодов для прохождения рекапчи для одного сайта и только потом их использовать. Главное, что один код можно использовать только 1 раз и только в течении 120 секунд с момента, когда наш работник получил его 4) Если на запрос ответа от нашего сервера Вы получили:
CAPCHA_NOT_READY
значит работники ещё не успели решить капчу.
Если
ERROR_CAPTCHA_UNSOLVABLE
Что-то пошло не так:
а) Вы загрузили несуществующий googlekey
б) Гугл изменил алгоритм работы и этот алгоритм в данный момент не работает
в) Слишком большая нагрузка на наших работников и они не успели решить капчу за 90 секунд

CAPTCHA

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

«IT-специалист с нуля» наш лучший курс для старта в IT

Название — аббревиатура от английского предложения Completely Automated Public Turing Test To Tell Computers and Humans Apart. На русский его примерно можно перевести как «полностью автоматический тест Тьюринга для отделения компьютеров от людей». Это название очень длинное, поэтому его и сократили до «капчи».

Тестом Тьюринга называют испытание, которое может пройти только умеющее мыслить существо, — его придумал английский математик Алан Тьюринг. Мы подробнее расскажем о тесте ниже.

Зачем нужна капча

Капча нужна, чтобы определить, кто пытается совершить операцию — человек или робот. Без ее прохождения нельзя выполнить то или иное действие: войти на сайт, авторизоваться, оставить комментарий. Задание обычно довольно простое для человека и практически невыполнимое для робота.

Зачем вообще отсеивать ботов? Есть несколько причин:

  • злоумышленники. Боты могут использоваться для разных видов атак на сайты. В первую очередь это DDoS-атаки — автоматизированные массовые запросы, которые перегружают сервер. Еще есть брутфорс — подбор логина и пароля с помощью робота, пробующего разные варианты практически бесконечно;
  • спам. Частый вариант использования бота — отправка «мусорных» рекламных сообщений, которые мешают полезному контенту;
  • махинации. Например, интернет-магазины иногда проводят ограниченные по времени акции вида «Успей купить», и роботы могут мониторить такие предложения, скупая весь акционный товар за несколько секунд.

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

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Кто пользуется капчей

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

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

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

Как может выглядеть капча

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

  • простые вопросы, на которые может однозначно ответить человек, например, «Как звали Пушкина?»;
  • математические примеры, которые нужно решить и ввести результат;
  • мини-игры вида «Кликните на красную кнопку» или «Соберите пазл»;
  • выбор правильных вариантов из списка — обычно это задания вида «Укажите все картинки со светофорами».

Последний пример активно используется в популярном сервисе Google reCAPCHA. Он считается довольно надежным в сравнении с традиционными методами вроде сочетания букв.

Это не исчерпывающий список: вариантов капчи множество, а конкретное исполнение зависит только от фантазии ее создателей. Есть даже невидимая капча, которая делает выводы по деятельности пользователей, — ей пользуется Google.

Идея капчи: тест Тьюринга

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

Алан Тьюринг придумал эмпирический тест, задача которого — определить, может ли существо мыслить. Классический тест устроен так: у человека есть два невидимых собеседника — машина и другой человек. Если тот не может правильно определить, который из них робот, значит, машина способна к мышлению.

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

До последнего времени тест Тьюринга не могла пройти ни одна машина. Недавно это удалось искусственному интеллекту LaMDA от Google. А некоторые рисунки нейросетей GPT-3 и DALL-E 2 уже невозможно отличить от человеческих. Но это не значит, что они могут мыслить: уже доказано, что прохождение теста говорит не о наличии мышления, а об умении его имитировать.

Как устроена капча

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

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

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

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

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

Может ли робот обойти капчу

Капча может быть «сильной» и «слабой». «Слабую» капчу легко пройти роботам, а «сильную» — почти невозможно. Впрочем, у нее часто есть другой недостаток: ее становится тяжело пройти людям.

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

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

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

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

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

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

Как защитить капчу от роботов

Есть несколько способов: пользоваться более мощными алгоритмами или применять альтернативные виды защиты от спамеров и атак.

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

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

Про альтернативные виды защиты, такие как специальные файерволы против атак, мы поговорим чуть ниже.

Преимущества капчи

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

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

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

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

Недостатки капчи

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

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

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

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

Чем можно заменить капчу

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

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

Как установить капчу на сайт

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

На что обратить внимание при установке капчи

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

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

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

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

картинка (75)

Статьи по теме:

Эксперты рассказывают об изменениях в работе специалистов по кибербезопасности после начала кризиса, требованиях и перспективах профессии

Окей, Google: как пройти капчу?

Здравствуйте. Меня зовут Ибадов Илькин, я студент Уральского федерального университета.

В данной статье я хочу рассказать о своем опыте автоматизированного решения капчи компании «Google» — «reCAPTCHA». Хотелось бы заранее предупредить читателя о том, что на момент написания статьи прототип работает не так эффективно, как может показаться из заголовка, однако, результат демонстрирует, что реализуемый подход способен решать поставленную задачу.

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

Форма регистрации на «Хабре» могла бы быть и с такой капчей.

С развитием технологий машинного обучения эффективность работы капчи может оказаться под угрозой. В данной статье я описываю ключевые моменты работы программы, которая может решить проблему ручного выбора изображений в «Google reCAPTCHA» (к радости, пока не всегда).

Чтобы пройти капчу, необходимо решить такие задачи как: определение требуемого капчей класса, обнаружение и классификация объектов, обнаружение ячеек капчи, имитация деятельности человека в решении капчи (движение курсором, клик).

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

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

Обнаружение объектов

Обнаружение и классификация объектов — это то, чем занимается нейросеть. Библиотека, которая позволяет нам работать с нейронными сетями называется «Tensorflow» (разработана компанией «Google»). Сегодня к Вашему выбору есть множество различных обученных моделей на разных данных, а значит, что все они могут возвращать различный результат обнаружения: какие-то модели будут лучше обнаруживать объекты, а какие-то хуже.

В данной работе я использую модель «ssd_mobilenet_v1_coco». Выбранная модель обучена на наборе данных « COCO », в котором выделены 90 различных классов (от людей и автомобилей до зубной щетки и расчески). Сейчас есть и другие модели, которые обучены на тех же данных, но с другими параметрами. Кроме того, данная модель имеет оптимальные параметры производительности и точности, что немаловажно для настольного компьютера. В источнике сообщается, что время обработки одного кадра размером 300 x 300 пикселей составляет 30 миллисекунд. На «Nvidia GeForce GTX TITAN X».

Результатом работы нейросети является набор массивов:

  • с перечнем классов обнаруженных объектов (их идентификаторами);
  • со списком оценок обнаруженных объектов (в процентах);
  • со списком координат обнаруженных объектов («боксов»).

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

Обнаружение ячеек

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

_retval, binImage = cv2.threshold(image,254,255,cv2.THRESH_BINARY) contours = cv2.findContours(binImage, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]

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

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

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

Экспериментально выявлено, что величины интересуемых контуров лежат в диапазоне от 360 до 900 единиц. Данная величина подобрана на экране с диагональю 15,6 дюймов и разрешением 1366 x 768 пикселей. В дальнейшем, указанные величины контуров можно вычислять в зависимости от размера экрана пользователя, но в создаваемом прототипе такой привязки нет.

Главное преимущество выбранного подхода к обнаружению ячеек заключается в том, что нам всё равно, как будет выглядеть сетка и сколько всего будет показано ячеек на странице капчи: 8, 9 или 16.

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

Дополнительным преимуществом обнаружения контуров является и то, что «OpenCV» позволяет нам обнаружить их центры (они нужны нам для определения координат перемещения и клика мышкой).

Отбор ячеек для выбора

Имея массив с чистыми контурами ячеек капчи без лишних контуров шумов, мы можем в цикле пройти по каждой ячейке капчи («контуру» в терминологии «OpenCV») и проверить её на факт пересечения с обнаруженным «боксом» объекта, полученным от нейросети.

Для установления этого факта, применялся перевод обнаруженного «бокса» в аналогичный ячейкам контур. Но такой подход оказался неправильным, потому что случай, когда объект располагается внутри ячейки, не считается за пересечение. Естественно, что такие ячейки не выделялись в капче.

Проблема была решена перерисовкой контура каждой ячейки (с белой заливкой) на черный лист. Аналогичным образом было получено бинарное изображение рамки с объектом. Возникает вопрос — как теперь установить факт пересечения ячейки с закрашенной рамкой объекта? В каждой итерации массива с ячейками, над двумя бинарными изображениями производится операция дизъюнкци (логическое или). В её результате мы получаем новое бинарное изображение, в котором будут выделены пересекаемые участки. То есть, если такие участки имеются — значит ячейка и рамка объекта пересекаются. Программно такую проверку можно сделать методом «.any()»: она вернет «True» если в массиве имеется хотя бы один элемент равный единице или «False», если единиц нет.

Функция «any()» для изображения «Logical OR» в данном случае вернет истину и тем самым установит факт пересечения ячейки с областью рамки обнаруженного объекта.

Управление

Управление курсором в «Python» становится доступным благодаря модулю «win32api» (однако позднее выяснилось, что уже импортированный в проект «PyAutoGUI» тоже умеет это делать). Нажатие и отпускание левой кнопки мыши, а также перемещение курсора в нужные координаты производится соответствующими функциями модуля «win32api». Но в прототипе они были завернуты в пользовательские функции для того, чтобы обеспечить визуальное наблюдение за движением курсора. Это негативно влияет на производительность и было реализовано исключительно для демонстрации.

В процессе разработки возникла идея выбора ячеек в случайном порядке. Возможно, что это не имеет практического смысла (по объяснимым причинам «Google» не дает нам комментариев и описания механизмов работы капчи), однако перемещение курсора по ячейкам в хаотичном порядке выглядит забавнее.

На анимации результат «random.shuffle(boxesForSelect)».

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

Для того, чтобы объединить все имеющиеся наработки в единое целое, требуется еще одно звено: блок распознавания требуемого от капчи класса. Мы уже умеем распознавать и отличать разные объекты на изображении, мы умеем кликать на произвольные ячейки капчи, однако мы не знаем на какие именно ячейки нужно нажать. Одно из направлений решения данной проблемы — распознавать текст из шапки капчи. Первым делом я попробовал реализовать распознавание текста при помощи средства оптического распознавания символов «Tesseract-OCR».

В последних версиях имеется возможность установки языковых пакетов прямо в окне программы установки (раньше это делалось вручную). После установки и импорта «Tesseract-OCR» в свой проект, я попытался распознать текст из шапки капчи.

Результат, к сожалению, меня совершенно не впечатлил. Я решил, что текст в шапке выделен жирным и слитным начертанием не просто так, поэтому я попробовал применить к изображению различные преобразования: операции бинаризации, сужения, расширения, размытия, искажения и изменения размеров. К сожалению, это не дало хорошего результата: в лучших случаях определялась лишь часть букв класса, а когда результат получался удовлетворительным, я применял эти же преобразования, но для других шапок (с другим текстом), и результат снова получался плохим.

Распознавание шапки с «Tesseract-OCR» обычно приводило к неудовлетворительным результатам.

Нельзя однозначно сказать, что «Tesseract-OCR» плохо распознает текст, это не так: с другими изображениями (не шапками капчи) инструмент справляется значительно лучше.

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

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

text = serviceResponse['ParsedResults'][0]['ParsedText'] #получил текст из JSON lines = text.splitlines() #Разбил на элементы print("Recognized " + lines[1]) #Готово к использованию!

Сервис, который распознавал текст, практически никогда не ошибался с названием класса, но я всё равно решил оставить часть названия класса для возможной ошибки. Это необязательно, но я заметил, что «Tesseract-OCR» в некоторых случаях неправильно распознавал конец слова начиная с середины. Кроме того, такой подход исключает ошибку приложения, в случае длинного названия класса или названия из двух слов (в таком случае сервис вернет не 3, а 4 строки, и я не смогу найти во второй строке вхождение полного наименования класса).

Сторонний сервис хорошо распознает наименование класса без каких-либо преобразований над изображением.

Слияние наработок

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

if "автом" in query: # ищем вхождение класса в запросе капчи classNum = 3 # присваиваем соответствующий "label map" идентификатор elif "свето" in query: classNum = 10 elif "пожар" in query: classNum = 11 . 

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

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

Статья была бы не полной, если бы в ней не было описания самого главного — галочки успешного прохождения капчи. Я решил, что с такой задачей может справиться простое сравнение по шаблону. Стоит отметить, что сравнение по шаблону — далеко не самый лучший путь для обнаружения объектов. Мне, например, пришлось выставить чувствительность обнаружения на значение «0.01», чтобы функция перестала во всем видеть галочки, но видела её, когда галочка действительно есть. Аналогичным образом я поступил с пустым чекбосом, который встречает пользователя и с которого начинается прохождение капчи (там проблем с чувствительностью не было).

Результат

Результатом всех описанных действий стало приложение, работоспособность которого я протестировал на «Тостере»:

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

«Google reCAPTCHA» возвращает сайту некую величину, показывающую насколько «Вы робот», а администраторы сайта, в свою очередь, могут установить порог прохождения этой величины. Возможно, что на «Тостере» был установлен относительно низкий порог прохождения капчи. Это объясняет достаточно легкое прохождение капчи программой, несмотря на то, что она дважды ошиблась, не увидев светофор из первой страницы и пожарный гидрант из четвертой страницы капчи.

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

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

При сомнении в Вашей человечности возможен и такой исход.

Развитие

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

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

  • пешеходные переходы;
  • пожарные гидранты;
  • витрины;
  • дымовые трубы;
  • автомобили;
  • автобусы;
  • светофоры;
  • велосипеды;
  • транспортные средства;
  • лестницы;
  • знаки.

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

К выявлению необнаруженных объектов приводит и увеличение изображения из маленького квадрата в большой (до 300 x 300 пикселей).

Слева объекты не обнаружены: оригинальный квадрат стороной 100 пикселей. Справа автобус обнаружен: увеличенный квадрат до 300 x 300 пикселей.

Еще одним интересным преобразованием можно отметить удаление белой сетки над изображением средствами «OpenCV»: возможно, что пожарный гидрант на видео не обнаружился именно по этой причине (такой класс присутствует в нейронной сети).

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

Итоги

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

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

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

Из содержания и сути материала может показаться, что я не люблю «Google» и в частности «reCAPTCHA», однако это далеко не так, и, если следующей реализации быть — я расскажу почему.

Разработано и продемонстрировано в целях повышения уровня образования и улучшения методов, направленных на обеспечение безопасности информации.

Спасибо за внимание.

  • automation
  • captcha
  • computer vision
  • google
  • machine learning
  • neural network
  • optical character recognition
  • python
  • recaptcha
  • автоматизация
  • безопасность
  • капча
  • компьютерное зрение
  • машинное обучение
  • нейросети
  • оптическое распознавание символов
  • Информационная безопасность
  • Python
  • Обработка изображений
  • Машинное обучение

Современные методы обхода CAPTCHA

Капча используется для предотвращения автоматизированных действий и DDoS-атак в Интернете. Два крупнейших провайдера капчи — reCAPTCHA (Google) и hCaptcha. Для решения обеих пользователю требуется выбрать изображения или фрагменты изображения, на которых изображен заданный объект. Решение капчи — утомительный и времязатратный процесс, поэтому стали активно разрабатываться методы автоматизированного решения капчи.

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

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

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

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

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

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

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

Поддерживаемые капчи: ImageToTextTask, HCaptcha, FunCaptcha, ReCaptcha, ReCaptchaV2, ReCaptchaV3, AwsWaf, Geetest, MtCaptcha, DataDome, CyberSiAra, Imperva, Cloudflare(turnstile), Cloudflare(challenge 5s), Akamai BMP, Akamai WEB

Стоимость за 1000 капчей: от $0,6 до $3

Среднее время решения одной капчи: обычные капчи — до 5с, reCAPTCHA — 3-9с

Особенности сервиса:

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

Поддерживаемые капчи: обычная текстовая, reCAPTCHA V2/3, reCAPTCHA Enterprise, hCaptcha, GeeTest, Capy Puzzle, TikTok, ClickCaptcha, RotateCaptcha, FunCaptcha, KeyCaptcha

Стоимость за 1000 капчей: обычные капчи — от 30 до 44 рублей в зависимости от нагрузки на сервис, reCAPTCHA — 160 рублей

Среднее время решения одной капчи: обычные капчи — до 7 с, reCAPTCHA — 32 с

Особенности сервиса:

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

Поддерживаемые капчи: обычная текстовая, reCAPTCHA V2/3, hCaptcha, GeeTest

Стоимость за 1000 капчей: обычные капчи — 5 рублей, reCAPTCHA — 30 рублей

Среднее время решения одной капчи: обычной капчи — 10 с, reCAPTCHA — 40 с

Особенности сервиса:

  • наличие реферальной программы.

Поддерживаемые капчи: обычная текстовая, reCAPTCHA V2

Стоимость за 1000 капчей: обычные капчи — от 102 рублей, reCAPTCHA — от 214 рублей в зависимости от нагрузки на сервис

Среднее время решения одной капчи: обычной капчи и reCAPTCHA — 15 с

Особенности сервиса:

  • возврат оплаты при неправильном решении капчи;
  • опция распознавания с точностью 100% за счет решения одной капчи несколькими исполнителями.

Поддерживаемые капчи: обычная текстовая, reCAPTCHA V2/3, reCAPTCHA Enterprise, hCaptcha, GeeTest, FunCaptcha

Стоимость за 1000 капчей: обычные капчи — от 37 до 44 рублей, reCAPTCHA — от 110 до 150 рублей в зависимости от нагрузки на сервис

Среднее время решения одной капчи: обычной капчи — 7 c, reCAPTCHA — 30 с

Особенности сервиса:

  • плагины для браузеров Google Chrome и Mozilla;
  • дашборд со статистикой обработки запросов.

Поддерживаемые капчи: обычная текстовая, reCAPTCHA V2/3

Стоимость за 1000 капчей: обычные капчи — от 2 до 29 рублей, reCAPTCHA — от 67 до 97 рублей

Среднее время решения одной капчи: обычной капчи и reCAPTCHA — 3 с

Особенности сервиса:

  • наличие реферальной программы;
  • безлимитные пакеты патчей за фиксированную стоимость.

Рассмотрим пример использования сервиса ruCAPTCHA для решения капчи в браузере. После регистрации на rucaptcha.com и пополнения счета нужно скопировать ключ API на странице rucaptcha.com/setting :

Затем можно перейти на страницу rucaptcha.com/software и скачать плагин для Chrome:

После установки потребуется ввести скопированный ключ API:

Готово! Протестируем работу плагина. В нашем примере это будет сервер minecraft-mp.com , для регистрации на котором требуется решить hCaptcha. Рядом с полем капчи появилась кнопка “Решить с 2CAPTCHA” (2CAPTCHA — зеркало ruCAPTCHA):

После нажатия на нее (нажимать кнопку “Я человек” не нужно) появится надпись “Капча решена!”. При попытке продолжить регистрацию можно убедиться, что капча решена верно:

В разделе личного кабинета ruCAPTCHA со статистикой решений представлены результаты выполнения запроса. Время распознавания составило 9 секунд, а стоимость — 16 копеек:

Таким образом, ручное распознавание — наиболее доступный и удобный способ решения капчей. Его можно использовать как для автоматизированного обхода большого количества капчей с помощью обращений к API, так и для личного использования с помощью плагинов и другого ПО, предоставляемого сервисами по решению капчей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *