CAPTCHA

5 августа 2026 · ~12 мин чтения

безопасность веб боты антифрод тест-тьюринга

CAPTCHA

CAPTCHA — автоматический тест, который отличает человека от программы: задача,
лёгкая для человека и (в идеале) трудная для компьютера. Аббревиатура
расшифровывается как Completely Automated Public Turing test to tell Computers
and Humans Apart — «полностью автоматический публичный тест Тьюринга для
различения компьютеров и людей».

История

Идея выросла из очень конкретной боли конца 90-х: боты начали массово
регистрировать бесплатные почтовые ящики и заваливать сервисы спамом.

Забавная сноска: Луис фон Ан на той же энергии «полезной работы толпы» позже
сооснует Duolingo (2011), а в 2006 получит «грант гениев» Мак-Артура.

Что это такое

CAPTCHA — это фильтр на границе между сайтом и внешним миром, который пытается
ответить на один вопрос: «по ту сторону экрана человек или скрипт?». Классика
жанра — искажённые буквы, светофоры на девяти картинках, пазл со слайдером.
Современность — невидимый анализ: как двигается курсор, какой у браузера
отпечаток (fingerprint — уникальный набор характеристик: шрифты, разрешение,
особенности отрисовки), с какого IP пришёл запрос, похожа ли сессия на
человеческую.

Важно разделять три близкие вещи:

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

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

Капча — это цена, а не стена

Правильный вопрос при выборе защиты не «остановит ли она ботов?» (нет, не остановит), а «сделает ли она атаку нерентабельной — и сколько живых клиентов я потеряю в обмен?». Это задача про баланс двух убытков, то есть управленческая, а не чисто техническая.

Аналогии из жизни

Фейсконтроль в клубе. Охранник на входе не спрашивает паспорт у каждого —
он смотрит на поведение: как идёшь, как одет, трезв ли. Подозрительных
останавливает и задаёт вопросы. Так работает reCAPTCHA v3: большинство проходит
незамеченным, проверка достаётся сомнительным.
Где ломается: охранник видит живого человека целиком, а капча — только
цифровые следы, которые можно подделать. Хорошо настроенный бот «одет и идёт»
неотличимо от человека, а настоящий человек с VPN и приватным браузером
выглядит подозрительно и страдает.

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

Лежачий полицейский. Он не делает проезд невозможным — он делает быстрый
проезд неудобным. Гонщик всё равно проедет, но медленнее и с риском для
подвески. Капча так же не «запрещает» ботов, а поднимает цену каждой попытки.
Где ломается: лежачий полицейский одинаково бьёт по всем машинам. Хорошая
капча обязана бить избирательно — иначе это не защита, а вредительство
собственной конверсии. И, в отличие от асфальта, капчу можно «объехать» через
ферму людей: полоса препятствий бессмысленна, если на этом участке за руль
садится нанятый профессионал.

Как это работает

Разберём три поколения механики.

Поколение 1: задача на восприятие. Сервер генерирует картинку с искажённым
текстом (шум, наклон, слипшиеся буквы), запоминает ответ, показывает картинку.
Человек читает — OCR (optical character recognition, автоматическое
распознавание текста) спотыкается. Так это работало в 2000-х. Сегодня это
поколение мертво: ещё в 2014 году Google публиковала данные, что её собственный
алгоритм решает самые искажённые текстовые капчи с точностью 99,8% — лучше
людей. Если видишь на сайте кривые буквы — перед тобой музейный экспонат,
который останавливает только самых ленивых ботов.

Поколение 2: задача плюс поведение. reCAPTCHA v2 и аналоги.
Последовательность такая:

  1. Страница подгружает JavaScript-виджет капчи.
  2. Виджет ещё до клика собирает сигналы: движения мыши, тайминги нажатий,
    cookies, параметры браузера, историю взаимодействия с этим провайдером.
  3. Пользователь кликает «Я не робот». Если сигналы чистые — зелёная галочка
    сразу. Если сомнительные — выпадает задача с картинками («выберите все
    светофоры»).
  4. Виджет отдаёт странице одноразовый токен.
  5. Сайт отправляет токен на сервер провайдера капчи (запрос сервер—сервер) и
    получает вердикт: валиден ли токен, не протух ли, с того ли домена пришёл.

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

Поколение 3: невидимая оценка. reCAPTCHA v3, Cloudflare Turnstile, Yandex
SmartCaptcha в «тихом» режиме. Задач нет. Скрипт наблюдает за сессией и
возвращает сайту балл (score) или прозрачно выполняет в браузере серию проверок
(включая proof-of-work — небольшую вычислительную задачу, незаметную человеку,
но дорогую при миллионах запросов). Сайт сам решает: балл высокий — пропустить,
средний — показать классическую задачу, низкий — заблокировать или отправить
на подтверждение по SMS.

Схема эскалации, к которой пришла индустрия:

запрос → пассивные сигналы (IP, отпечаток, поведение)
   ├─ похоже на человека  → пропустить, капчу не показывать
   ├─ сомнительно         → показать задачу (галочка / картинки / пазл)
   └─ похоже на бота      → блок, honeypot или бесконечно «крутящаяся» заглушка

Отдельный жанр — капча-заглушка: сайт не рисует форму с картинками, а
отдаёт вместо настоящей страницы лёгкую HTML-страницу с проверкой. Внешне это
может выглядеть как «проверяем ваш браузер…» на секунду. Для парсера это
ловушка: HTTP-статус часто 200, страница валидная — и наивный скрипт радостно
сохраняет мусор вместо данных. Детектировать такое надо по совокупности:
заголовок страницы, размер ответа, редиректы — а не по одному слову в HTML,
которое может встречаться и на настоящей странице внутри JS-бандлов.

Где встречается в обычной жизни

Где встречается в IT и бизнесе

Кто пользуется

Альтернативы и конкуренты

Когда НЕ стоит использовать

Капча со стороны парсера — это «стоп», а не головоломка

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

Связанные понятия

Литература и источники

Где встретилось у меня

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

Краткое резюме