Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как обойти PerimeterX (HUMAN)

Катя Пушкаренва

Технический специалист

Как обойти PerimeterX (HUMAN)

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

Скрейпинг на HTTP-запросах или дефолтном Selenium мертв. Архитектура PerimeterX (теперь HUMAN Security) в корне изменила правила игры. Классические WAF работают синхронно: сервер чекает IP, лимиты или User-Agent и заставляет запрос ждать вердикта. PerimeterX действует иначе — асинхронно и вне основного потока (out-of-band).

Система стоит на трех китах:

  • Enforcer — легкий middleware на границе (SDK для NGINX, Node.js, Azure).

  • Sensor — жестко обфусцированный JS-код (тот самый init.js), летящий в браузер.

  • Detector — облачный ML-движок, переваривающий телеметрию.

Enforcer чекает только криптографические токены (например, куки _px3). Если токен валиден — запрос летит на бэкенд без задержек. Если куки нет или она протухла, сервер отдает HTML, но вшивает туда JS-сенсор. В итоге легитимный юзер не видит лагов (нулевая задержка), а бот улетает на тяжелую фоновую проверку.


Слой 1. Сеть и мгновенный дроп: TLS, HTTP/2 и JA4

Скрипты часто ловят отбивку 403 Forbidden еще до загрузки HTML. Причина — DPI (глубокая инспекция пакетов) и анализ сетевых отпечатков прямо на этапе TLS-хэндшейка.

Библиотеки вроде Python requests или клиенты на Go формируют пакет Client Hello (набор шифров, порядок расширений) совершенно не так, как реальный Chrome. Если ваш скрипт шлет заголовок Chrome, но cipher suites совпадают с дефолтным OpenSSL — сессия сразу летит в мусорку. Аналогично анализируются псевдозаголовки HTTP/2.

Сегодня защита шагнула дальше базового JA3: вовсю используются стандарты семейства JA4/JA4H для глубокого профилирования HTTP-клиентов. Отдельный триггер — серверные IP-адреса (дата-центры). Их использование моментально обнуляет trust score. Без трастовых резидентных прокси ловить нечего.


Слой 2. Глубокий пробинг среды: что ищет px.js

Если сетевой фильтр пройден, просыпается JS-сенсор. Проверки на navigator.webdriver — это уровень детского сада. Сенсор пылесосит данные о железе: количество ядер, лимиты памяти, разрешение экрана, каталог системных шрифтов. Он ищет следы серверного окружения, вроде глобального объекта process в Node.js или специфичные переменные эмуляторов.

Новички часто пытаются скрыть следы, полностью отключая отрисовку Canvas. Для PerimeterX это фаталити — отсутствие графического рендеринга практически гарантирует бан. Система ждет стабильный WebGL-отпечаток, который генерится на основе реальных аппаратных особенностей GPU и драйверов. Более того, в 2025–2026 годах PerimeterX начал активно юзать WebAssembly (Wasm) для идентификации истинного движка браузера по скорости специфичных математических вычислений, даже если User-Agent идеально спуфлен.


Слой 3. Физика курсора и HUMAN Challenge

Главная фишка сенсора — непрерывная поведенческая биометрия. Скрипт вешает event listeners на DOM и пассивно пишет всю микродинамику.

Поведение живого человека хаотично: переменное ускорение мыши, микротремор, нелинейные траектории. Боты на базе Puppeteer часто рисуют идеально ровные линии или вообще скипают промежуточные события mousemove. PerimeterX трекает эти смещения (например, свойства movementX и movementY объекта MouseEvent), пакует их в JSON и асинхронно отправляет в облако.

Если ML-движок сомневается, выкатывается HUMAN Challenge — пресловутая капча «Press & Hold». Пока кнопка зажата, сенсор собирает телеметрию высочайшего разрешения (емкостный профиль касания, дрожание курсора), чтобы окончательно удостовериться в наличии живого человека.


Слой 4. Управление стейтом и куки

Вся инфраструктура стейт-менеджмента держится на иерархии криптографически подписанных кук :

Идентификатор Срок жизни Техническая функция
_px / _px2 / _px3 ~ 5.5 мин Основной токен риска: содержит сессию, ID посетителя и trust score.
_pxhd 1 год Серверный трекер: хардварный идентификатор устройства между сессиями.
_pxff_* 1 день Feature-флаги: инструкции для клиента по запуску нужных модулей детекции.
_pxac N/A Access-токен: используется модулем Enforcer для белых списков.
X-PX-AUTHORIZATION Зависит от токена Валидационный заголовок: генерируется мобильными SDK.

Для соответствия GDPR модуль Enforcer умеет анонимизировать IP-адреса до отправки данных в облако (обнуляет последний октет в IPv4 и четыре последних в IPv6). Также в нем есть защита от Account Takeover (ATO): при включении флага px_login_credentials_extraction_enabled система хэширует вводимые логины/пароли и сверяет их с базами утечек для блокировки атак credential stuffing.


Слой 5. Мобильные SDK: перенос логики в натив

При парсинге мобильных аппок (iOS/Android) правила игры меняются. Логика проверок уходит из читаемого JavaScript в скомпилированный ARM-ассемблер.

Когда приложение дергает защищенный API, нативный SDK перехватывает вызов, собирает отпечаток устройства и запрашивает у бэкенда криптографическую задачу. Решение вычисляется локально через C/C++ либы, зашитые в код приложения. Затем SDK добавляет полученный токен в HTTP-заголовок X-PX-AUTHORIZATION. Без него сервер отклонит запрос. Вдобавок используется жесткий SSL-пиннинг на домен perimeterx.net, что делает классический MITM-перехват (например, через Charles Proxy) абсолютно бесполезным.


Стратегии обхода на практике (2026 год)

Легитимное QA-тестирование и авторизованный сбор данных требуют рабочих стратегий обхода:

  • QA и внутреннее тестирование (Белые списки): Никто не поднимает браузерные эмуляторы. Инженеры используют специальные HTTP-заголовки. Передача токена в x-px-access-token или установка bypass_monitor_header: 1 отключает активную блокировку на тестовых эндпоинтах на уровне Enforcer.

  • Гибридный парсинг: Стелс-браузеры (Puppeteer Stealth, Undetected ChromeDriver, SeleniumBase в UC Mode) запускаются ровно один раз — только для прохождения JS-проверок и получения валидных токенов (например, _px3). Затем сессия передается быстрому HTTP-клиенту для потокового скрейпинга до истечения срока жизни токена.

  • Реверс-инжиниринг: Хардкорные специалисты деобфусцируют сенсор init.js, расшифровывают алгоритмы генерации куки и учатся программно синтезировать поведенческую телеметрию (координаты movementX/Y, тайминги), решая задачи напрямую через HTTP без рендеринга страницы.

  • Web Unlockers: В Enterprise-сегменте поддержке собственных инхаус-байпассов предпочитают готовые Scraping API (Scrapfly, ZenRows, ScraperAPI). Такие сервисы «под капотом» менеджат резидентные прокси, ротируют JA4-отпечатки и автоматом решают JS-вызовы.

Итог: идеальный браузерный отпечаток — это мусор, если он не бьется с TLS-отпечатком (JA4) вашего сетевого запроса. Консистентность на всех уровнях стека — это базовое правило выживания при работе с системами класса PerimeterX.