Введение

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

Мы потратили сотни часов на изучение способов обхода Cloudflare, чтобы создать наиболее полное руководство (которое вы сейчас читаете!). Вот некоторые из методов, которые мы рассмотрим:

  1. Использование решений для Cloudflare.
  2. Использование API для веб-скрейпинга для обхода Cloudflare.
  3. Обход CDN Cloudflare путем обращения к серверу-источнику.
  4. Реализация укрепленных безголовых браузеров.
  5. Умные прокси для обхода Cloudflare.
  6. Обход очереди ожидания Cloudflare и реверс-инжиниринг его вызовов.
  7. Обход CAPTCHA Cloudflare.
  8. Скрейпинг кэша Google.
  9. DIY обход Cloudflare.

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

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

Одной из ключевых систем WAF Cloudflare является Bot Manager, который снижает атаки от злонамеренных ботов, не влияя на реальных пользователей. Однако Cloudflare признает важность таких ботов, как Google и другие поисковые пауки, которые делают контент доступным, поэтому она поддерживает белый список для этих хороших ботов.

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

Если вы когда-либо пытались спарсить сайт, защищенный Cloudflare, возможно, вы сталкивались с несколькими ошибками, связанными с управлением ботами:

  • Ошибка 1003: Прямой доступ по IP не разрешен.
  • Ошибки 1006, 1007 и 1008: Доступ запрещен.
  • Ошибка 1009: Доступ запрещен из-за вашего региона.
  • Ошибка 1010: Доступ запрещен из-за подозрительной сигнатуры браузера.
  • Ошибка 1015: Ваш доступ был ограничен по частоте запросов.
  • Ошибка 1020: Доступ запрещен, потому что ваш запрос выглядит подозрительно.

Эти проблемы часто сопровождаются статус-кодом HTTP 403 Forbidden 
от Cloudflare.

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

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

Пассивные методы обнаружения ботов Cloudflare

Вот неполный список пассивных методов обнаружения ботов, которые использует Cloudflare:

1. Обнаружение ботнетов

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

2. Репутация IP-адресов

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

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

Cloudflare также использует заголовки HTTP-запросов для определения, являетесь ли вы ботом. Например, если вы используете Requests в Python, у вас будет не браузерный User Agent, такой как python-requests/2.220. Cloudflare может легко пометить и заблокировать ваш скрейпер с таким User Agent.

Ваш скрейпер также может быть заблокирован, если ваш запрос не содержит типичных легитимных браузерных заголовков, имеет несоответствие строки заголовков или содержит устаревшее поле заголовка. Например, включение Sec-CH-UA-Full-Version-List в ваши заголовки, если вы использовали User Agent Firefox, может привести к блокировке, так как Firefox не поддерживает это поле заголовка.

4. TLS-отпечатки

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

Например, Chrome версии 121 на Windows 10 имеет другой отпечаток по сравнению со всеми следующими:

  • Chrome версии 121 на Windows 8.
  • Chrome версии 125 на Windows 10.
  • Браузер Firefox на Windows 10.
  • Chrome версии 121 на устройстве Android.
  • Библиотека Python HTTP Requests.

Различные методы TLS-отпечатков (такие как JA3, JARM и CYU) анализируют различные аспекты TLS-хэндшейка, и каждый метод последовательно производит одинаковый отпечаток для данной конфигурации клиента, даже при последующих запросах.

Формирование TLS-отпечатка происходит во время TLS-хэндшейка между клиентом и сервером. В этом процессе Cloudflare анализирует поля «client hello» сообщения, такие как наборы шифров, расширения и эллиптические кривые, чтобы вычислить хэш отпечатка для данного клиента.

Затем Cloudflare ищет этот хэш в базе данных предварительно собранных отпечатков, чтобы определить клиента, отправляющего запрос. Как только хэш клиента совпадает с разрешенным хэшом отпечатка, Cloudflare далее сравнивает их заголовки User Agent.

Если они совпадают, система безопасности предполагает, что запрос поступил от стандартного браузера, и предоставляет доступ клиенту. В противном случае она помечает клиента как бота и блокирует его.

5. HTTP/2 отпечатки

Спецификация HTTP/2 расширяет предыдущий протокол HTTP/1.1 новыми параметрами для повышения производительности веб-приложений с учетом параллелизма. Менеджер ботов Cloudflare берет отпечатки этих новых значений в предстоящих запросах для обнаружения поведения, подобного ботам.

Один из основных аспектов HTTP/2, который Cloudflare берет отпечатки, — это бинарный уровень фреймов. Он определяет нагрузку, обмен между клиентом 
и сервером.

В своей работе по пассивному отпечатку клиентов HTTP/2 Akamai предлагает три метода отпечатка. Вот краткое резюме:

  • Фреймы: 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.
  • Порядок псевдо-заголовков: Порядок псевдо-заголовков должен быть , , и .

Метод отпечатка HTTP/2 работает аналогично методу отпечатка TLS. Менеджер ботов сканирует входящие параметры HTTP/2 на соответствие тем в базе данных отпечатков Cloudflare. Обе методы обнаружения работают вместе.

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

Активные методы обнаружения ботов Cloudflare

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

1. CAPTCHA

Один из клиентских методов обнаружения, которые использует Cloudflare, — это CAPTCHA Turnstile. Это не интерактивная задача, которая работает в фоновом режиме для обнаружения ботов, анализируя такие сигналы, как среда браузера, операционная система, движения мыши, клики и т. д.

То, будет ли Cloudflare отображать CAPTCHA Turnstile, зависит от нескольких факторов, таких как:

  • Конфигурация сайта.
  • Профиль трафика клиента.
  • История предыдущих запросов.

2. JavaScript challenge

Cloudflare может применять JavaScript challenge для анализа поведения клиента. Этот метод включает выполнение JavaScript-фрагментов для оценки того, реагирует ли клиент в ожидаемом диапазоне. Иногда с помощью JavaScript challenge требуется установка cookie на стороне клиента.

Если клиент не выполняет или не отвечает на проверку JavaScript, Cloudflare подозревает бота и может блокировать его доступ. JavaScript challenge может быть более сложным для обхода, если использование скрейпинга включает выполнение и интерпретацию JavaScript.

3. Cookies

В некоторых случаях Cloudflare применяет cookies для проверки клиента. Если клиент не получает или не возвращает соответствующие cookies, это может указывать на бота. Это также может включать проверку наличия определенных cookies или значений, которые только настоящие пользователи должны иметь.

Таким образом, активные методы проверки ботов в основном включают клиентские вызовы и скрипты, которые анализируют активность браузера и среду клиента.

1. Использование решений для Cloudflare

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

  • ScraperAPI: Это прокси-сервис, который может обрабатывать Cloudflare и многие другие WAF. Он автоматически обрабатывает CAPTCHA и JavaScript challenge, и при этом подходит для создания масштабируемых веб-скрейпинг-решений.
  • ProxyMesh: Этот сервис предоставляет прокси, которые помогают скрыть ваш IP и обойти Cloudflare. Хотя это и не универсальное решение, но может быть полезным для базовых задач обхода.
  • Zyte: Ранее известный как Scrapinghub, Zyte предоставляет API для обхода Cloudflare и других механизмов защиты. Это более продвинутый инструмент, который также может автоматически управлять JavaScript challenge и CAPTCHA.

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

2. Использование API для веб-парсинга для обхода Cloudflare

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

Вот несколько примеров:

  • Octoparse: Это мощный инструмент веб-скрейпинга с поддержкой обхода защиты от ботов, включая Cloudflare. Он также предлагает функции визуального дизайна для создания парсеров
  • Diffbot: Diffbot предоставляет API для анализа веб-страниц и извлечения данных, которые могут обрабатывать и обходить различные виды веб-защиты, включая Cloudflare.
  • Apify: Apify — это облачная платформа для веб-парсинга и автоматизации, которая включает в себя решения для обхода защиты от ботов и поддержки работы с Cloudflare.

