×Закрыть

Нейронные сети в помощь SEO-специалистам: как DeepCaptcha автоматически разгадывает капчи

В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на editors@dou.ua.

Меня зовут Дмитрий Литавский, я Head of Big Data SEO в компании Promo — первом украинском агентстве Performance Marketing. В этой статье хочу рассказать о нашем новом продукте — DeepCaptcha. Сервис разработан с помощью технологий машинного обучения. Он упростит и ускорит работу SEO-специалистов, веб-мастеров, маркетинговых агентств и пользователей крупных сервисов по парсингу поисковых систем.

Идея

При анализе потоковой выдачи, парсинге больших объемов информации, мониторинге уникальности текстов, съеме позиций, поиске маркетинговых инсайтов, просмотре эффективности маркетинговых работ мы, команда Big Data SEO, стараемся максимально оптимизировать процессы. Google распознает автоматизированные действия и пытается защитить систему от атаки роботов, выкидывая капчу. Капча, в свою очередь, существенно тормозит работу: например, разгадывание одной картинки занимает около 30 секунд, а при парсинге 10 тысяч страниц выскакивает до 1000 капч. SEO-специалист мог потратить целый рабочий день на разгадывание капчи.

Мы решили обратиться к сервисам по обходу капчи — AntiCaptcha и RuCaptcha. Они работают в полуавтоматическом режиме:

  • Вы загружаете капчу.
  • Сервер сохраняет капчу и передает ее работнику (чаще всего это житель стран третьего мира).
  • Работник решает капчу и отправляет ответ на сервер.

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

Также не стоит забывать о стоимости таких услуг. За тысячу разгаданных капч придется заплатить 2—3$. При больших объемах, например, 1–2 млн запросов, где может быть 10, 20, 30 или 100 тысяч капч, уже получается 200—300$ за 1 съем.

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

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

История создания

Мы приняли решение собрать две команды Data Science и устроить между ними соревнование. С каждой группой специалистов обсудили задачи, вид капчи и Definition of Done. В итоге команда-победитель — 4 лучших специалиста по машинному обучению — перешла к нам в штат. Также над проектом трудились 3 Scala-разработчика, которые отвечали за внутреннюю работу сервиса.

Команда DeepCaptcha

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

  • при появлении нового класса не переучивать старую сеть, а просто научить новую;
  • это дает больше точности — ориентируясь только на свой класс, нейронка не путается.

Цикл обучения:

  • Сбор данных. Back-end-разработчики скачали изображения из reCAPTCHA demo, которые сгруппировали по категориям: пожарные гидранты, автомобили, пешеходные переходы, автобусы и т. д. Вышло более 20 000 картинок.
  • Тренировка нейронной сети. Специалисты по Data science предоставили сети последовательность размеченных обучающих примеров. В полуавтоматическом режиме размечали элементы на картинке и обучали нейросеть распознавать изображения для каждой категории. Если Google обновит базу картинок, мы обучим новые нейронки.
  • Оценка качества модели. На данном этапе мы при помощи наших Validation dataset оценивали точность натренированных моделей и вносили изменения в алгоритм для улучшения качества.

Средняя точность классификации изображений нейронными сетями составляет 98%. Пришлось пожертвовать точностью ради увеличения скорости разгадывания капчи.

Разработка сервиса

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

Сервис DeepCaptcha состоит из трех блоков:

  1. Back-end — часть.
  2. Кликер.
  3. Собственно нейронная сеть.

Back-end-часть принимает задачи и отправляет на кликеры. Кликер запускает браузер, открывает капчу и распознает требуемый класс, загружает картинку и отправляет ее в определенную нейронную сеть. Бинарная нейронка идентифицирует класс и подтверждает, присутствует ли на данном изображении искомый объект. Получив «Да», кликер нажимает на нужные изображения капчи и выдает решение.

Кликер — сервис, который напрямую «борется» с капчей. Принцип работы довольно прост. На удалённом сервере кликер, приняв задачу, открывает в новом потоке браузер, переходит на заданный пользователем сайт, обнаруживает капчу и начинает её разгадывание. Кликер умеет взаимодействовать со всеми элементами капча фрейма и соответствующе реагировать на его поведение. Благодаря нейронной сети наша программа знает, какая картинка «правильная» в предложенном наборе. Кликер нажимает по каждой, пока таких картинок не останется. Далее идет кнопка submit — и либо мы получаем результат, либо продолжаем разгадывание. В конечном итоге, Google reCAPTCHA v2 сдается и верит роботу. Мы забираем ключ капчи, с помощью которого пользователь может пройти проверку уже в своём браузере на соответствующем запросу сайте.

Таким образом, наша программа проходит Completely Automated Public Turing test to tell Computers and Humans Apart (CAPTCHA) — тест, нацеленный на то, чтобы отличить действия робота от действий реального человека. Кликер взаимодействует с браузером посредством драйвера и нескольких библиотек, использует нестандартные решения для взаимодействия с интерфейсом капчи и обходит целый ряд элементов защиты Google.

