Як AI-розв'язувач капчі працює: моделі, токени і обмеження
AI-розв'язувач капчі - це програмне забезпечення, яке використовує моделі машинного навчання, щоб відповісти на капчу від вашого імені. Найкраще воно працює там, де відповідь можна прочитати з вмісту, наприклад у спотвореному тексті або в сітці зображень. Для токен-віджетів завдання моделі - створити відповідь, яку прийме сервер сайту, і це інша задача. Цей посібник пояснює обидва випадки, де проходять межі і що ви насправді отримуєте від сервісу розв'язання.
Цей посібник описує загальні техніки. Він не розкриває внутрішньої роботи жодного конкретного сервісу. Для вас як розробника важливий контракт: ви надсилаєте дані капчі і отримуєте токен.
Три родини капчі
Більшість капч належить до однієї з трьох родин, і AI по-різному працює з кожною.
Завдання з вмістом. Відвідувач читає або розпізнає щось: спотворені символи, набір номерів будинків, світлофори в сітці, повернутий об'єкт. Правильна відповідь міститься в самому зображенні або аудіо. Саме тут машинне навчання найсильніше.
Поведінкова оцінка. Видимого завдання може взагалі не бути. Сайт стежить за тим, як поводиться браузер, дивиться на історію запитів і оцінює відвідувача. reCAPTCHA v3 працює саме так, і вона повертає число, а не головоломку. Модель не може просто "прочитати" відповідь, бо відповіді немає. Питання полягає в тому, чи сигнали виглядають достатньо людськими.
Токен-віджети. Віджет працює на сторінці, виконує свої перевірки і записує токен у приховане поле форми. Серверна частина сайту потім перевіряє токен у постачальника. PopularCaptcha працює саме так, як і reCAPTCHA v2 та Cloudflare Turnstile.
Як моделі працюють із завданнями з вмістом
Для спотвореного тексту стандартний підхід - модель оптичного розпізнавання символів. Згорткова мережа або модель зору на основі трансформера читає зображення і видає послідовність символів. Навчання йде на великих наборах згенерованих капч з відомими відповідями, тож модель вивчає поширені спотворення: викривлення, шумові лінії, символи, що перекриваються, і фонову текстуру.
Для сіток зображень завдання - класифікація. Модель дивиться на кожну плитку і вирішує, чи містить вона об'єкт, якого вимагає завдання. Складні випадки - це об'єкти, що частково приховані, на краю плитки або неоднозначні, наприклад автобус, який майже весь поза кадром. Точність тут нижча, і хороший розв'язувач має вирішити, коли варто вгадати, а коли запросити ще один раунд.
Аудіо-завдання використовують розпізнавання мовлення. Модель транскрибує фрагмент, і відповіддю є транскрипція. Головні труднощі - фоновий шум і навмисні спотворення.
Головоломки, наприклад поворот зображення або пересування фрагмента на місце, потребують іншого типу моделі. Модель оцінює кут або позицію з зображення, а потім створює перетягування або клік, що відповідає цьому.
Як моделі працюють з оцінкою і токенами
Поведінкову оцінку і токен-віджети важче розв'язати, просто читаючи сторінку. Перевірки постачальника виконуються в браузері відвідувача, а їхній результат залежить від сигналів, таких як середовище браузера, час подій введення та історія сесії. Розв'язувач ззовні не бачить оцінку або сигнали з корисними деталями.
У таких випадках працює розв'язувач, який повертає відповідь, очікувану постачальником, використовуючи конвеєр, побудований для створення дійсних токенів. З вашого боку важлива проста властивість: ви отримуєте токен або помилку, а токен перевіряє сайт.
Саме тому API Scarnox має таку форму. Ви надсилаєте тип завдання, sitekey і URL сторінки, а токен отримуєте в полі solution:
{"errorId": 0, "solution": {"token": "..."}, "cost": ...}
Токен потрапляє в поле форми, якого очікує сайт, і спливає приблизно за дві хвилини. Повний запит описано в посібнику по API розв'язувача капчі.
Де AI допомагає і де зупиняється
AI-розв'язувачі добре справляються з:
- стабільним читанням спотвореного тексту, після налаштування під конкретну родину капч;
- класифікацією сіток зображень з високою точністю на чітких прикладах;
- відповідю достатньо швидко для синхронного запиту;
- провалом, який нічого вам не коштує, якщо розв'язувач побудований навколо безкоштовних невдалих розв'язань.
Слабші вони в таких випадках:
- головоломки, дизайн яких часто змінюється, бо модель, навчена на минулорічній версії, може не спрацювати на новій;
- поведінкові перевірки, де результат залежить від середовища, в якому ви працюєте, так само як і від відповіді;
- будь-яке завдання, що вимагає людського судження про зміст, наприклад питання про значення або контекст.
Є й практичне обмеження, якого жодна модель не усуває. Капча - навмисний бар'єр, і постачальники оновлюють свої завдання. Розв'язувач, що працює сьогодні, може перестати працювати наступного місяця, тож результати розв'язувача варто відстежувати, а не вважати, що вони працюватимуть завжди.
Вибір розв'язувача
Чотири питання допомагають оцінити будь-який сервіс розв'язання:
- Які типи капчі він підтримує сьогодні, а не в дорожній карті?
- Скільки вам коштує невдалий розв'язок? Розв'язувач, що бере плату за невдачі, робить повтори дорогими.
- Як він поводиться при тайм-ауті або повільній відповіді? Вашому коду потрібна чітка помилка, на яку можна відреагувати.
- Що треба змінити у вашому коді, коли капча змінюється? Чим менше, тим краще.
Scarnox наразі підтримує PopularCaptcha без проксі, цей тип уже працює. Інші типи з'являться скоро, а посібник про типи капчі пояснює статус кожного з них.