Инновации в области безопасности: Как Cloudflare Bot Challenge и Turnstile защищают веб-трафик
В условиях постоянного развития технологий в интернете, безопасность веб-ресурсов становится приоритетом для владельцев сайтов и разработчиков. Использование эффективных инструментов защиты от ботов и автоматизированных угроз становится необходимостью.
Решения от Cloudflare (Bot Challenge и Turnstile) выделяются своей инновационностью, а также балансом между удобством для пользователя и надежной защитой. Давайте подробнее разберем их механизмы работы.
По утверждению разработчиков, основная цель создания данных технологий – это смягчение атак вредоносных ботов, не затрагивая реальных пользователей.
Cloudflare не может блокировать абсолютно всех ботов, поэтому они используют свой список разрешенных ботов. Остальной бот-трафик, не внесенный в этот список, будет определяться как вредоносный, а значит с высокой вероятностью им будет отказано в доступе к защищенной странице.
Что же собой представляют Bot Challenge и Turnstile? Собственно, название технологий говорит само за себя. В переводе с английского Challenge – это Испытание, а Turnstile – Турникет. В первом случае нас все же подвергают испытанию. Во втором случае все сделают за нас, проверят по принципу турникета в метро. Сработает наш чип – заходи. Нет, значит, в черный список.
Пример Bot Challenge (варианты могут быть разные):
Пример Turnstile:
Как Cloudflare определяет ботов
Сервис использует пассивные (на серверной стороне) и активные (на стороне клиента) методы обнаружения ботов.
Пассивные методы
Обнаружение ботнетов
Cloudflare ведет каталог устройств, IP-адресов и моделей поведения, которые связаны с вредоносными бот-сетями. Любое устройство, подозреваемое в принадлежности к одной из этих сетей, либо автоматически блокируется, либо сталкивается с дополнительными проблемами на стороне клиента, которые необходимо решить.
Репутация IP-адреса
Репутация IP-адреса пользователя основана на таких факторах, как геолокация, интернет-провайдер и история репутации. Например, IP-адреса, принадлежащие дата центру или известному провайдеру VPN, будут иметь худшую репутацию, чем домашний IP-адрес. Сайт также может ограничить доступ к сайту из регионов за пределами территории, которую он обслуживает, поскольку оттуда никогда не должен поступать трафик от реального клиента.
Заголовки HTTP-запроса
Cloudflare использует для проверки заголовки HTTP-запросов. Если у вас есть не браузерный User Agent, ваш парсер можно легко принять за бота. Сервис также может заблокировать бота, если он отправит запрос, где отсутствуют заголовки. Или если есть несовпадающие заголовки в зависимости от вашего User Agent.
TLS fingerprint
Создание TLS fingerprint происходит при подключении к серверу. Система анализирует наборы шифров, расширения и эллиптические кривые, чтобы вычислить хэш fingerprint.
Если заголовок User Agent из запроса клиента совпадает с User Agent, связанным с сохраненным хешем fingerprint, система безопасности предполагает, что запрос исходил от стандартного браузера. А несоответствие этих данных приводит к блокировке запроса.
Fingerprint HTTP/2
Как и в случае с TLS fingerprint, каждый запрос клиента будет иметь статический отпечаток HTTP/2. Чтобы определить легитимность запроса, Cloudflare всегда проверяет, что пара fingerprint и User Agent из запроса совпадает с парой из белого списка, хранящейся в их базе данных.
Снятие отпечатков HTTP/2 и TLS практически идентичны. Из всех методов пассивного обнаружения ботов, которые использует Cloudflare, эти два технически сложнее всего контролировать на основе запросов. Однако они являются наиболее важными.
Активные методы
Canvas fingerprint
Canvas — это API HTML5, используемый для рисования графики и анимации на веб-странице с помощью JavaScript. Чтобы создать Canvas fingerprint, веб-страница запрашивает Canvas API вашего браузера для визуализации изображения. Затем это изображение хешируется для создания отпечатка.
Canvas fingerprint зависит от нескольких уровней вычислительной системы, таких как:
- Графический процессор - GPU.
- Драйвер GPU, операционная система, шрифты, алгоритмы рендеринга.
- Механизм обработки изображений браузером - WebGL.
Поскольку изменение любой из этих категорий создает уникальный отпечаток пальца, этот метод точно различает классы устройств.
Cloudflare имеет большой набор данных легитимных пар Canvas + User Agent. Используя машинное обучение, они могут обнаружить подделку свойств устройства (например, User Agent, операционной системы или графического процессора), выявив несоответствие между вашим отпечатком и ожидаемым.
Отслеживание событий
Cloudflare с помощью JavaScript добавляет на веб-страницы метод addEventListener, который отслеживает действия пользователя: движения мыши, щелчки мыши или нажатия клавиш. Если же они не используются, есть основания полагать, что пользователь — бот.
Запрос API среды
API-интерфейсы, специфичные для браузера. Эти спецификации существуют в одном браузере, но могут отсутствовать в другом.
Например, window.chrome – это свойство, которое существует только в браузере Chrome. Если данные, которые вы отправляете, указывают на то, что вы используете Chrome, но отправляете их с помощью User Agent Firefox, будет очевидно, что что-то не так.
API временных меток
Сервис использует API-интерфейсы временных меток, например, Date.now() или window.performance.timing.navigationStart для отслеживания показателей скорости пользователя. Если метки не будут соответствовать обычной интернет-активности человека, пользователь будет заблокирован.
Автоматическое обнаружение браузера
Cloudflare запрашивает свойства, которые существуют только в автоматизированных средах. Например, наличие window.document.__selenium_unwrapped или window.callPhantom указывает на использование Selenium и PhantomJS соответственно. По понятным причинам вас заблокируют, если это будет обнаружено.
SandBox detection
Предусмотрены проверки, которые не позволяют использовать эмулируемые среды браузера, например, в NodeJS с использованием JSDOM. Скрипт может искать файл process object, который существует только в NodeJS. Также возможно определить, были ли изменены функции, используя Function.prototype.toString.call(functionName).
Cloudflare Turnstile
Cloudflare Turnstile – это интеллектуальная альтернатива CAPTCHA. Его можно встроить на любой веб-ресурс без отправки трафика через Cloudflare и без показа капчи посетителям.
Преимущества Turnstile:
- Интуитивно понятный и удобный интерфейс.
Отсутствует необходимость расшифровки текста или изображений.
- Простая интеграция с другими сервисами Cloudflare.
Что делает его привлекательным для пользователей Cloudflare.
- Надежная защита от спама и киберугроз.
Сочетание безопасности с удобством для пользователя.
Учитывая все вышеперечисленное, может сложиться впечатление, что такую защиту не преодолеть ничем. Не все так безнадежно, мы рассмотрим различные варианты обхода Cloudflare, начиная с самого прямого способа.
Обходим Cloudflare CDN, вызвав исходный сервер
Cloudflare может блокировать только запросы, проходящие через его сеть, поэтому было бы неплохо, если бы мы могли напрямую отправлять запрос на исходный сервер. Никакой защиты между вами и нужными вам данными!
Нужно выполнить два шага:
- Найдите исходный IP-адрес.
На защищенных сайтах записи DNS будут скрыты. Но, вероятно, не везде: некоторые незащищенные поддомены, старые сервисы или почтовые сообщения могут быть доступны под тем же доменным именем, но при этом указывать на исходный сервер.
2. Запросите данные с исходного сервера.
Вы получили исходный IP-адрес, отлично! Но теперь... что с этим делать? Можно попытаться вставить его в строку URL-адреса вашего браузера, но это может оказаться неудачным. Это обычная конфигурация сервера, позволяющая разрешать соединения только с использованием действительного доменного имени, а не IP-адреса. Поскольку использование доменного имени идет в DNS, нам нужно избегать их.
Вы можете попробовать такой инструмент, как curl, который позволяет отправлять запрос на целевой IP-адрес, но принудительно использует хост. Другой вариант — попытаться принудительно использовать файл хоста (т. е. /etc/hosts), поскольку запрос не будет проверять DNS и будет использовать IP-адрес, который вы там установили вручную.
Все это звучит красиво, но во многих случаях такой метод не работает, поскольку Cloudflare на практике применяет защитные методы, анализируя свое ядро посредством waiting room.
Что такое waiting room? В течение некоторого времени ваш браузер решает задачи, чтобы доказать, что вы не робот. Если вы помечены как бот, вам будет выдана ошибка «Доступ запрещен». В ином случае, произойдет автоматическое перенаправление на настоящую веб-страницу.
Вы окажетесь в Cloudflare waiting room на несколько секунд. Точное время зависит от уровня безопасности цели и того, как ваш парсер проходит тесты. Как только задача будет решена один раз, вы сможете некоторое время просматривать сайт.
Как решить Cloudflare waiting room? В идеале, решить задачи JavaScript, доказав, что вы человек. Однако жизнеспособным подходом является анализ задачи JavaScript Cloudflare, чтобы понять алгоритм, отвечающий за создание задачи и проверку ответа. Таким образом, вы можете перепроектировать сценарий.
Ключевые факторы при контакте с Bot Challenge и Turnstile – это качественные резидентские прокси и тщательно подобранный User Agent.
Учитывая все вышесказанное, проще всего довериться разработанным технологиям прохождения Cloudflare Bot Challenge и Turnstile таким ресурсам, как CapMonster Cloud, который предлагает эффективное решение этих типов защиты в несколько раз дешевле, чем остальные.
Используя ресурсы ZennoPoster можно реализовать следующую схему решения Cloudflare Turnstile:
С помощью регулярного выражения вытаскиваем необходимый websiteKey, который вместе со своим API key передаем POST-запросом на CapMonster Cloud.
После 5-7 секундной паузы отправляем повторный запрос с подтвержденным TaskID. Если получили результат с готовым токеном, вводим и отправляем его. Если же в ответе токен отсутствует, то отправляем повторный запрос с теми же параметрами через несколько секунд.
Подробную документацию можно найти и ознакомиться по ссылке. Кроме того, разработчики предлагают решение данных типов защиты с помощью расширения для браузера CapMonster Cloud extension.
В заключение хотелось бы подчеркнуть, что с развитием технологий, а особенно внедрением искусственного интеллекта, защита естественно, будет совершенствоваться и усложнять задачи для разработчиков. Но и сервисы, подобные Capmonster Cloud, не будут стоять на месте, а разрабатывать свой ответ на подобные технологии.
NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях.