Как обойти Cloudflare при скрапинге публичных данных

Опубликовано: 23 июля 2026 · 7 мин чтения

Кратко: Cloudflare выполняет не одну проверку на бота, а несколько — репутация IP/ASN, отпечаток TLS и HTTP/2 и интерактивные JS-проверки (Managed Challenge / Turnstile). Чтобы пройти их, нужно закрыть каждый слой: резидентный прокси для IP, точный, как у браузера, TLS-отпечаток (curl_cffi или настоящий браузер) и настоящий браузер, выполняющий JavaScript, для страниц с проверкой. Какая комбинация нужна вам, зависит от того, какой слой на самом деле вас останавливает. Скрапьте только публичные данные и соблюдайте разумную частоту запросов.

Cloudflare — это не одна стена, а три

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

СлойЧто проверяетКак вы её не проходитеРешение
Репутация IPASN выходного IPЗапрос из диапазона дата-центраРезидентный прокси
Отпечаток TLS / HTTP2Ваш ClientHello (JA3/JA4)Отпечаток Python/библиотекиcurl_cffi или настоящий браузер
JS-проверкаВыполняется ли JavaScriptНет движка JS (голый HTTP)Настоящий браузер, выполняющий JS

Слой 1: репутация IP — то, что нельзя подделать из кода

Прежде чем Cloudflare посмотрит на что-либо, отправленное вашим клиентом, он оценивает IP, с которого вы пришли. Дата-центровые ASN (AWS, Hetzner, OVH) несут постоянный штраф, потому что реальные посетители почти никогда не заходят с них. Никакой заголовок, никакой трюк с отпечатком и никакой браузер не могут изменить ASN IP, с которого вы выходите — это может сделать только маршрутизация через другую сеть.

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

Слой 2: отпечаток TLS — тихая блокировка

Во время TLS-рукопожатия Cloudflare хеширует ваш ClientHello в отпечаток JA3/JA4. Библиотеки Python requests и httpx создают отпечаток, который не выдаёт ни один настоящий браузер, поэтому Cloudflare может заблокировать вас незаметно, ещё до отправки хотя бы одного байта страницы — без видимой проверки, просто 403 или зависание.

Если вы пишете скрипт с HTTP-запросами, а не используете браузер, восстановите точный, как у браузера, отпечаток с помощью curl_cffi. В сочетании с резидентным прокси это закрывает слои 1 и 2 в одном скрипте:

from curl_cffi import requests

proxies = {"https": "http://USER:PASS@gw.roamproxy.com:41080"}
r = requests.get("https://target.example", impersonate="chrome124", proxies=proxies)
print(r.status_code)

Слой 3: JS-проверка — когда нужен настоящий браузер

Некоторые конфигурации Cloudflare показывают интерактивную проверку — промежуточную страницу «Checking your browser…» или виджет Turnstile. Они работают, передавая клиенту JavaScript, который настоящий браузер выполняет, чтобы доказать, что он таковым является. Решение по отпечатку здесь не поможет, потому что в HTTP-библиотеке нет движка JavaScript, способного выполнить проверку.

Надёжный ответ — использовать настоящий браузер, выполняющий JS: headless Chromium через Playwright или управляемый LLM агент поверх него. Направьте этот браузер через тот же резидентный прокси, и он закроет все три слоя сразу. Настройку связки браузер + прокси см. в статье использование резидентных прокси с browser-use; тот же словарь прокси подходит и для обычного Playwright.

Подберите инструмент под слой

Не тянитесь сразу к полноценному headless-браузеру, если хватит резидентного IP плюс curl_cffi — браузер медленнее и тяжелее. Усиливайте инструменты ровно настолько, насколько того требует реальная защита цели. Более широкий чек-лист о причинах блокировок скраперов см. в статье как избежать блокировок при веб-скрапинге.

Собирайте публичные данные ответственно. Эти методы предназначены для скрапинга общедоступных страниц с разумной частотой запросов. Соблюдайте robots.txt и условия сайта там, где они применимы, не получайте доступ к данным за авторизацией, которой у вас нет, и ограничивайте частоту запросов, чтобы никогда не создавать нагрузку на сайт для его реальных пользователей.

Частые вопросы

Почему один и тот же запрос работает в браузере, но не в скрипте?

Потому что ваш браузер проходит все три проверки Cloudflare, а скрипт — ни одной. Браузер выходит с вашего домашнего резидентного IP, отправляет настоящий TLS-отпечаток Chrome и автоматически проходит JS-проверку. Обычный скрипт на requests с облачного сервера делает всё наоборот по каждому пункту. Решение — не один трюк, а восстановление всех трёх этих свойств.

Достаточно ли одного резидентного прокси, чтобы обойти Cloudflare?

Зависит от того, на какой слой опирается сайт. Резидентный IP проходит проверку репутации, чего часто достаточно для сайтов, оценивающих только IP. Но если сайт также проверяет отпечаток TLS или показывает JS-проверку, один чистый IP не поможет — вас всё равно остановит слой, который вы не закрыли. На сложной цели обычно нужно решение по IP и решение по отпечатку или настоящему браузеру вместе.

В чём разница между проверкой TLS и JS-проверкой?

Проверка TLS происходит незаметно во время рукопожатия — Cloudflare считывает ваш отпечаток JA3/JA4 ещё до загрузки страницы и может заблокировать вас без видимой проверки. JS-проверка — это видимая страница «Checking your browser» / виджет Turnstile: Cloudflare отдаёт JavaScript, который настоящий браузер выполняет, чтобы доказать, что он браузер. Решение по отпечатку (curl_cffi) справляется с первым; только настоящий браузер, выполняющий JS, справляется со вторым.

Законно ли скрапить сайт, защищённый Cloudflare?

Скрапинг общедоступных данных в целом допустим во многих юрисдикциях, но это не безусловное право. Действуйте осторожно: собирайте только публичные данные, соблюдайте robots.txt и условия сайта там, где они применимы, никогда не скрапьте данные за авторизацией, к которой у вас нет доступа, и ограничивайте частоту запросов, чтобы не создавать нагрузку на сервис для реальных пользователей. Описанные здесь методы предназначены для легитимного сбора данных, а не для перегрузки сайта.

Слой IP — это то, что нельзя подделать из кода, и именно его Cloudflare проверяет первым. Резидентные IP от Roam — с ротацией по $2/ГБ, статические по $4/IP в месяц, по HTTP и SOCKS5 — дают Cloudflare реальный ASN домашнего интернет-провайдера для оценки вместо диапазона дата-центра. Создайте аккаунт и получите 300 МБ бесплатного пробного трафика, чтобы протестировать это на своей цели.