Автоматизация рутины на hh.ru: как мы учили Headless Chrome притворяться живым человеком (RPA против антифрода)

Статья на примере hh.ru объясняет, почему в 2026 году простые скрипты для отклика на вакансии быстро упираются в защиту, и описывает архитектуру обхода таких барьеров. Главная идея — RPA с «живым» браузером, имитацией поведения и LLM.

  • Для крупных job-board платформ в 2026 году описаны WAF, анализ TLS-отпечатков, поведенческая биометрия и «теневые баны», из-за которых HTTP-скрипты живут недолго.
  • Защита сравнивает TLS Fingerprint (JA3/JA3S): порядок шифров у клиентов Python (requests, aiohttp, httpx) отличается от Chrome/Safari, что приводит к 403, капче или блокировке.
  • Для headless-режима перечислены JS-признаки бота: navigator.webdriver, WebGL-вендоры вроде Google SwiftShader/VMware, отсутствие navigator.plugins и «дефолтное» окно 800x600.
  • Предложенное решение включает кастомные сборки Chromium с вырезанными флагами автоматизации и жёсткую привязку профиля: каждому воркеру — свой fingerprint.
  • Для снижения банов описана Human Mimicry: движение курсора по кубическим кривым Безье с шумом, скролл, паузы Random Sleep 3–12 секунд, иногда выделение текста перед кликом.
  • Архитектура: Core на Python/FastAPI с PostgreSQL, Orchestrator с Redis-очередью и лимитом до 20 откликов в сутки на аккаунт, Browser Nodes в Docker с Playwright (до 1 ГБ RAM на браузер), LLM (self-hosted Llama или OpenAI API) для разбора DOM в JSON и генерации сопроводительного письма.

Почему это важно: Материал иллюстрирует гонку «Red Team vs Blue Team»: на каждое улучшение скрипта платформа отвечает новыми сигналами детекта. Связка TLS-отпечатков и поведенческой биометрии показывает, что защита не сводится к одному «флажку». На практике это часто означает рост порога входа и переход от «скрипта на вечер» к поддерживаемой системе.

На что обратить внимание: В описанной схеме устойчивость держится на нескольких допущениях: уникальный цифровой слепок воркера, резидентские прокси и кастомная сборка Chromium. Отдельно отмечается лимит по числу откликов в сутки на аккаунт как способ не создавать поведенческие аномалии на бэкенде платформы. Роль LLM здесь двойная: она заменяет хрупкие селекторы при разборе DOM и формирует тексты отклика, но добавляет ещё один слой, который нужно поддерживать при изменениях интерфейса.

Коротко

  • История про hh.ru — пример того, что автоматизация «простого клика» упирается не в парсинг, а в антифрод и стоимость поддержки решения.
  • Для подобных задач обычно важно понимать, где срабатывает защита: на сервере, в клиентском JS или на уровне поведения — это меняет архитектуру.
  • Когда речь о headless-браузерах, «цифровой слепок» становится активом: его стабилизация и воспроизводимость важнее разовых обходов.
  • В статье показан паттерн «оркестратор + воркеры браузера»: он помогает масштабировать тяжёлые сессии и снижать риск аномалий на аккаунте.
  • LLM в таком контуре часто используют как слой адаптации к редизайнам (разбор DOM и тексты откликов): это уменьшает ломкость, но добавляет сложность.

FAQ

Зачем эта статья важна, если она не про поиск работы как таковой, а про техническую автоматизацию откликов на крупной платформе?

Она показывает, какие классы защит ломают простые скрипты и почему авторы переходят к RPA-архитектуре с имитацией поведения и LLM.

Почему авторы считают, что один только requests с подстановкой User-Agent уже не подходит для hh.ru и похожих job-board платформ?

Потому что защита анализирует TLS-отпечатки (JA3/JA3S) и быстро приводит к 403, капче или блокировке, а для динамических действий нужен браузер.

Какие признаки headless-браузера в статье названы типичными и почему их достаточно, чтобы детектить бота на стороне клиентского JavaScript?

Упоминаются navigator.webdriver, WebGL-вендоры вроде Google SwiftShader/VMware, отсутствие navigator.plugins и «дефолтные» размеры окна. Эти сигналы видны в JS и помогают отличать автоматизацию.

Как именно LLM используется в описанной системе и какие задачи она берёт на себя помимо генерации письма-отклика на вакансию?

Модель применяют для разбора DOM: ей передают фрагмент дерева и просят вернуть JSON с описанием вакансии, чтобы меньше зависеть от CSS-селекторов. Также она генерирует сопроводительное письмо, опираясь на текст вакансии.

Читайте также

  1. Как тимлид заменил десятки вкладок на файловую систему и Claude Code
  2. Как научить LLM исправлять код без лишних изменений
  3. LLM-агент для поиска свободных доменов: автоматизация подбора
  4. Динамический ресайзинг изображений (Image Previewer)
  5. От хаоса к системе: как выстроить процесс Discovery (часть 1)
Ключевые инсайты из новости (по версии ChatGPT)
  • Почему User-Agent больше не спасает HTTP-автоматизацию: На защищённых платформах имитация браузера через подстановку User-Agent перестаёт работать, потому что защита смотрит глубже заголовков. Отдельный класс сигналов — сетевые и TLS-характеристики клиента, по которым Python-библиотеки заметно отличаются от реальных браузеров.
    [Антифрод и безопасность]
Для получения полного доступа оформите подписку PubMag PRO.
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Инсайты автоматически генерируются с помощью искусственного интеллекта на основе текста статьи.
← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!