Мы используем микросервисную архитектуру, где кликер, нейронная сеть и back-end — отдельные сервисы, число которых может варьироваться в зависимости от нагрузки. Такая архитектура позволяет нашим stateless-микросервисам легко масштабироваться и обновлять систему по частям. То есть в момент обновления уже запущенные задания разгадывания не будут прерваны, а новые будут запущены на новых версиях. Кроме того, все компоненты системы являются кросс-платформенными. Кликер и нейронная сеть быстро и эффективно обмениваются между собой сообщениями посредством месседж-брокера Apache Kafka, таким образом кликер и нейросети масштабируются независимо и гибко подстраиваются под реальные показатели нагрузки.

Над чем работаем

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

Сейчас на одну капчу уходит 40-60 секунд. Мы стремимся к тому, чтобы Google пропускал разгадывание с первого раза — за 15-20 секунд.

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

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

На сегодня DeepCaptcha — рабочий продукт, который:

  • одновременно запускает более 100 потоков разгадывания — количество зависит от нагрузки на облачном сервере. После тестирования количество будет неограниченным;
  • стоит 30 грн за 1000 разгаданных капч.

Сервис является абсолютно законным относительно политики конфиденциальности Google. DeepCaptcha разработан для ускорения получения информации с поисковой системы Google. Капча появляется из-за ограничений Google потока данных, во избежании перегрузки его серверов.

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

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

LinkedIn

27 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.
We are work actively to improve our systems and the service will be work correctly in the near future.

За грамматические ошибки на landing page ещё до сих не предусмотрено уголовное наказание?

Xevil от хрумера норм разгадывает )

В отличие от Xevil, DeepCaptcha разгадывает на GPU, а не CPU и даже обходит определение автоматического разгадывания. Кроме этого наш продукт мультиплатформенный, а Xevil работает только на винде. DeepCaptcha не требует каких-либо установок и ресурсов пользователей, все на стороне наших серверов.

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

Ну к примеру в условиях reCapth`и мог быть пункт что за обход её (не человеком) можно получить бан, штраф, что-то плохое. Ну и также на сайте

надпись «подтвердите что вы не бот» ничего не говорит?)

Так вот с чьей помощью мне в блог пытаются спамить.
Кстати, приемы по обману сверточных сетей, в общем-то известны (во всяком случае уж Гуглу наверняка известны). Удивительно, почему они на добавляют те же white boxes на свои капчи.

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

А в чем собственно уникальность? Вот к примеру captcha.guru/ru цена 30 российских рублей за рекапча2.

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

Одни чуваки построили анти-спам в виде капчи
в итоге «наш человек» решил сделать бота, который будет разгадывать капчу
И решил продавать бота, который будет побеждать другого бота

у меня два вопроса:
1) здается мне что это таки нелегально
2) Не дешевле было заплатить гуглу чтобы он внес вас в список исключений чем городить такой огород?

Чем распознавание образов нелегально, если при этом не выкладывается в сеть чужая личная информация?
Гугл дорожит своей репутацией больше, чем деньгами за исключение

То есть это легально но не этично?

Это легально, этично, и вообще — двигатель прогресса.

Чую что где-то здесь подвох.

Например, не нарушает ли данная вещь политику того же гугла

Вы подписывали с ними что-то?

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

А при использовании апи вроде как его тоже нужно создавать

Recaptcha це звичайно добре. І конкурентів у вас багато, хоча у вас і не ручне розгадування. У кого невеликі обєми, ті не будуть думати переналаштовувати своїх ботів під ваш сервіс.
А ось якби ви розібрались з GeeTest captcha і реалізували підтримку її обходу, — тут у вас була б монополія. Наразі тільки антікаптча анонсували підримку GeeTest, але вона в них не працює, і їм не цікаво розбиратись. Їх ніша і основний прибуток — звичайні гуглові капчі.

Дякую за коментар, обов’язково проаналізуємо можливість автоматичного вирішення GeeTest captcha.

А ботів не потрібно переналаштовувати, оскільки наше API аналогічне до антікапчі та ксевілу.

Вот она эволюция, теперь одна нейронка тренерует другую нейронку)

Достойно.
1) Кешируете капчи? Это должно дать ускорение, если попадется уже известная.
2) Видяшки используются? Вообще, скорость подозрительно мала по сравнению с реал-тайм у Ринга.

Спасибо, Денис!
1) Не кешируем, так как само разгадывание проходит быстро — 9 изображений за 0,13 секунды.
2) Да, нейронные сети работают на видеокартах. Проблемы со скоростью состоят именно в том, что Google распознает серверные разгадывания и выдает повторные капчи, и для того чтобы сымитировать реального пользователя приходиться делать небольшие паузы в выборе правильных изображений.

Так может, внедрять Ваш код в браузер клиента? Или VPN ему на комп поставить, и через него ходить.

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

Так внедрите в API опцию VPN для выхода в интернет со стороны клиента. Если это на порядоу ускорит работу — многие будут счастливы.

Подписаться на комментарии