Статья на примере 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 и формирует тексты отклика, но добавляет ещё один слой, который нужно поддерживать при изменениях интерфейса.