Использование этих API может упростить процесс обхода защиты, так как они часто уже включают функции обхода CAPTCHA, JavaScript challenge и других проверок.

3. Обход CDN Cloudflare путем обращения к серверу-источнику

В некоторых случаях, если Cloudflare используется только для CDN и защиты от DDoS, вы можете попытаться получить доступ к серверу-источнику напрямую, чтобы избежать защиты Cloudflare. Для этого нужно:

  • Поиск серверного IP: Если вы можете найти IP-адреса сервера, который использует Cloudflare, вы можете попробовать сделать запросы напрямую к этим IP-адресам. Один из способов найти IP-адреса — это провести поиск в интернете или использовать инструменты, такие как Shodan.
  • Использование других доменных имен: Иногда веб-сайты используют несколько доменных имен или поддоменов, которые могут указывать на серверные IP. Исследуйте такие поддомены или другие публичные ресурсы, чтобы найти серверные IP-адреса.

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

4. Реализация укрепленных безголовых браузеров

Для обхода защиты Cloudflare вы можете использовать безголовые браузеры (headless browsers), такие как Puppeteer или Selenium, которые могут имитировать настоящие пользовательские сессии.

  • Puppeteer: Это библиотека Node.js, которая предоставляет API для управления браузером Chrome через DevTools Protocol. Puppeteer может выполнять JavaScript и обрабатывать сложные задачи, такие как обход JavaScript challenge.
  • Selenium: Это более известная библиотека для автоматизации браузеров, которая поддерживает различные браузеры и языки программирования. Selenium может быть использован для имитации пользовательских действий и обхода защиты Cloudflare.
  • Playwright: Новый инструмент от Microsoft, который поддерживает автоматизацию браузеров и может быть использован для обхода Cloudflare. Он предоставляет возможности для работы с несколькими браузерами и может обрабатывать сложные сценарии.

5. Умные прокси для обхода Cloudflare

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

  • Residential Proxy Networks: Такие сети, как Luminati (ныне Bright Data), предоставляют доступ к прокси-серверам с реальных пользователей. Это может помочь обойти защиту Cloudflare, так как IP-адреса, используемые в таких сетях, кажутся менее подозрительными.
  • Rotating Proxy Services: Сервисы, такие как ScraperAPI и ProxyMesh, предоставляют IP-адреса, которые могут регулярно меняться, что также помогает обойти защиту Cloudflare.

6. Обход очереди ожидания Cloudflare и реверс-инжиниринг его вызовов

В некоторых случаях вам нужно будет разобраться с механизмом очереди ожидания (waiting queue) Cloudflare, чтобы получить доступ к защищенному сайту. Это может включать:

  • Реверс-инжиниринг запросов: Анализируйте запросы и ответы между вашим браузером и Cloudflare, чтобы понять, какие параметры или заголовки требуются для прохождения очереди ожидания.
  • Эмуляция поведения: Используйте безголовые браузеры или прокси для имитации реального пользовательского поведения, чтобы обойти очередь ожидания и получить доступ к сайту.

7. Обход CAPTCHA Cloudflare

Для обхода CAPTCHA, такой как Turnstile, вы можете использовать специализированные сервисы и инструменты:

  • Anti-Captcha: Это сервис, который решает CAPTCHA автоматически, предоставляя решение для обхода защиты.
  • 2Captcha: Похожий сервис, который также предоставляет автоматические решения для CAPTCHA, включая Cloudflare Turnstile.
  • Manual CAPTCHA Solvers: В некоторых случаях вам может потребоваться вручную решать CAPTCHA, если автоматизированные сервисы не работают.

8. Скрейпинг кэша Google

Вместо того чтобы напрямую запрашивать защищенный сайт, вы можете попробовать получить данные из кэша Google:

  • Google Cache: Выполните поиск в Google с добавлением cache: перед URL сайта. Это может позволить вам получить доступ к кэшированной версии страницы без защиты Cloudflare.
  • Google Custom Search API: Используйте этот API для получения данных из кэша Google, что может помочь в обходе защиты.

9. DIY обход Cloudflare

