← Все статьи

Как Cloudflare решает вас заблокировать

4 мин чтения detectionanti-botcloudflare

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

Cloudflare стоит перед очень большой долей веба, и потому это та стена, в которую люди упираются чаще всего, чаще, чем в DataDome или Kasada. Это не одни ворота. Это стопка проверок, и порядок важен, потому что ранние слои могут закончить запрос до того, как отработают поздние.

Четыре проверки до загрузки вашей страницы

Репутация IP и ASN. Каждый запрос приходит с адреса, у которого есть история: известный диапазон дата-центра, VPN- или прокси-провайдер, или домашний IP, который недавно вёл себя плохо на других сайтах под Cloudflare. Сеть Cloudflare видит трафик по миллионам доменов, поэтому репутация общая для сайтов, на которых вы никогда не бывали. Эта проверка выполняется до того, как отдан хоть один байт вашей страницы.

Отпечаток TLS и HTTP/2. Cloudflare хеширует TLS client hello так же, как это делают JA3 и JA4: порядок наборов шифров, расширения, эллиптические кривые. HTTP/2 добавляет сверху настройки фреймов и порядок заголовков. Это происходит на границе сети, во время рукопожатия TLS и первых HTTP-фреймов, до маршрутизации запроса на исходный сервер и до загрузки страницы. Запрос, заявляющий Chrome в заголовке User-Agent, но договаривающийся о TLS как питоновский скрипт, помечается здесь, за миллисекунды, вообще без JavaScript.

Управляемое испытание и Turnstile. Если первые два слоя не дали ответа, Cloudflare отдаёт промежуточную страницу: либо более старое управляемое испытание «проверяем ваш браузер», либо виджет Turnstile. Они выполняют небольшое доказательство работы и проверки окружения в браузере (флаги webdriver, тайминги, ведут ли себя canvas и WebGL как настоящее железо) и для большинства настоящих браузеров разрешаются автоматически, без участия человека.

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

Жёсткая блокировка, управляемое испытание или тихая оценка

Это три разных исхода, и их стоит различать, потому что чинятся они по-разному.

Жёсткая блокировка - это 403 или испытание, которое никогда не разрешается; владелец сайта настроил её явно для определённого порога оценки, страны или ASN. Смена заголовков или отпечатков её не пройдёт, потому что блокировка и есть правило.

Управляемое испытание - сама промежуточная страница. Для нормального браузера на нормальном соединении она разрешается автоматически, а падает или зацикливается, когда окружение под ней выглядит синтетическим: отсутствующие API браузера, признак headless, TLS, не совпадающий с заявленным браузером.

Тихая оценка - самая частая и наименее заметная. Ни промежуточной страницы, ни блокировки, но владелец сайта видит в своей панели прикреплённую к вашей сессии оценку и может незаметно ограничить частоту, отдать урезанный контент или пометить аккаунт за кулисами. Страница выглядит рабочей. А решение ниже по течению - непоказанная цена, форма, которая молча теряется, объявление, которое не появляется в поиске, - принято по этой оценке, а не у вас на глазах.

Почему браузер получше иногда не меняет ничего

Здесь ошибаются чаще всего. Если запрос заблокирован по репутации IP или по рукопожатию TLS, он никогда не доходит до слоя, где отпечаток браузера имел бы значение. Подстановка более убедительного user agent, заплатка на navigator.webdriver или любой антидетект-браузер с согласованной личностью в этом случае не чинят ничего, потому что блокировка уже случилась слоем-двумя раньше.

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

Когда бесплатный подход - ответ лучше

Если вам нужно только выяснить, проходит ли ваш трафик слой TLS, антидетект-браузер для этого не нужен. Обычный запуск Playwright или Puppeteer через любой прокси уже договаривается о TLS как настоящий Chrome, потому что он и есть настоящий Chrome. Несовпадение рукопожатия проявляется в основном у голых HTTP-клиентов вроде requests, axios или самописных вызовов fetch с подставленными заголовками, а для них есть бесплатные инструменты вроде curl-impersonate, специально повторяющие подпись TLS браузера.

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

Определите, в какой слой вы упираетесь

Прежде чем считать это проблемой отпечатка, посмотрите, когда появляется блокировка. 403 или испытание до того, как страница что-то нарисовала, - это сеть или TLS. Испытание, которое загрузилось и потом провалилось, - окружение браузера. Страница, которая нормально грузится, но результаты выглядят придушенными, - тихая оценка.

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

Попробуйте на бесплатном тарифе.

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