CoderCastrov logo
CoderCastrov
Парсер

Как работает обнаружение ботов Cloudflare

Как работает обнаружение ботов Cloudflare
просмотров
8 мин чтение
#Парсер

Согласно исследованиям, около 40% всего интернет-трафика порождается ботами, поэтому существует роснущий спрос на программное обеспечение, которое может отличить человеческую активность от активности ботов. Примером такого программного обеспечения является решение по управлению ботами от Cloudflare.

Если вы нажали на эту статью, вероятно, вы хотите узнать, как обойти Cloudflare. Вы находитесь в правильном месте! Что такое управление ботами Cloudflare? Как Cloudflare обнаруживает ботов? Как обратно разработать и обойти Cloudflare? Готовы? Давайте начнем!

Что такое управление ботами Cloudflare

Cloudflare - это компания, занимающаяся веб-производительностью и безопасностью. В области безопасности мы предлагаем нашим клиентам брандмауэр веб-приложений (WAF). WAF может защитить ваши приложения от различных угроз безопасности, включая межсайтовый скриптинг (XSS), заполнение учетных данных и DDoS-атаки.

Одной из основных систем, входящих в WAF, является менеджер ботов Cloudflare. В качестве решения по защите от ботов его главная цель - остановить атаки злонамеренных ботов, не влияя на реальных пользователей.

Cloudflare признает важность некоторых ботов. Например, ни один веб-сайт не хочет предотвращать индексацию его веб-страниц Google или другими поисковыми системами. Для учета этого Cloudflare поддерживает список разрешенных хороших ботов.

К сожалению, энтузиасты парсинга вроде вас считают, что весь трафик ботов, не включенных в белый список, является вредоносным. Так что независимо от намерений, возможно, что бот будет отказан в доступе к защищенной Cloudflare веб-странице.

Если вы когда-либо пытались спарсить веб-сайт, защищенный Cloudflare, возможно, вы столкнулись с следующими ошибками, связанными с менеджером ботов:ошибка 1020: Доступ запрещеношибка 1010: Доступ заблокирован владельцем этого веб-сайтаОшибка 1015: Ограничение скоростиОшибка 1012: Доступ запрещенОбычно они включают в себя ответ HTTP 403 Forbidden В сопровождении статусного кода.

Можете ли вы обойти Cloudflare?

К счастью, ответ - да. Однако, разработка обхода Cloudflare - не такая простая задача, чтобы сделать это самостоятельно. Сначала вам нужно иметь хорошее понимание того, как это работает.

Как Cloudflare обнаруживает ботов?

Методы обнаружения ботов, используемые Cloudflare, обычно можно разделить на два типа: пассивные и активные. Пассивные методы обнаружения ботов состоят из проверок отпечатков, выполняемых на серверной стороне, в то время как активные методы обнаружения полагаются на проверки, выполняемые на стороне клиента. Давайте вместе рассмотрим некоторые примеры из каждой категории!

Техники пассивного обнаружения ботов Cloudflare

Ниже приведен неполный список некоторых техник пассивного обнаружения ботов, используемых Cloudflare. Устройство, подозреваемое в принадлежности к одной из этих сетей, будет либо автоматически заблокировано, либо столкнется с дополнительными клиентскими вызовами для разрешения.

Репутация IP-адреса

Репутация пользователя (также известная как оценка риска или оценка мошенничества) ее IP-адреса основана на таких факторах, как местоположение, провайдер и история репутации. Например, IP-адрес, принадлежащий центру обработки данных или известному провайдеру VPN, будет иметь более низкую репутацию, чем частный IP-адрес. Веб-сайт также может ограничить доступ к веб-сайту из регионов за пределами регионов, в которых он обслуживается, так как оттуда не будет поступать трафик от реальных клиентов.

Заголовки запроса HTTP

Cloudflare использует заголовки запроса HTTP, чтобы определить, является ли пользователь роботом. Если вы используете не браузерный user-agent, например, python-requests/2.22.0, вы можете легко выбрать парсер в качестве вашего бота. Cloudflare также может блокировать ботов, если они отправляют запросы, в которых отсутствуют заголовки, которые должны быть присутствовать в браузере. Или если заголовки не соответствуют на основе user agent.

TLS Fingerprinting

Эта техника позволяет Анти-Боту Cloudflare идентифицировать клиента, используемого для отправки запросов на сервер.

Существует несколько способов идентификации TLS (JA3, JARM, CYU и т. д.), но каждая реализация генерирует статический отпечаток для каждого запрашивающего клиента. Идентификация TLS полезна, потому что реализации TLS в браузерах обычно отличаются от других версий, других браузеров и библиотек, основанных на запросах. Например, браузер Chrome (версия 104) на Windows имеет отличный от всех следующих отпечаток:

