CAPTCHA
CAPTCHA
CAPTCHA — автоматический тест, который отличает человека от программы: задача,
лёгкая для человека и (в идеале) трудная для компьютера. Аббревиатура
расшифровывается как Completely Automated Public Turing test to tell Computers
and Humans Apart — «полностью автоматический публичный тест Тьюринга для
различения компьютеров и людей».
История
Идея выросла из очень конкретной боли конца 90-х: боты начали массово
регистрировать бесплатные почтовые ящики и заваливать сервисы спамом.
- 1997, США — поисковик AltaVista сталкивается с ботами, которые
автоматически добавляют свои URL в индекс. Андрей Бродер (Andrei Broder) с
коллегами придумывает показывать искажённый текст, который человек прочитает,
а программа распознавания — нет. Это прототип, но ещё без имени и теории. - 2000, Карнеги-Меллон (Питтсбург, США) — команда Луиса фон Ана (Luis von
Ahn), Мануэля Блюма (Manuel Blum) и коллег формализует идею и придумывает
термин CAPTCHA. Заказчиком выступила Yahoo — их почту как раз осаждали
спам-боты. Концептуально это «обратный тест Тьюринга»: в классическом тесте
1950 года человек-судья определяет, кто перед ним; здесь судья — сам
компьютер. - 2007 — фон Ан запускает reCAPTCHA: гениальный ход, при котором
миллионы людей, вводя слова с отсканированных страниц, попутно оцифровывают
архивы The New York Times и старые книги. Одно слово системе известно
(проверка), второе — нет (полезная работа). - 2009 — Google покупает reCAPTCHA и позже использует её же для разметки
номеров домов со снимков Street View. - 2014 — reCAPTCHA v2: галочка «Я не робот». Задача почти исчезает —
система оценивает поведение (движение курсора, cookies, историю). - 2018 — reCAPTCHA v3: теста нет вообще, сайт получает невидимый балл
«человечности» от 0.0 до 1.0 и сам решает, что делать с подозрительными. - 2020–2022 — рынок дробится: Cloudflare уходит с reCAPTCHA на hCaptcha
(вопросы приватности и цены), а затем выпускает собственный Turnstile —
проверку вообще без задач для пользователя. У Яндекса появляется свой
облачный сервис SmartCaptcha.
Забавная сноска: Луис фон Ан на той же энергии «полезной работы толпы» позже
сооснует Duolingo (2011), а в 2006 получит «грант гениев» Мак-Артура.
Что это такое
CAPTCHA — это фильтр на границе между сайтом и внешним миром, который пытается
ответить на один вопрос: «по ту сторону экрана человек или скрипт?». Классика
жанра — искажённые буквы, светофоры на девяти картинках, пазл со слайдером.
Современность — невидимый анализ: как двигается курсор, какой у браузера
отпечаток (fingerprint — уникальный набор характеристик: шрифты, разрешение,
особенности отрисовки), с какого IP пришёл запрос, похожа ли сессия на
человеческую.
Важно разделять три близкие вещи:
- CAPTCHA vs аутентификация. Пароль отвечает на вопрос «кто ты?», капча —
на вопрос «ты вообще человек?». Капча не знает и не хочет знать твоё имя. - CAPTCHA vs антифрод. Антифрод-система оценивает, мошенническое ли
действие (платёж, заявка, регистрация). Капча — лишь один из её
инструментов, самый заметный пользователю: «последний рубеж», когда скоринг
сомневается. - CAPTCHA vs rate limiting (ограничение частоты запросов). Rate limit
просто режет количество запросов с одного источника, не спрашивая, кто ты.
Капча пытается пропустить человека и остановить бота даже при единичном
запросе.
Ключевая идея, которую стоит унести: капча — это не бинарный замок, а
экономический барьер. Ни одна капча не остановит целеустремлённого
противника — существуют и нейросети-распознаватели, и фермы живых людей,
решающих чужие капчи за доли цента. Задача капчи — сделать атаку дороже, чем
выгода от неё. Спамить миллион форм при цене порядка доллара за тысячу
решённых капч — это уже вопрос экономики, а не техники.
И вторая идея, менее очевидная: капча — это всегда налог на честных
пользователей. Каждая показанная проверка — потерянные секунды, раздражение
и какой-то процент людей, которые просто уйдут. Поэтому вся эволюция капчи —
движение от «мучаем всех» к «мучаем только подозрительных», а в пределе —
«не мучаем никого, решаем по косвенным сигналам».
Капча — это цена, а не стена
Правильный вопрос при выборе защиты не «остановит ли она ботов?» (нет, не остановит), а «сделает ли она атаку нерентабельной — и сколько живых клиентов я потеряю в обмен?». Это задача про баланс двух убытков, то есть управленческая, а не чисто техническая.
Аналогии из жизни
Фейсконтроль в клубе. Охранник на входе не спрашивает паспорт у каждого —
он смотрит на поведение: как идёшь, как одет, трезв ли. Подозрительных
останавливает и задаёт вопросы. Так работает reCAPTCHA v3: большинство проходит
незамеченным, проверка достаётся сомнительным.
Где ломается: охранник видит живого человека целиком, а капча — только
цифровые следы, которые можно подделать. Хорошо настроенный бот «одет и идёт»
неотличимо от человека, а настоящий человек с VPN и приватным браузером
выглядит подозрительно и страдает.
Вопрос «сколько будет семью восемь?» по телефону. Когда банк подозревает,
что звонит мошенник с синтезированным голосом, оператор может задать
неожиданный житейский вопрос. Смысл тот же: дать задачу, которую скрипт не
отработает.
Где ломается: и здесь, и в капче задача устаревает. То, что вчера могла
решить только живая бабушка, сегодня решает языковая модель. Тест, построенный
на слабости машин, живёт ровно до тех пор, пока машины слабы, — а слабыми они
быть перестали.
Лежачий полицейский. Он не делает проезд невозможным — он делает быстрый
проезд неудобным. Гонщик всё равно проедет, но медленнее и с риском для
подвески. Капча так же не «запрещает» ботов, а поднимает цену каждой попытки.
Где ломается: лежачий полицейский одинаково бьёт по всем машинам. Хорошая
капча обязана бить избирательно — иначе это не защита, а вредительство
собственной конверсии. И, в отличие от асфальта, капчу можно «объехать» через
ферму людей: полоса препятствий бессмысленна, если на этом участке за руль
садится нанятый профессионал.
Как это работает
Разберём три поколения механики.
Поколение 1: задача на восприятие. Сервер генерирует картинку с искажённым
текстом (шум, наклон, слипшиеся буквы), запоминает ответ, показывает картинку.
Человек читает — OCR (optical character recognition, автоматическое
распознавание текста) спотыкается. Так это работало в 2000-х. Сегодня это
поколение мертво: ещё в 2014 году Google публиковала данные, что её собственный
алгоритм решает самые искажённые текстовые капчи с точностью 99,8% — лучше
людей. Если видишь на сайте кривые буквы — перед тобой музейный экспонат,
который останавливает только самых ленивых ботов.
Поколение 2: задача плюс поведение. reCAPTCHA v2 и аналоги.
Последовательность такая:
- Страница подгружает JavaScript-виджет капчи.
- Виджет ещё до клика собирает сигналы: движения мыши, тайминги нажатий,
cookies, параметры браузера, историю взаимодействия с этим провайдером. - Пользователь кликает «Я не робот». Если сигналы чистые — зелёная галочка
сразу. Если сомнительные — выпадает задача с картинками («выберите все
светофоры»). - Виджет отдаёт странице одноразовый токен.
- Сайт отправляет токен на сервер провайдера капчи (запрос сервер—сервер) и
получает вердикт: валиден ли токен, не протух ли, с того ли домена пришёл.
Пункт 5 — то, что чаще всего забывают новички: проверять токен обязательно
на сервере. Если сайт верит одному лишь факту «виджет показал галочку», бот
просто отправит форму напрямую, минуя виджет.
Поколение 3: невидимая оценка. reCAPTCHA v3, Cloudflare Turnstile, Yandex
SmartCaptcha в «тихом» режиме. Задач нет. Скрипт наблюдает за сессией и
возвращает сайту балл (score) или прозрачно выполняет в браузере серию проверок
(включая proof-of-work — небольшую вычислительную задачу, незаметную человеку,
но дорогую при миллионах запросов). Сайт сам решает: балл высокий — пропустить,
средний — показать классическую задачу, низкий — заблокировать или отправить
на подтверждение по SMS.
Схема эскалации, к которой пришла индустрия:
запрос → пассивные сигналы (IP, отпечаток, поведение)
├─ похоже на человека → пропустить, капчу не показывать
├─ сомнительно → показать задачу (галочка / картинки / пазл)
└─ похоже на бота → блок, honeypot или бесконечно «крутящаяся» заглушка
Отдельный жанр — капча-заглушка: сайт не рисует форму с картинками, а
отдаёт вместо настоящей страницы лёгкую HTML-страницу с проверкой. Внешне это
может выглядеть как «проверяем ваш браузер…» на секунду. Для парсера это
ловушка: HTTP-статус часто 200, страница валидная — и наивный скрипт радостно
сохраняет мусор вместо данных. Детектировать такое надо по совокупности:
заголовок страницы, размер ответа, редиректы — а не по одному слову в HTML,
которое может встречаться и на настоящей странице внутри JS-бандлов.
Где встречается в обычной жизни
- Покупка билетов на концерт или поезд. Перед оплатой просят собрать пазл
или выбрать картинки — это защита от перекупщиков-ботов, которые выгребают
билеты за секунды (scalping). - «Проверяем, что вы не робот» перед сайтом. Секундная заставка Cloudflare
или Яндекса — это невидимая капча третьего поколения: тебя проверили по
отпечатку браузера, задачу решать не пришлось. - Регистрация почты или аккаунта в соцсети. Та самая изначальная задача
2000 года: без капчи спамеры регистрировали бы миллионы ящиков в час. - Восстановление пароля и формы обратной связи. Капча тут защищает не от
взлома, а от заваливания: боты любят дёргать «отправить SMS с кодом» — каждое
SMS стоит сайту денег (SMS-бомбинг). - Онлайн-банк из отпуска. Заходишь с нового устройства из другой страны —
внезапно просят пройти проверку. Твои сигналы (гео, устройство) отклонились
от профиля, и антифрод эскалировал до капчи.
Где встречается в IT и бизнесе
- Защита лид-форм. Нужна, когда стоимость обработки заявки ненулевая:
фейковые лиды загружают отдел продаж и портят статистику конверсии. Для
бизнеса на лидогенерации грязный поток заявок — прямые убытки. - Защита от парсинга (scraping). Классифайды, маркетплейсы, агрегаторы
недвижимости прячут выдачу за ботозащитой: их данные — их актив. Отсюда
вечная гонка: одни строят заборы, другие собирают данные конкурентов. - Борьба с credential stuffing — автоматическим перебором утёкших пар
логин/пароль. Капча на форме логина после пары неудачных попыток режет
перебор на порядки. - Экономика клика. Рекламные системы фильтруют ботовый трафик, чтобы
рекламодатель не платил за клики скриптов; капча — один из инструментов
верификации сомнительных сессий. - Регистрации и промокоды. Любая механика «бонус за регистрацию» без
капчи мгновенно превращается в станок для печати денег ботоводам
(bonus abuse).
Кто пользуется
- Google reCAPTCHA — исторический лидер рынка; счёт сайтов идёт на
миллионы, точную актуальную долю не знаю. Enterprise-версия продаётся через
Google Cloud. - Cloudflare Turnstile — бесплатная замена капчи от Cloudflare, через сеть
которой проходит заметная часть мирового веб-трафика; Turnstile доступен и
сайтам вне Cloudflare. - hCaptcha (Intuition Machines) — выбор тех, кому важна приватность и
независимость от Google; в 2020–2022 её использовала Cloudflare до выпуска
Turnstile. - Arkose Labs (FunCaptcha) — 3D-задачи с вращением объектов; применяется
там, где атаки особенно злые: игровые платформы, соцсети, финтех. - Yandex SmartCaptcha — облачный сервис Яндекса, востребован в рунете в
том числе из-за требований локализации данных. - GeeTest — китайский лидер со слайдер-пазлами, распространён в Азии и в
крипто-биржах.
Альтернативы и конкуренты
- Невидимые проверки (Turnstile, reCAPTCHA v3).
Плюс: пользователь ничего не решает, конверсия не страдает.
Минус: это вероятностный скоринг — нужны пороги, обработка ложных
срабатываний и запасной сценарий для «серых» сессий. - Honeypot-поля — скрытое поле формы, которое человек не видит и не
заполняет, а тупой бот заполняет.
Плюс: бесплатно, невидимо, реализуется за час.
Минус: отсекает только примитивных ботов; любой таргетированный скрипт
обходит за минуту. - Rate limiting + WAF-ботозащита (Cloudflare Bot Management, DataDome,
Qrator и подобные).
Плюс: работает на уровне всей инфраструктуры, а не одной формы.
Минус: платно, требует настройки; агрессивные правила бьют по легитимным
интеграциям и пользователям из «плохих» подсетей. - Подтверждение канала (email/SMS/платёж).
Плюс: почти стопроцентная отсечка массовых ботов — у каждого номера есть цена.
Минус: самый дорогой по трению способ; часть людей бросит регистрацию,
а SMS стоят денег самому бизнесу.
Когда НЕ стоит использовать
- На каждом шаге сайта «для надёжности» — потому что капча — налог на
честных: каждый лишний барьер срезает конверсию, а мотивированного бота всё
равно не остановит. Защищай точки, где есть экономика атаки, а не всё подряд. - Вместо серверной валидации и лимитов — потому что капча на форме не
спасает API, который торчит наружу без проверок: бот пойдёт напрямую в
endpoint. Сначала серверные проверки и rate limit, капча — сверху. - Устаревшую текстовую капчу собственной разработки — потому что она
решается современными моделями лучше, чем людьми: неудобства для клиентов
максимальные, защита нулевая. Самописная капча в 2026 году — почти всегда
ошибка.
Капча со стороны парсера — это «стоп», а не головоломка
Если ты сам собираешь данные и упёрся в капчу — сайт явно сказал «автоматике сюда нельзя». Обход через фермы распознавания технически прост, но это уже осознанное нарушение правил площадки с юридическими и репутационными рисками. Правильные пути: официальный API, партнёрство, покупка данных или согласие на ручной ввод капчи живым человеком.
Связанные понятия
- Тест Тьюринга — мысленный эксперимент Алана Тьюринга (1950): может ли
машина в диалоге выдать себя за человека. - Fingerprinting (отпечаток браузера) — идентификация устройства по набору
косвенных признаков без cookies; основа невидимых капч. - Honeypot — ловушка для автоматики: ресурс, невидимый человеку, но
привлекательный для бота. - Rate limiting — ограничение частоты запросов с одного источника;
грубый, но надёжный слой защиты. - Credential stuffing — перебор утёкших логинов/паролей по чужим сайтам;
главный потребитель капчи на формах входа. - Proof-of-work — «доказательство работы»: небольшая вычислительная
задача, делающая массовые запросы дорогими; идея легла и в антибот-системы,
и в блокчейн.
Литература и источники
- Wikipedia (en): статья «CAPTCHA» — история, критика, доступность.
https://en.wikipedia.org/wiki/CAPTCHA - Wikipedia (en): статья «reCAPTCHA» — как работала оцифровка книг.
https://en.wikipedia.org/wiki/ReCAPTCHA - Луис фон Ан, выступление на TED «Massive-scale online collaboration» (2011,
en) — из первых уст про reCAPTCHA и рождение Duolingo; искать на ted.com. - Документация Cloudflare Turnstile (en) — как устроена проверка без задач;
искать «Cloudflare Turnstile docs». - Документация Yandex SmartCaptcha (ru) — облачная капча Яндекса; искать
«Yandex Cloud SmartCaptcha документация». - Классическая статья: von Ahn, Blum, Hopper, Langford — «CAPTCHA: Using Hard
AI Problems for Security» (EUROCRYPT 2003, en) — теоретическое обоснование;
искать по названию.
Где встретилось у меня
Вчера в проекте сбора данных о жилых комплексах парсер начал получать от
площадки лёгкую страницу-заглушку с капчей вместо настоящих карточек — причём
с нормальным HTTP-статусом, из-за чего скрипт сперва принимал её за данные.
Чинили детект по заголовку, размеру и редиректу, а заодно обсуждали границу:
где заканчивается автоматизация и начинается обход явного запрета площадки.
Краткое резюме
- CAPTCHA — обратный тест Тьюринга: компьютер проверяет, что перед ним человек.
Термин придуман в 2000 году в Карнеги-Меллон командой Луиса фон Ана. - Это не стена, а экономический барьер: цель — сделать атаку дороже выгоды,
а не сделать её невозможной. - Эволюция: искажённый текст → «Я не робот» с анализом поведения → невидимый
скоринг без задач (reCAPTCHA v3, Turnstile, SmartCaptcha). - Текстовые капчи мертвы: ИИ решает их лучше людей ещё с середины 2010-х.
Современная защита строится на отпечатках браузера и поведении. - Каждая показанная капча — налог на конверсию. Ставить её стоит там, где у
атаки есть экономика, и только поверх серверной валидации и rate limit.