Как антибот-системы решают, что вы бот
Блокировку принято считать одним событием с одной причиной. Это не так. Коммерческие антибот-системы собирают оценку риска из нескольких независимых слоёв, и браузер управляет лишь частью из них. От того, какой слой вас пометил, зависит, что вам нужно: другой прокси, другой отпечаток или просто сбавить темп.
Примерно в том порядке, в каком с ними встречается запрос:
1. Репутация сети
Ещё до того, как выполнится первый байт вашей страницы, у вашего IP уже есть репутация. Диапазоны дата-центров помечены как таковые и определяются тривиально. Домашние и мобильные адреса выглядят лучше, но домашний IP, который уже сожгли сотни скраперов, хуже чистого адреса дата-центра.
В расчёт идут ASN, принадлежность диапазона известному VPN- или прокси-провайдеру и недавняя история конкретного адреса. Этот слой работает до JavaScript - вот почему безупречный отпечаток на сожжённом IP всё равно не проходит.
2. Отпечаток TLS и HTTP
В вашем TLS client hello есть порядок наборов шифров, расширений и эллиптических кривых, и он различается между реализациями. JA3 и JA4 хешируют именно это. HTTP/2 добавляет своё: настройки фреймов, порядок заголовков, приоритеты.
Поэтому HTTP-клиент на Python или Node со скопированным user agent от Chrome ловится мгновенно. Заголовок говорит «Chrome», рукопожатие говорит другое, и противоречие видно ещё до того, как отдан хоть какой-то контент. У настоящего браузера такой проблемы нет, и это одна из недооценённых причин им пользоваться.
3. Отпечаток браузера и следы автоматизации
Теперь выполняется JavaScript. Две категории:
Артефакты автоматизации. navigator.webdriver, следы CDP, отсутствующий или неправильный объект chrome, состояния разрешений, противоречащие API уведомлений, неправдоподобный массив плагинов. Stealth-патчи целятся в этот список, поэтому список и продолжает расти.
Согласованность. Важнее и обсуждается реже. Согласуется ли user agent с navigator.platform и платформенным client hint? Совпадает ли часовой пояс с географией IP? Те ли это шрифты, которые поставляются с этой ОС? Существует ли вообще видеокарта с таким рендерером WebGL, и бывает ли она на заявленной ОС? Одно противоречие здесь весит больше дюжины обычных значений.
И временной вопрос, который никто не проверяет: тот же ли хеш canvas, что и в прошлый визит? Настоящее железо детерминировано. Вернувшийся пользователь, у которого за ночь сменилась видеокарта, - сигнал сильнее большинства признаков, видимых на одной странице.
4. Поведение
Траектории мыши, скорость прокрутки, тайминги нажатий, время задержки, двигались ли вы перед кликом, попадаете ли ровно в центр каждой кнопки. Люди шумны и медлительны, скрипты точны и быстры.
Kasada и DataDome вдобавок присылают задачи на доказательство работы и проверку целостности: вычисление, которое клиент обязан выполнить правильно, в настоящем движке и за правдоподобное время. Ответ 429 от Kasada часто именно это, а не лимит частоты - вы не решили задачу.
Этот слой целиком на вас. Ни один браузер не заставит скрипт вести себя как человек.
5. История и контекст
Самый старый и самый решающий слой, и именно его вся отрасль недооценивает. Что этот аккаунт делал? Сколько ему лет? Появился ли он вчера из Франкфурта, а сегодня действует из Сингапура? Не делят ли сто аккаунтов один способ оплаты или один резервный адрес почты?
Можно быть безупречным на слоях с первого по четвёртый и всё равно получить санкции на пятом, потому что доказательство - это собственная история аккаунта.
Что из этого следует на практике
Слои независимы, поэтому сначала диагноз, потом починка:
- Блокировка до отрисовки страницы, JavaScript не выполнялся: слой 1 или 2. Нужен прокси получше. Смена отпечатка не поможет.
- Страница загружается, потом появляется испытание: слой 3 или 4. Сначала проверьте согласованность, затем сбавьте темп.
- Всё проходит, но аккаунт всё равно получает санкции: слой 5. Это не чинится инструментом. Это чинится временем и правдоподобной историей.
Антидетект-браузер закрывает слои 2 и 3 и помогает со слоем 1, привязывая прокси к личности, чтобы часовой пояс и локаль следовали за выходным IP. Со слоями 4 и 5 он не делает ничего, и любой вендор, намекающий на обратное, включая нас, вам продаёт.
Проверяйте, а не предполагайте
Публичные детекторы позволяют дёшево проверить слои 2 и 3: whoer.net для согласованности IP и часового пояса, CreepJS для глубокой проверки. Ни один из них не предскажет решение конкретного вендора, поэтому заканчивайте проверкой на той стене, которую вам действительно надо перелезть.
Наш чек-лист согласованности подробно разбирает слой 3, и бесплатного тарифа хватает, чтобы прогнать его целиком.
Попробуйте на бесплатном тарифе.
Неограниченное число локальных профилей, без карты. Проверьте результат детекторами сами.