Браузер Chrome (версия 87) на WindowsБраузер FirefoxБраузер Chrome на устройствах AndroidБиблиотека HTTP-запросов Python

Отпечаток TLS создается во время рукопожатия TLS. Cloudflare анализирует поля, предоставленные в сообщении "Client Hello", такие как: наборы шифрования, расширения и эллиптические кривые, чтобы вычислить хэш отпечатка для конкретного клиента.

Затем этот хэш ищется в базе данных предварительно собранных отпечатков, чтобы идентифицировать клиента, отправляющего запрос. Если хэш клиента соответствует разрешенному хэшу отпечатка (то есть отпечатку браузера), Cloudflare сравнивает заголовок user-agent запроса клиента с user-agent, связанным с сохраненным хэшем отпечатка.

Если они совпадают, система безопасности предполагает, что запрос поступил от стандартного браузера. В противном случае, несоответствие между отпечатком TLS клиента и его объявленным user-agent указывает на использование пользовательского программного обеспечения для парсинга, что приводит к блокировке запросов.

HTTP/2 Отпечаток

Спецификация HTTP/2 является второй основной версией протокола HTTP, опубликованной в виде RFC 7540 14 мая 2015 года. Протокол поддерживается всеми популярными браузерамиОсновной целью HTTP/2 было улучшение производительности веб-сайтов и веб-приложений путем введения сжатия заголовков и возможности одновременных запросов и ответов по одному TCP-соединению. Для этой цели основа HTTP/1.1 была расширена новыми параметрами и значениями. Отпечатки HTTP/2 основаны на этих новых внутренних структурах.

Бинарный фреймовый слой является новым дополнением к HTTP/2 и является центральным для отпечатков HTTP/2 функцией.

Если вы интересуетесь более глубоким анализом отпечатков HTTP/2, пожалуйста прочитайте предложенную ими методологию отпечатков HTTP2 клиентов (пассивное отпечатки HTTP/2 клиента).** Но пока вот краткое изложение:

Три основных компонента формируют отпечаток HTTP/2:Фреймы: SETTINGS_HEADER_TABLE_SIZE, SETTINGS_ENABLE_PUSH, SETTINGS_MAX_CONCURRENT_STREAMS, SETTINGS_INITIAL_WINDOW_SIZE, SETTINGS_MAX_FRAME_SIZE, SETTINGS_MAX_HEADER_LIST_SIZE, WINDOW_UPDATEИнформация о приоритете потока: StreamID:Exclusivity_Bit:Dependant_StreamID:WeightПсевдо Порядок Заголовков: Порядок :метод, :авторитет, :схема и :путь заголовков.Если вас это интересует, вы можете попробовать живую демонстрацию отпечатков HTTP/2, нажав здесь.

Аналогично отпечатку TLS, у каждого клиента запроса есть статический отпечаток HTTP/2. Чтобы определить подлинность запроса, Cloudflare всегда проверяет, соответствует ли отпечаток/агент пользователя запроса хранящимся в нашей базе данных разрешенным значениям.

Отпечатки HTTP/2 и отпечатки TLS тесно связаны. Из всех техник пассивного обнаружения ботов, используемых Cloudflare, эти две являются самыми технически требовательными для контроля с ботами, основанными на запросах. Но они также являются самыми важными. Поэтому вам необходимо убедиться, что вы правильно их понимаете. В противном случае вы рискуете быть заблокированными.

Хорошо! Теперь у вас должно быть хорошее понимание того, как Cloudflare пассивно обнаруживает ботов. Но помните: это только половина истории. Так что давайте посмотрим, как они делают это активно!

Технология активного обнаружения ботов Cloudflare

Когда вы посещаете веб-сайт, защищенный Cloudflare, на клиентской стороне (т.е. в локальном браузере) выполняются множество проверок, чтобы определить, является ли пользователь ботом. Вот некоторые (не исчерпывающие) методы, используемые ботами. Однако они известны тем, что ухудшают пользовательский опыт. Возможность отображения CAPTCHA для пользователей на сайте зависит от нескольких факторов, таких как: конфигурация сайта. Администраторы веб-сайтов всегда могут включить, отключить или настроить CAPTCHA. Уровень риска. Cloudflare может выбрать отображение CAPTCHA только в случае подозрительного трафика. Например, если пользователь использует клиент Tor для просмотра сайта, он может увидеть CAPTCHA, но не при использовании стандартного веб-браузера, такого как Google Chrome. В таких случаях возможно обходить CAPTCHA Cloudflare, о чем будет описано ниже.