Если вам нужно обойти Cloudflare самостоятельно, вы можете использовать следующие методы:

  • Настройка парсера: Убедитесь, что ваш парсер имитирует реального пользователя, используя правильные заголовки, cookies и User Agent.
  • Обход JavaScript: Используйте инструменты, такие как Puppeteer или Selenium, для выполнения и обхода JavaScript challenge.
  • Использование прокси: Настройте прокси-серверы для обхода блокировок по IP.
  • Анализ запросов и ответов: Изучите, какие запросы и ответы необходимы для успешного обхода Cloudflare, и настройте свой парсер соответствующим образом.

Пример обхода Cloudflare на примере

В продолжение обхода защиты Cloudflare, мы сталкиваемся с задачей анализа и реверс-инжиниринга JavaScript-защиты, применяемой на страницах сайтов. Сейчас мы подробно разберем процесс обхода Cloudflare на примере страницы ожидания сайта G2, поделимся нашими находками и предложим эффективные решения.

Шаг 1: Анализ сетевого журнала

Первый шаг на пути к пониманию защиты Cloudflare заключается в исследовании сетевого трафика. Откройте инструменты разработчика в вашем браузере и перейдите на вкладку «Сеть». После этого загрузите сайт G2 и наблюдайте за последовательностью запросов.

Ключевыми моментами являются несколько запросов:

  1. Первичный GET-запрос к https://www.g2.com/, который возвращает HTML страницы ожидания. В нем содержатся важные <script> теги с анонимной функцией, которая инициализирует загрузку «первичного челленджа».
  2. GET-запрос к «первичному челленджу»: В ответе на этот запрос возвращается обфусцированный JavaScript-код, который меняется при каждом запросе. Этот скрипт отвечает за инициализацию следующих этапов защиты.
  3. POST-запросы, которые отправляют решение челленджа на сервер и возвращают базовое HTML-содержимое целевой страницы и cookie-файл cf_clearance, позволяющий обходить повторные челленджи.

На первый взгляд, эти запросы не дают много информации, так как данные зашифрованы или представляют собой случайный текст. Однако здесь важна каждая деталь, и на этом этапе мы рекомендуем углубиться в изучение «первичного челленджа».

Шаг 2: Отладка скрипта Cloudflare

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

Настройте точку останова на все запросы XHR или fetch в инструментах разработчика, очистите cookie и снова загрузите сайт. Вы заметите, что точка останова срабатывает сразу после загрузки «первичного челленджа». Это позволяет получить доступ ко всем переменным и функциям в текущей области видимости, но из-за обфусцированного кода разобраться в их назначении сложно.

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

Пример кода:

Здесь переменная aE — это экземпляр XMLHttpRequest, ранее инициализированный в скрипте, а window._cf_chl_ctx содержит контекст челленджа, отправляемый на сервер.

Шаг 3: Деобфускация скрипта

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

Шаг 4: Анализ деобфусцированного скрипта

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

Пример кода:

Эта функция расшифровывает основной скрипт защиты, используя ключ, основанный на значении window._cf_chl_opt.cRay.

Заключение

Обход защиты Cloudflare — сложная задача, требующая глубоких знаний и опыта в области реверс-инжиниринга и анализа JavaScript.

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

Если вам требуется помощь в обходе сложной защиты, обращайтесь к нам — мы обязательно решим вашу задачу.

Контактная информация:

Компания: ParsingMaster

Сайт: parsingmaster.com

Email: info@parsingmaster.com

Telegram: parsingmaster_manager

Телефон: +7 (920) 909-36-72

Заказать обратный звонок

Попробуйте бесплатно

Убедитесь в надёжности и эффективности нашего сервиса.
Воспользуйтесь услугой пробного парсинга.

Заказать пробный парсинг

Как начать пользоваться?

Оставьте заявку

Для начала оставьте заявку удобным Вам способом, нажав кнопку ниже.
С Вами свяжется наш менеджер для обсуждения деталей Вашего запроса.

Оставить заявку

Остались вопросы

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

Задать вопрос
    Корзина пустаяВернуться в магазин