Назад в блог

Какую капчу сложнее всего обойти: исследование reCAPTCHA, Cloudflare, Arkose Labs и xCaptcha

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

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

В этом исследовании я сравню reCAPTCHA, Cloudflare Turnstile, Arkose Labs и xCaptcha именно как специалист по автоматизации и обходу антибот-защиты.

Что я считаю действительно сложной капчей

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

Меня интересуют следующие вопросы:

  • можно ли решить challenge отдельно от браузерной сессии;
  • привязан ли результат к конкретному IP;
  • анализируется ли browser fingerprint;
  • проверяется ли поведение пользователя;
  • сопоставляется ли User-Agent с реальным браузерным окружением;
  • анализируется ли TLS fingerprint;
  • учитывается ли HTTP/2 fingerprint;
  • меняются ли типы заданий;
  • используется ли risk score после успешного решения;
  • можно ли получить валидный ответ на капчу, но все равно получить отказ.

Последний пункт особенно важен.

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

Если же капча является только одним сигналом внутри общего risk engine, задача становится намного сложнее.

Краткий результат сравнения

Система Основная сложность для автоматизации Challenge Анализ сессии Моя оценка сложности обхода
reCAPTCHA Поведение и risk score Средний Высокий Высокая
Cloudflare Turnstile Проверка среды без постоянной видимой капчи Низкий Высокий Высокая
Arkose Labs Сложные и меняющиеся интерактивные задания Очень высокий Высокий Очень высокая
xCaptcha Challenge + fingerprint + TLS + HTTP/2 + согласованность сессии Высокий Очень высокий Очень высокая

Главный вывод здесь простой: самая неприятная система для автоматизации — не обязательно та, где самый сложный puzzle.

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

1. reCAPTCHA: проблема не столько в картинках

Если смотреть на reCAPTCHA только как на набор заданий с автобусами, светофорами и переходами, можно сильно недооценить систему.

Сам challenge — лишь часть механизма.

Особенно это заметно в reCAPTCHA v3, где основной результат представляет собой risk score.

С точки зрения автоматизации приходится учитывать:

  • историю сессии;
  • cookies;
  • поведение;
  • браузерное окружение;
  • последовательность действий;
  • репутацию соединения.

Это уже значительно сложнее, чем просто отправить изображение внешнему solver и получить ответ.

Где остается слабое место

Современная browser automation давно умеет:

  • работать через Chromium;
  • выполнять JavaScript;
  • сохранять cookies;
  • двигать мышь;
  • скроллить страницу;
  • создавать паузы;
  • воспроизводить сложные последовательности действий.

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

2. Cloudflare Turnstile: сложность в том, что решать иногда почти нечего

Turnstile интересен именно потому, что он пытается убрать традиционную капчу из центра процесса.

Для пользователя это плюс.

Для специалиста по автоматизации ситуация менее удобная: если видимого challenge почти нет, нельзя свести задачу к классической схеме:

найти капчу → решить → вставить token

Основная проверка происходит вокруг окружения и сессии.

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

То есть проблема перемещается из captcha solving в browser/session emulation.

3. Arkose Labs: делает каждый успешный обход дороже

Arkose Labs использует другой подход.

FunCaptcha известна интерактивными, пространственными и другими более сложными заданиями.

При исследовании такой системы первая проблема очевидна: простой универсальный solver уже не всегда подходит.

Автоматизация должна:

  1. определить текущий тип challenge;
  2. получить параметры конкретного задания;
  3. выбрать подходящий способ решения;
  4. правильно выполнить взаимодействие;
  5. сохранить контекст сессии.

Это увеличивает стоимость каждой попытки.

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

  • массовая регистрация;
  • создание аккаунтов;
  • ticket scalping;
  • promo abuse;
  • checkout abuse.

Ограничение подхода

Есть и обратная сторона.

Чем сложнее challenge для бота, тем чаще он становится сложнее и для обычного человека.

Поэтому слишком агрессивная настройка может заметно ухудшить UX.

4. xCaptcha: интереснее всего не сама капча

С точки зрения специалиста по обходу xCaptcha интереснее не визуальными заданиями.

Основная сложность в другом: система может сопоставлять несколько уровней одной сессии.

Например:

User-Agent → Chrome
JavaScript environment → Chrome
browser fingerprint → Chrome
TLS → ?
HTTP/2 → ?
IP reputation → ?
behavior → ?
captcha result → valid

Если все уровни говорят одно и то же — сессия выглядит естественно.

Если JavaScript говорит «Chrome», а сетевой стек выглядит совсем иначе, появляется противоречие.

Это принципиально другой уровень защиты.

Почему browser fingerprint уже недостаточно просто подменить

В старых антибот-системах часто можно было найти конкретный признак автоматизации и исправить только его.

Например:

navigator.webdriver = true

Убираем этот признак — и ситуация заметно улучшается.

Современные системы работают иначе.

Они могут анализировать одновременно:

  • WebGL;
  • Canvas;
  • AudioContext;
  • screen;
  • hardware properties;
  • browser APIs;
  • timezone;
  • locale;
  • fonts;
  • User-Agent;
  • TLS;
  • HTTP/2.

Поэтому вопрос уже не в том, можно ли подделать один fingerprint.

Можно.

Сложность в том, чтобы все fingerprint выглядели согласованно.

TLS fingerprint — один из самых неприятных уровней

JavaScript fingerprint можно изменять внутри браузера.

С TLS ситуация интереснее.

Еще до выполнения JavaScript клиент устанавливает HTTPS-соединение и отправляет ClientHello.

В нем присутствуют:

  • cipher suites;
  • extensions;
  • supported versions;
  • signature algorithms;
  • ALPN;
  • другие параметры TLS.

Разные браузеры и сетевые библиотеки формируют этот набор по-разному.

Именно отсюда появляются TLS fingerprinting подходы вроде JA3 и JA4.

Для антибота это очень полезно.

Можно заявить:

User-Agent: Chrome

Но если TLS-соединение больше похоже на отдельную HTTP-библиотеку, появляется сильное несоответствие.

HTTP/2 позволяет проверять клиента еще глубже

Следующий уровень — HTTP/2.

При исследовании сложных антиботов его нельзя игнорировать.

Разные реализации отличаются такими параметрами, как:

  • SETTINGS;
  • порядок настроек;
  • WINDOW_UPDATE;
  • размеры окон;
  • порядок pseudo-headers.

Получается еще одна независимая проверка:

HTTP headers → Chrome
JavaScript → Chrome
TLS → Chrome
HTTP/2 → Chrome?

Чем больше таких слоев проверяет система, тем дороже становится создание полностью согласованного клиента.

Почему residential proxy уже не решает проблему

Еще несколько лет назад смена датацентрового IP на residential могла заметно улучшить результат.

Сейчас этого часто недостаточно.

Residential IP решает только один слой:

network reputation

Но остается все остальное:

  • fingerprint;
  • TLS;
  • HTTP/2;
  • cookies;
  • behavior;
  • session history;
  • challenge.

Если один residential IP автоматически делал бы клиента человеком, современные антибот-системы практически потеряли бы смысл.

Правильно решенная капча еще не означает успешный обход

Это ключевой момент всего исследования.

Существуют специализированные сервисы решения капч, включая SolveCaptcha, поэтому получение правильного ответа на challenge само по себе давно не является нерешаемой проблемой.

Представим:

captcha → solved
token → valid
IP → residential
User-Agent → Chrome

На первый взгляд все хорошо.

Но дальше:

TLS → не соответствует Chrome
HTTP/2 → другой профиль
browser fingerprint → есть противоречия

В таком случае антибот все равно может признать сессию подозрительной.

Именно поэтому наиболее современные системы отделяют два понятия:

Captcha solved

и

Session trusted

Это не одно и то же.

Почему ротация challenge тоже важна

Еще один неприятный фактор для автоматизации — отсутствие одного постоянного задания.

Если система всегда использует одинаковую капчу, workflow быстро становится предсказуемым:

detect → solve → submit

Когда challenge меняется:

  1. сначала нужно определить его тип;
  2. затем подобрать способ решения;
  3. корректно выполнить взаимодействие;
  4. получить результат;
  5. при этом не испортить остальную сессию.

xCaptcha может использовать разные интерактивные механики, поэтому автоматизация не может полагаться только на один заранее подготовленный сценарий.

Что на практике сложнее всего обходить

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

reCAPTCHA

Сложность:

  • хороший behavioral analysis;
  • большая инфраструктура оценки риска;
  • сильная привязка к контексту.

Но значительная часть браузерного поведения сегодня уже воспроизводится автоматизацией.

Cloudflare Turnstile

Сложность:

  • минимум явных challenge;
  • сильный акцент на browser environment;
  • проверка происходит еще до того, как становится понятно, что именно не понравилось системе.

Это делает диагностику сложнее.

Arkose Labs

Сложность:

  • сложные interactive challenge;
  • вариативность заданий;
  • высокая стоимость каждой автоматизированной попытки.

Очень неприятная система при массовой автоматизации.

xCaptcha

Сложность:

  • browser fingerprint;
  • behavior;
  • IP context;
  • TLS;
  • HTTP/2;
  • разные challenge;
  • корреляция сигналов.

Именно корреляция делает этот подход особенно интересным.

Итоговый рейтинг с точки зрения специалиста по обходу

Место Система Почему сложна
1 xCaptcha Нужно согласовать captcha, браузер, TLS, HTTP/2, IP и поведение
2 Arkose Labs Сложные и дорогие для автоматизации interactive challenge
3 Cloudflare Turnstile Много фоновых проверок и мало очевидных точек для диагностики
4 reCAPTCHA Сильный risk engine, но многие behavioral signals уже хорошо изучены

Это не означает, что reCAPTCHA легко обходится. Речь именно о сравнении архитектур и количестве независимых проблем, которые приходится решать при автоматизации.

Почему сайты с ценными данными особенно интересны антиботам

При парсинге сильная антибот-защита особенно заметна на ресурсах с хорошо структурированными данными:

  • ценами;
  • каталогами;
  • товарами;
  • предложениями;
  • рейтингами;
  • аналитикой.

Например, Indexoid — типичный data-rich ресурс, для которого массовый автоматизированный сбор может быть причиной использовать более глубокую антибот-защиту.

Для таких проектов блокировка одного IP практически ничего не решает, если сбор распределен между тысячами адресов и выполняется полноценными браузерами.

Мой чек-лист при исследовании новой капчи

Когда я впервые сталкиваюсь с неизвестной системой защиты, проверяю примерно следующее:

  • [ ] Что происходит до появления challenge?
  • [ ] Какой fingerprint собирается через JavaScript?
  • [ ] Есть ли связь token с IP?
  • [ ] Насколько token привязан к конкретной сессии?
  • [ ] Используется ли behavioral analysis?
  • [ ] Проверяется ли TLS?
  • [ ] Проверяется ли HTTP/2?
  • [ ] Можно ли решить challenge отдельно от браузера?
  • [ ] Что произойдет после правильного решения?
  • [ ] Есть ли дополнительный risk score?
  • [ ] Меняется ли challenge между запросами?
  • [ ] Может ли сервер отклонить уже валидный captcha response?

Последний вопрос обычно говорит о качестве антибот-системы больше, чем сложность самой картинки.

Вывод

После разбора этих систем я бы не выбирал капчу только по сложности challenge.

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

Arkose Labs хорошо увеличивает стоимость решения за счет сложных заданий. Cloudflare Turnstile делает ставку на почти незаметную проверку среды. reCAPTCHA обладает развитым behavioral risk engine.

Но наиболее сложной для современной browser automation выглядит модель xCaptcha, где правильный ответ на капчу — только начало проверки.

Для успешной сессии должны согласоваться:

captcha
+
browser fingerprint
+
device
+
IP
+
behavior
+
TLS
+
HTTP/2

С точки зрения специалиста по обходу именно такие системы создают больше всего работы: недостаточно решить один challenge — приходится воспроизводить целостную и технически непротиворечивую браузерную сессию.