Як і навіщо автоматизувати обхід рекапчі

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

Мене звати Сергій і у вільний час вивчаю можливості Node.js Typescript NestJS. Але займаюсь і автоматизацією (Pupeteer/Selenium/Postman/Click`em), бо в щоденній роботі вона як-не-як стає у нагоді. Саме тому автоматизація тестування і обхід капчі — один з процесів, який допоможе розробнику не витрачати зайвий час. Матеріал буде корисний тим, у кого є однотипні завдання і їхнє вирішення можна автоматизувати. Моя рекомендація, якщо 1 задача виконується більше 3х разів на день — розробіть інструмент, який по натиску однієї кнопки повністю виконає цю роботу.

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

Для чого автоматизувати обхід рекапчі

Людство витрачає понад 500 років щодня на постійний обхід рекапчі. Знайти автобуси, позначити світлофори, ввести символи, додати 2 і 7. Пересічний користувач бачить одну рекапчу 1 раз на 10 днів. Однак, ІТ-спеціалістам доводиться по сотню разів на добу вводити ті чи інші символи, аби підтвердити, що вони не роботи. Деякі компанії замовляють окремі аутсорсингові послуги, щоб цілі відділи вводили рекапчу замість них.

З іншого боку, пишучи вебплатформу чи додаток, потрібно оцінювати й ризики бот-атак, а відтак — створювати такі системи захисту, які одночасно не дратуватимуть користувачів, але захищатимуть ресурс. Останні кілька років я цікавлюсь темами автоматизації таких процесів. Це дозволить давати клієнтам готовий інструмент, який мінімізує однотипну роботу.

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

На ринку існує багато сервісів, що допомагають навчати нейромережі чи автоматизувати тестування безпеки продуктів. 1 обхід капчі може коштувати менше ніж 1-2 копійки (залежить від типу). Навіть при такій низькій ціні, використовувати програму виходить дорого (3-5 тисяч бот-заходів на сайт — і вже кругла сума). Тому для себе обрав сервіс для розпізнавання капчі CapMonster з ціною в 10$ на місяць. А ще оплачую проксі — це ще додаткових 10-20$.

Типи капчі

Ближче до справи. Перше, що я зробив — класифікував капчі:

  1. Графічні — де написані цифри чи щось намальовано і потрібно вибрати вірний елемент;
  2. Якірні — де сайт видає ключ та адресу до капчі, а вона створюється окремо від сайту;
  3. Програмні — нові капчі, які здатен вирішувати сам браузер і в ідеалі їх користувач може й не бачити.

Графічні. Найпростіша — стандартна CAPTCHA, яка вже дуже рідко використовується, але все ще на деяких сайтах її можна знайти.

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

Якірною капчею може бути графічна капча, але ускладнена. Наприклад, коли на сайті користувач бачить кілька зображень і одне з них перевернуте догори. Йому не просто потрібно визначити «дефектну» ілюстрацію, але ще й перевернути її.

Одна з найпопулярніших — рекапча від Google. Сьогодні вона майже неактуальна, бо забезпечує низький рівень захисту. Її можна з легкістю зламати найпростішою нейромережею. Усе тому, що картинки для тих баз застарілі і їх насправді досить багато довкола. Ті ж світлофори чи автобуси можна сфотографувати власноруч і «навчити» нейромережу їх визначати та обходити.

Існує інша якірна капча — KeyCaptcha. Для її рішення потрібно зібрати невеликий пазл чи відсортувати зображення за категоріями. Однак, сьогодні обійти такі капчі теж просто: достатньо нейромережу навчити розрізняти категорії, присвоєні малюнкам.

Трохи складніші якірні капчі — де є список зображень і з ним потрібно виконати певну дію: знайти перевернуте зображення, знайти серед чорно-білих кольорове або навпаки, обрати «зайве» тощо.

Як обійти різні типи капч

Щоб обійти ці капчі, я написав програму, що сама реєструється на сайті чи авторизується і виконує роботу. Код зайняв 3800 рядків. Написати його просто, наприклад, по інструкції за посиланням. І все завантажив на програмний комплекс CapMonster. Узагалі платформа виявилася найзручнішою і найдешевшою.

Щоб нейромережа навчилась обходити графічні капчі на 98% було достатньо 1 дня навчання та 2000 картинок. Адже за більшої кількості — результат ставав гіршим (це все на власному досвіді досліджень). Власне, для ботоферм хорошим результатом буде 93% проходжень.

З цікавого можна перевірити свій score при проходженні reCaptcha. Це можна зробити за цим посиланням. При видачі ключа і видається ваш score. Від його значення та від конфігурацій сайту залежить наскільки складну капчу отримаєте. Якщо в вас значення 0,1 чи 0,3 — вітаю, ви схожі на бота. А 0,7 або 0,9 — такий score зазвичай отримує пересічний користувач.

Одна зі складних якірних капч — SolveMedia. Вона має кілька рівнів «легка», «звичайна», «складна» і «дуже складна». Так от часто користувачам не піддається капча вже на етапі «звичайної». Мені вдалося навчити нейромережу проходити її з 61% успішністю.

В цій капчі символи розпливаються, переплітаються одне з одним і їх дуже складно розгадати. Та найважче було працювати з її якорем — на нього пішло дуже багато часу. Зате в результаті він виявився звичайною капчею і його вдалося вирішити за 2-3 підходи. Виходить так, що людині справді складно розпізнати ті всі символи, але програма з легкістю це робить. Ось тут можна знайти обхід цього якоря на мові «Click`Em Project». Але його легко адаптувати на інші мови програмування.

Програмні капчі, за великим рахунком, можуть вирішувати майже всі браузери. Якщо ж таки виникають складнощі, браузер блокується і просить вирішити звичайну капчу. Наприклад, таке трапляється коли cookies чи Javascript вимкнені на сайті. Факторів блокування дуже багато — все залежить від розширення екрану, кількості заходів на цей сайт, часового поясу, IP-адреси і так далі.

Щоб браузер легше розгадував капчу, можна йому допомогти додатковими налаштуваннями: задати додаткові проксі, змінювати IP адресу, змінювати браузер чи підмінювати його.

Яка капча найефективніша

На мою думку — Cloudflare, який з минулого року перейшов на hCaptcha. Ефективність забезпечується комбінацією одразу двох капч: і програмної, і якірної. В мене пішов тиждень на злам. Довелося створити власний сервер, додати затримку в 3 секунди перед початком вирішення капчі (бо жива людина спершу заходить на сайт і кілька секунд витрачає на ознайомлення з завданням). Складність вирішення — великий перемішаний масив слів. За посиланням на gitHub можна знайти репозиторій зі взломом HCaptcha та напрацюваннями по обходу Cloudflare.

Капчу Cloudflare можна побачити, приміром, на market.dota2.net, коли браузер просить 4 секунди перед входом на сайт. Нею зручно користуватися, її легко під’єднати й вона фільтрує більшість небажаного трафіку.

Сьогодні з’являються нові способи підтверджувати особистість: від біометричної автентифікації до багатофакторної, коли зайти в систему чи на сайт можна через особистий кабінет або за допомогою повідомлень і паролів, надісланих на телефон. У будь-якому випадку капча стає складнішою, тому що боти «розумнішають». А ІТ-компаніям і розробникам лишається бути третьою стороною й шукати шляхи прискорення опрацювання капчі задля ефективної роботи.

👍НравитсяПонравилось17
В избранноеВ избранном7
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А в чем ценность статьи? В рекламе использования CapMonster?

1) Эх, где вы были со своей статьей когда лет 8 назад у нас был большой заказчик с просьбой написать парсер кое-каких сайтов и там уперлось все именно в обход разнообразных капч
2) Из статьи мой вывод что если хочешь хорошо защититься от ботов то «просто прикрути капчу» вообще недостаточно — раз уж у умельцев это занимает 10 минут

Щас норм API есть, доллар за 1000 каптч решенных, если я не ошибаюсь

Оно и 10 лет назад было

Да, Сереж, ты меня не перестаешь удивлять!

Теперь жду статью «Написал бота который решает 90% SolveMedia капч»

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

Не ясно для чого оця уся складність із нейронними мережами і т.д. Ви працюєте із зовнішнім сервісом, де якраз і є ця рекапча?

Якщо ні, чому б не спростити це усе до спеціального механізму, що дозволяє у develop environment імітувати роботу рекапчі, замість роботи з реальною рекапчою?

Прежде чем ломать каптчу — проверьте, правильно ли она подключена на сайте :))
Сэкономит вам деньги на прокси и на распознавателе.

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

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