Что такое капча и как она защищает веб‑ресурсы
Рассказываем, зачем сайты заставляют пользователей искать велосипеды и автобусы на картинках и почему без этого нам было бы хуже.
Иллюстрация: Катя Павловская для Skillbox Media
Само слово «капча» образовано от английской аббревиатуры CAPTCHA — completely automated public Turing test to tell computers and humans apart, что означает «полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей».
Считается, что человек легко справится с этим тестом, а для компьютера он невыполним. До недавнего времени так и было, но ситуация изменилась. Об этом мы расскажем ниже.
Что такое капча и как она работает
По сути, это небольшое задание, которое иногда появляется на сайтах: вам нужно распознать картинку или текст, выполнить математическое действие, сложить пазл или просто подтвердить, что вы не верблюд робот.
Капча считывает ваш ответ, анализирует его и решает, разрешить ли вам дальнейшие действия на сайте или задать следующий контрольный вопрос. Большинство заданий генерируется автоматически: алгоритм капчи создаёт задание на основе предыдущих, рисует изображения, искажает их, добавляет помехи и отправляет пользователю.
Подобные тесты для распознавания, человек перед тобой или машина, начал разрабатывать ещё Алан Тьюринг в 1956 году, когда вплотную занялся изучением искусственного интеллекта. Он придумал такое задание: человеку даются два невидимых собеседника: один из них человек, другой — машина. Человек задаёт собеседникам несколько вопросов. Если он не может определить, кто из них робот, а кто — человек, значит, машина мыслит.
До недавнего времени ни одна машина не могла пройти тест Тьюринга. Сегодня, с развитием нейросетей, этот этап пройден. Но это не означает, что машина может мыслить, — просто она научилась имитировать человеческое мышление.
Так зачем теперь нужна капча?
Во времена Тьюринга его работы имели скорее философское, чем практическое значение. Теперь ситуация кардинально изменилась.
Интернет стал не просто средством обмена информацией — некоторые разглядели в нём средство лёгкого и не всегда законного заработка. Например, с помощью несложных программ можно зарегистрироваться на тысячах сайтов и рассылать рекламу, ссылки на вирусы, реквизиты для перевода денежных средств для фейковых больных и многое другое.
Вредоносные программы научились самостоятельно оставлять комментарии и заполнять формы обратной связи. Большинство веб-ресурсов, даже недавно созданных, забиты спамом, вредоносными ссылками и прочим.
Их владельцы остро нуждались в приложении для отсеивания ботов. Первое такое приложение разработали специалисты Университета Карнеги — Меллона, написавшие скрипт на основе теста Тьюринга. Перед регистрацией на сайте пользователю предлагали ввести символы с «зашумлённой» картинки — человек мог их распознать, а большинство хакерских программ нет. Тогда же университет зарегистрировал товарный знак CAPTCHA, приняв сочетание букв, близкое к английскому catch («поймать»).
Первыми капчу стали использовать в Yahoo — таким образом компания пыталась предупредить автоматическую регистрацию почтовых ящиков для рассылки спама. В то время справиться с капчей было непросто — чтобы разобраться в задании, приходилось напрягать зрение и часто обновлять страницу. Особенно тяжело было людям с ограниченными возможностями здоровья.
Постепенно сервисы капчи совершенствовались, появилось аудиосопровождение, автоматическое обновление. Сейчас распознавание проходит быстро и часто незаметно.
От чего защищает капча
Хотя назойливые капчи раздражают пользователей, владельцам сайтов они необходимы. Рассмотрим подробнее, от чего они защищают:
Спам. Боты рассылают «мусорную» рекламу, оставляют негативные комментарии и отзывы. Их сложно вычищать вручную, особенно на крупных сайтах. Капча избавляет от этой напасти.
DDoS-атаки. Злоумышленники направляют на сайт большое количество запросов, больше, чем он может выдержать. Веб-ресурс переполняют фейковые посетители, он перестаёт нормально работать и может рухнуть. Капча сдерживает натиск ботов.
Атаки на интернет-магазины. Во время распродаж и акций боты получают доступ к корзинам покупок и помещают туда товары, не собираясь их оплачивать. Реальные покупатели не видят нужного товара в наличии и не могут его купить. Капча помогает защитить ресурс от перехвата товаров.
Подбор логинов и паролей. Человеку трудно подобрать вручную логин или пароль на сайте. А бот может генерировать их до бесконечности, пока не найдёт подходящие. Капча это предотвращает.
Когда показывают капчу
Некоторые ресурсы показывают капчу, когда пользователь совершает какие-то действия. Другие — когда активность пользователя выше средней, что кажется им подозрительно похожим на действия бота.
Например:
- Капча появляется, когда пользователь регистрируется на сайте или оставляет комментарии и отзывы, — система защиты проверяет, человек это или бот.
- То же самое происходит при покупке товара в интернет-магазине — капча проверяет, не взломали ли покупателя.
- Пользователь слишком быстро отвечает на сообщения, много лайкает, часто щёлкает по гиперссылкам, запрашивает веб-страницы. По мнению защиты, он ведёт себя как бот, и она запускает капчу.
- Компьютер решил, что вы пытаетесь подобрать логин и пароль. Он думает, что это бот, и не хочет пускать вас на сайт. Это действительно сложный случай — капча будет появляться постоянно.
Виды капчи
Назовём самые распространённые виды капчи — они чаще всего попадаются пользователям.
Текстовая. Самый старый вид капчи. Она легко создавалась на сервере и отображалась в разных браузерах. Алгоритм работы такой: на сервере генерировался случайный набор цифр и символов, нередко в разных регистрах. На его основе формировалось изображение, которое потом деформировалось: буквы были наклонены, перечёркнуты, использовались цветовые и шумовые фильтры. Пользователю нужно было распознать символы на картинке и ввести их в специальное поле. Несколько лет такие капчи успешно защищали интернет от ботов, а на некоторых сайтах они используются до сих пор.
Логическая. Пользователь должен выполнить небольшое задание: составить пазлы, решить несложное математическое уравнение, выбрать цифру или фотографию из заданной последовательности, назвать слово, начинающееся с нужной буквы.
А такую логическую капчу можно встретить на «Фейсбуке»*. Здесь нужно выбрать имя своего друга:
Звуковая. Обычно даётся в дополнение к текстовой капче. Это серия букв или цифр, которые произносит компьютер, чтобы помочь слабовидящим. Также это может быть альтернативный вариант капчи, например:
ReCAPTCHA и искусственный интеллект
Хакеры довольно быстро доработали своих ботов, и те научились разгадывать капчи первых поколений.
В 2009 году специалисты Университета Карнеги — Меллона представили усовершенствованную версию, которую назвали ReCAPTCHA. Она имела более сложный механизм и обладала большей надёжностью, чем ранее существовавшие капчи.
Чтобы пройти ReCAPTCHA, пользователю требовалось разгадать два слова, одно из которых известно системе, а второе представляет собой труднораспознаваемую фотографию из газеты или книги.
Проверка пользователя осуществляется только по тому слову, которое известно системе, а второе слово вводить необязательно. Если пользователь всё же ввёл второе слово, то оно сохраняется системой в качестве одного из вариантов для распознавания. Таким образом ReCAPTCHA первой версии использовалась не только для защиты сайтов, но и для оцифровывания архивов.
На перспективную технологию обратили внимание в Google и выкупили её. Однако поумневшие боты вскоре научились справляться и с этой версией капчи. В 2015 году Google прекратила использовать ReCAPTCHA v1.
Затем была разработана ReCaptcha v2, с которой мы часто сталкиваемся. В ней можно пройти тест в один клик. Работа капчи начинается с появления таблички с надписью «Я не робот» — от пользователя требуется поставить галочку в нужном поле.
Возможно, вы задумывались, зачем таким способом доказывать, что ты человек. Но компьютер интересует не сам факт установки флажка, а действия, которые совершает пользователь. Этот тест анализирует движения мыши. У человека они имеют определённую степень случайности — боты не смогут это имитировать. Алгоритм также проверяет надёжность IP-соединения пользователя, его приблизительное местонахождение, часовой пояс, время на его компьютере, сохранённые cookie-файлы и многое другое.
Если результаты теста не удовлетворяют капчу, появляется хорошо знакомая нам табличка с фотографиями, где предлагается выбрать гидранты, автомобили, светофоры.
Тут тоже используется сложный алгоритм, анализирующий не только ответы пользователей, но и многие другие факторы.
Google и здесь нашёл применение действиям пользователей: выбирая пешеходные дорожки, светофоры и дорожные знаки, мы обучаем систему искусственного интеллекта, которая используется в беспилотных автомобилях.
В 2018 году появилась третья версия ReCAPTCHA. Её называют невидимой, или капчей, которой нет. Пользователю уже не нужно совершать никаких действий — капча использует усовершенствованный механизм анализа его поведения. Система анализирует задержки при печати, движение мыши, прокрутку страниц, взаимодействия с интерактивными элементами и многое другое. Впрочем, Google не даёт точной информации о работе ReCAPTCHA, чтобы не помогать разработчикам ботов.
По результатам анализа система выставляет пользователю оценки от 0.0 до 1.0, где 0.0 означает, что это, вероятно, бот, а 1.0 — вероятно, человек.
Выводы
Капча может раздражать, но это лучший способ борьбы с вредоносными программами, мешающими нормальной работе сайтов, особенно больших. Разработчики систем защиты стараются упростить тесты, сделать их менее навязчивыми и даже незаметными. Но не стоит забывать, что злоумышленники тоже совершенствуют своих ботов и задача защиты сайтов со временем становится всё сложнее.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!
* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности».