Туториалы по обходу капчи

Как обойти Akamai

Akamai Bot Manager (BMP) защищает крупнейшие платформы (Nike, Amazon, Asos) и является одной из самых сложных систем на рынке. В отличие от классических WAF, он не просто банит по лимитам запросов, а выстраивает комплексную оценку (Trust Score), анализируя все: от криптографического стека на транспортном уровне до микро-флуктуаций движений мыши.

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

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

1. Транспортный уровень: Смерть JA3 и анатомия отпечатков JA4

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

На смену пришел формат JA4, который учитывает эту рандомизацию и глубоко анализирует пакеты ClientHello.
Анализ моделей машинного обучения (XGBoost и CatBoost) на реальных датасетах (JA4DB) показывает, что для антибота наибольший вес имеют всего три ключевых параметра:

  1. ja4_b: Хеш списка поддерживаемых шифров (самый сильный индикатор).
  2. cipher_count: Общее количество заявленных шифров.
  3. ext_count: Количество TLS-расширений.

Дьявол в HTTP/2 и кросс-чекинге:
Даже если скрипт идеально подделывает JA4, Akamai использует связку JA4H_ab — кросс-чекинг консистентности TLS и HTTP-заголовков. Например, если TLS-отпечаток заявляет, что это легитимный десктопный браузер, но в HTTP-запросе отсутствует заголовок Accept-Language, система мгновенно классифицирует соединение как автоматизированное. Кроме того, крайне жестко проверяется порядок фреймов SETTINGS в протоколе HTTP/2 и точная последовательность расширений ClientHello. Базовые библиотеки (например, requests в Python или стандартный curl) обладают специфическими отпечатками, которые сразу выдают бота.

2. Ловушки среды исполнения (sensor_data) и AST-интерпретация

Основная валидация происходит на клиенте. Скрипт Akamai собирает огромный массив данных о браузере (sensor_data) и отправляет его на сервер для генерации токенов _abck и bm_sz. Скрипт защищен многоуровневой динамической обфускацией, сглаживанием потока управления (Control Flow Flattening) и конструкциями JS-Fuck.

Среди десятков проверок браузера (наличие флагов webdriver, переменных Selenium и PhantomJS) выделяются следующие неочевидные капканы:

  • Аппаратный парадокс (WebGL): Akamai жестко отсеивает серверные видеокарты. Для успешной генерации данных обхода необходимо маскировать GPU под потребительские решения с использованием транслятора ANGLE, например: ANGLE (your GPU here Direct3D11 ps_5_0 vs_5_0).
  • Изолированные среды (iframes): Антибот создает скрытые фреймы и применяет трюки, проверяя реакцию среды. Из-за исторического бага в Stealth-плагинах (который приводил к рекурсии) разработчики ботов часто переопределяли сеттер srcdoc, чтобы он игнорировал новые значения. Akamai генерирует случайное число (rndInt), пытается установить его во фрейм и тут же проверяет результат (frame.srcdoc !== rndInt). Если сеттер не сработал — это эмуляция.
  • Проверки целостности (toString): Если попытаться скрыть следы бота, переопределив нативные функции через JS, скрипт вызовет toString(), проверит позиции подстрок и проведет над ними математические операции. Малейшее несовпадение уводит процесс в бесконечный цикл.

Как это обходят (AST Deobfuscation):
Технические специалисты пишут собственные интерпретаторы абстрактного синтаксического дерева (AST) на базе Babel и JSDOM. Это позволяет пошагово выполнять каждый узел скрипта в изолированной среде, перехватывать вызовы toString() и подменять их так, чтобы возвращался оригинальный, неформатированный код скрипта защиты.

3. Математика биометрии: Секрет сглаживания EWMA

Анализ движений мыши (MACT) — одна из самых сложных частей защиты. Простые кривые Безье работают плохо, так как они слишком "математичны". Однако один из популярных генераторов мыши успешно обманывал Akamai около двух лет благодаря одной математической случайности.

Секрет крылся в экспоненциально взвешенном скользящем среднем (EWMA) с коэффициентом λ = 0.955. Алгоритм генерировал ломаные линии (сегменты с постоянной скоростью), но функция EWMA сглаживала их переходы. Это сглаживание чисто случайно генерировало профиль скорости, который визуально и математически казался неотличимым от человеческого.

Асимметричная функция потерь в ML-моделях:
Akamai научились восстанавливать исходный сигнал, реверсируя формулу EWMA, чтобы выявлять отрезки с аномально постоянной скоростью (variance analysis). Для классификации используются деревья градиентного бустинга (например, LightGBM).
Главная инновация защиты здесь — кастомная функция потерь. Чтобы не блокировать реальных покупателей (False Positives), алгоритм жестко штрафуется за ошибку: если модель ошибочно помечает реального человека как бота, базовая ошибка умножается в 100 раз. Это вынуждает нейросеть пропускать сомнительные сессии ради сохранения чистоты пользовательского опыта.

В ответ на это разработчики ботов сегодня применяют ИИ-прескрининг (Machine Learning Pre-screening). Они локально обучают собственные модели на флагах Akamai, генерируют тысячи вариантов движений мыши, и отправляют антиботу только те, которые локальная нейросеть оценила как 100% "человеческие".

4. Архитектурные уязвимости: HTTP Desync и Direct-to-Origin

WAF и системы управления ботами (такие как Akamai Ghost) уязвимы на уровне архитектуры балансировки.

  • HTTP Request Smuggling (Desync): Если фронтенд Akamai и бэкенд (Origin) по-разному парсят границы запросов (например, наличие одновременно Content-Length и Transfer-Encoding), атакующий может "протащить" (smuggle) вредоносный HTTP-запрос внутри легитимного (векторы CL.TE или TE.CL). Akamai Ghost пропускает внешний запрос как безопасный, а бэкенд обрабатывает скрытую нагрузку.
  • Direct-to-Origin: Базовая ошибка конфигурации. Зачастую злоумышленники просто находят реальный IP-адрес сервера в обход Akamai и шлют запросы напрямую. Если бэкенд не использует строгий ACL, криптографическую подпись заголовков или mTLS, защита CDN теряет любой смысл.

5. Операционные лимиты куки _abck и инфраструктура

Генерация идеальной телеметрии — это лишь половина пути. Вторая половина упирается в жесткие серверные лимиты управления токеном _abck:

  • Лимит генерации: Если вы отправляете неверные или "грязные" данные сенсора, Akamai блокирует возможность генерации новых cookie для вашего IP-адреса всего после 10 попыток.
  • Короткая жизнь сессии: Даже валидно сгенерированная кука _abck живет всего около 5 HTTP-запросов. После этого она помечается как подозрительная, и скрипту необходимо снова пересобирать сенсорные данные и обновлять сессию.
  • Инфраструктура: Akamai жестко штрафует (отрицательный Trust Score) соединения из дата-центров (AWS, DigitalOcean и др.). Для успешного обхода критически необходимо использование премиальных ротационных резидентных или мобильных прокси (Residential/Mobile proxies).

Резюме: Request Forging против тяжелых браузеров

Эра использования базового Puppeteer и плагинов вроде playwright-stealth постепенно уходит. Такие инструменты тяжеловесны, оставляют глубокие следы в V8 и протоколах (CDP), и легко детектируются глубоким анализом Akamai.

Индустрия автоматизации переходит на Request Forging. Специалисты деобфусцируют логику сбора sensor_data, запускают вырезанный и модифицированный код внутри легких изолированных сред (Node.js) для генерации токенов, а сами сетевые запросы отправляют через специализированные клиенты (например, на базе Go или Rust), которые математически точно подделывают TLS-рукопожатия (JA4) и HTTP/2 фреймы реальных браузеров.