Ранее Cloudflare использовал reCAPTCHA в качестве основного провайдера CAPTCHA. Однако, начиная с 2020 года, они перешли к использованию только hCaptcha. Ниже приведен пример hCaptcha, отображаемого на веб-сайте, защищенном Cloudflare.

Канвас-отпечаток

Канвас-отпечаток позволяет системе идентифицировать класс устройства веб-клиента. Класс устройства относится к комбинации браузера, операционной системы и графического оборудования системы, используемой для доступа к веб-сайту.

Канвас - это HTML5 API для рисования графики и анимации на веб-страницах с использованием JavaScript. Чтобы создать канвас-отпечаток, веб-страница запрашивает API канваса в браузере для отображения изображения. Затем это изображение хешируется для создания отпечатка.

Эта техника основана на рассмотрении графического рендеринга системы как функции, которую невозможно физически воспроизвести. Это может показаться сложным, поэтому позвольте мне объяснить.

Канвас-отпечаток основан на нескольких уровнях компьютерных систем, включая: например: аппаратное обеспечение. GPU, низкоуровневое программное обеспечение. Драйверы GPU, операционная система (шрифты, алгоритмы сглаживания/субпиксельного рендеринга), программное обеспечение высокого уровня веб-браузера (движок обработки изображений), устройство.

Чтобы быть ясным, канвас-отпечатки не содержат достаточно информации для правильного отслеживания и идентификации отдельных лиц и ботов. Вместо этого их основная цель - точно различать классы устройств.

В контексте обнаружения ботов это полезно, потому что боты обычно лгут (через заголовок user-agent) о базовой технологии. Cloudflare имеет большой набор данных о законных сочетаниях канвас-отпечатков и user-agent. Машинное обучение может использоваться для обнаружения подделки свойств устройства.

Отслеживание событий

Cloudflare добавляет слушатели событий на ваш веб-сайт. Они отслеживают действия пользователей, такие как движения мыши, клики мыши и нажатия клавиш. В большинстве случаев реальные пользователи будут использовать мышь или клавиатуру для просмотра. Если Cloudflare обнаруживает постоянное отсутствие использования мыши или клавиатуры, мы можем предположить, что вы являетесь ботом.

Запросы к API окружения

Это очень широкая категория. Браузеры имеют сотни **веб-**API, которые могут использоваться для обнаружения ботов. Я постараюсь классифицировать их в четыре категории.

API, специфичные для браузера. Эти спецификации могут существовать в одном браузере, но не в другом. Например, свойство window.chrome является специфичным для браузера Chrome. Если данные, которые вы отправляете в Cloudflare, показывают, что вы используете браузер Chrome, но отправляете их, используя user agent Firefox, то что-то не так. API временных меток. Cloudflare отслеживает метрики скорости пользователя, используя API временных меток, такие как Date.now() и window.performance.timing.navigationStart. Если временная метка не выглядит как нормальная активность просмотра человека, пользователь будет заблокирован. Некоторые примеры: неправдоподобно быстрый просмотр или несоответствующие временные метки (например, временная метка navigationStart перед загрузкой страницы)Автоматическое обнаружение браузера. Cloudflare запрашивает у браузера свойства, специфичные для автоматизированных **веб-**сред. Например, наличие свойств window.document.__selenium_unwrapped или window.callPhantom указывает на использование Selenium или PhantomJS соответственно. По очевидным причинам, вы будете заблокированы, если это будет обнаружено.Обнаружение песочницы. Под песочницей здесь понимается попытка эмулировать браузер в небраузерной среде. Cloudflare имеет проверки, чтобы предотвратить попытки пользователей решать задачи, используя эмулированную среду браузера. Например, в NodeJS с использованием JSDOM. Например, скрипт может искать объект процесса, который существует только в его NodeJS. Вы также можете использовать Function.prototype.toString.call(functionName) для проверки, изменилась ли функция.

Основа защиты от ботов Cloudflare

Как и многие другие анти-боты, Cloudflare собирает данные из всех вышеуказанных методов в качестве сенсорных данных и проверяет их на согласованность на стороне сервера.

Фух, было много информации! Теперь вы должны понимать, как работает технология обнаружения ботов, используемая Cloudflare.

До сих пор мы только рассмотрели общие концепции, не углубляясь в слишком много деталей о фактических скриптах Cloudflare. Но не волнуйтесь. В этом следующем разделе мы рассмотрим, как именно Cloudflare применяет эти техники в своей практике по борьбе с ботами. Анализируя его основу: помещение ожидания Cloudflare.

В следующей статье мы обсудим обход ботов.