Как работает AI-решатель капчи: модели, токены и ограничения
AI-решатель капчи — это программа, которая использует модели машинного обучения, чтобы ответить на капчу вместо вас. Лучше всего он работает с задачами, где ответ можно прочитать из содержимого, например с искаженным текстом или сеткой изображений. Для виджетов на основе токенов задача модели — получить ответ, который серверная часть сайта примет, и это совсем другая задача. Это руководство описывает оба случая, где проходят границы возможностей и что вы на самом деле получаете от сервиса-решателя.
Руководство описывает общие приемы. Оно не раскрывает внутреннее устройство какого-либо конкретного сервиса. Для вас как разработчика важен контракт: вы отправляете данные капчи и получаете токен.
Три семейства капчи
Большинство капч относятся к одному из трех семейств, и ИИ работает с каждым по-своему.
Задания с содержимым. Посетитель читает или распознает что-то: искаженные символы, номера домов, светофоры в сетке, повернутый предмет. Правильный ответ находится в самом изображении или аудио. Здесь машинное обучение сильнее всего.
Поведенческая оценка. Видимого задания может не быть вовсе. Сайт следит за тем, как ведет себя браузер, смотрит историю запросов и выставляет оценку посетителю. reCAPTCHA v3 работает именно так и возвращает число, а не головоломку. Модель не может просто «прочитать» ответ, потому что ответа нет. Вопрос в том, достаточно ли похожи сигналы на человеческие.
Виджеты на основе токенов. Виджет работает на странице, выполняет свои проверки и записывает токен в скрытое поле формы. Серверная часть сайта затем проверяет токен у провайдера. PopularCaptcha работает именно так, так же как reCAPTCHA v2 и Cloudflare Turnstile.
Как модели справляются с заданиями с содержимым
Для искаженного текста стандартный подход — модель оптического распознавания символов. Сверточная сеть или визуальная модель на основе трансформера читает изображение и выдает последовательность символов. Обучение идет на больших наборах сгенерированных капч с известными ответами, поэтому модель учится типичным искажениям: деформации, линиям шума, перекрывающимся символам и текстуре фона.
Для сеток изображений задача — классификация. Модель смотрит на каждую плитку и решает, есть ли на ней нужный объект. Трудные случаи — объекты, которые частично скрыты, находятся на краю плитки или неоднозначны, например автобус, который почти весь вышел из кадра. Точность здесь ниже, и хороший решатель должен решать, когда угадывать, а когда запросить новый раунд.
Аудиозадания используют распознавание речи. Модель расшифровывает клип, и ответом становится расшифровка. Основные трудности — фоновый шум и намеренные искажения.
Задания-головоломки, например поворот изображения или перемещение фрагмента на место, требуют модели другого типа. Модель оценивает угол или позицию по изображению, затем выдает перетаскивание или клик, которые ему соответствуют.
Как модели справляются с оценкой и токенами
Поведенческую оценку и виджеты на основе токенов сложнее решить, просто читая страницу. Собственные проверки провайдера выполняются в браузере посетителя, и их результат зависит от сигналов: окружения браузера, тайминга событий ввода и истории сессии. Решатель снаружи не видит ни оценку, ни сигналы в каком-либо полезном объеме.
В этих случаях рабочий подход — решатель, который возвращает ответ, ожидаемый провайдером, с помощью конвейера, построенного на получении валидных токенов. С вашей стороны важно простое свойство: вы получаете токен или ошибку, а токен проверяет сайт.
Поэтому API Scarnox устроен именно так. Вы отправляете тип задачи, sitekey и URL страницы и получаете токен в поле solution:
{"errorId": 0, "solution": {"token": "..."}, "cost": ...}
Токен вставляется в поле формы, которое ожидает сайт, и истекает примерно через две минуты. Полный запрос описан в руководстве по API решателя капчи.
Где ИИ помогает и где останавливается
AI-решатели хорошо справляются с:
- стабильным чтением искаженного текста, если они настроены под семейство капчи;
- классификацией сеток изображений с высокой точностью на четких примерах;
- ответом достаточно быстро для синхронного запроса;
- отказом без затрат для вас, если решатель построен на бесплатных неудачных решениях.
Слабее они работают с:
- головоломками, которые часто меняют дизайн, потому что модель, обученная на прошлогодней версии, может не подойти к новой;
- поведенческими проверками, где результат зависит от среды выполнения не меньше, чем от ответа;
- любым заданием, которое требует суждения живого человека о содержимом, например вопроса о смысле или контексте.
Есть и практическое ограничение, которое ни одна модель не убирает. Капча — это намеренный барьер, а провайдеры обновляют свои задания. Решатель, который работает сегодня, может перестать работать через месяц, поэтому вывод решателя нужно отслеживать и не предполагать, что он будет работать всегда.
Выбор решателя
Четыре вопроса помогут оценить любой сервис-решатель:
- Какие типы капчи он поддерживает сегодня, а какие — только в планах?
- Сколько стоит неудачное решение? Решатель, который берет деньги за ошибки, делает повторы дорогими.
- Как он ведет себя при таймауте или медленном ответе? Вашему коду нужна понятная ошибка, на основе которой можно действовать.
- Что нужно изменить в вашем коде, когда капча меняется? Чем меньше, тем лучше.
Scarnox сейчас поддерживает PopularCaptcha, без прокси, в режиме онлайн. Другие типы скоро появятся, а руководство по типам капчи объясняет статус каждого.