Прогон детекторов, август 2026 - одна из четырёх проверок нас заблокировала
Это первый выпуск ежемесячной серии. Смысл публикации в том, что она датирована и повторяема, а не в том, что она лестна. Одна из четырёх проверок нас заблокировала, и она стоит в таблице наравне с остальными.
Условия
| Прогон начат | 2026-08-02 00:18 UTC |
| Прогон завершён | 2026-08-02 00:21 UTC |
| Ядро | Chrome 150 |
| Профиль | только что создан, настройки по умолчанию, ничего не подкручено |
| Прокси | управляемый резидентный, выход 149.52.102.108, Хьюстон, США |
| Хост | macOS, с интерфейсом |
Профиль был создан и использован один раз. Без прогрева, без истории, без подстройки под сайты. Это намеренно самый слабый реалистичный случай.
Что предъявлял профиль
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/150.0.0.0
platform Win32
languages en-US, en
timezone America/Chicago
webdriver false
hardware 8 ядер, 16 ГБ, 1536x864
WebGL vendor Google Inc. (Intel)
WebGL render ANGLE (Intel, Intel(R) UHD Graphics 620 Direct3D11 vs_5_0 ps_5_0, D3D11-27.20.100.9316)
Прокси выходит в Хьюстоне, и браузер сообщил America/Chicago. Эта привязка автоматическая, и именно её чаще всего портят вручную.
Результаты
| Проверка | Результат | Подробности |
|---|---|---|
| whoer.net | Пройдено | Маскировка 100%. Прокси: нет. Анонимайзер: нет. Чёрный список: нет. ОС прочитана как Win10.0, браузер как Chrome 150.0 |
| CreepJS | Без результата | Страница загрузилась (HTTP 200) и выдала идентификатор отпечатка, но наша обвязка не смогла прочитать поля с оценками. Наша вина, а не результат |
| DataDome (leboncoin.fr) | Заблокировано | HTTP 403, отдана капча, тело 1206 байт. До объявлений не дошли |
| Kasada (footlocker.com) | Пройдено | HTTP 200, отрисована настоящая витрина, тело 1,59 МБ, без промежуточной страницы |
Очевидный вопрос к этой таблице - сколько на тех же проверках набирает бесплатная альтернатива. Мы измерили это позже в том же месяце, на тех же целях и через тот же прокси; результат в разделе «Базовая линия» внизу страницы.
Побочное наблюдение: STUN не разрешился
Не входит в четыре проверки, но повторялось в логе ядра на протяжении прогона и стоит записи:
Failed to resolve address for stun.l.google.com., errorcode: -105
Разрешение STUN через этот прокси не работало всю сессию, поэтому WebRTC не собрал ни одного server-reflexive (srflx) кандидата. Это не утечка, которой обычно опасаются, но и не чистое прохождение. Браузер, вообще не выдающий кандидата srflx, - собственный небольшой сигнал, и мы его записываем, а не подшиваем в графу «утечек WebRTC не обнаружено».
Мы не проектировали прогон под измерение этого и не изучали, как часто такое случается, так что относитесь к этому как к наблюдению, а не к результату. Оно в списке на сентябрьский прогон.
Уточнение от 2026-08-13: это наблюдение не пережило измерения. Обвязка
теперь проверяет WebRTC намеренно, а не вычитывает лог ядра, и во всех прогонах
с тех пор браузер собирал кандидата srflx, и это был адрес выхода прокси, а
собственный адрес хоста не появлялся нигде. Ошибка резолвера в логе осталась.
Чего бы она ни стоила, это не отсутствие кандидата, так что абзац выше описывает
одну сессию, а не этот прокси вообще.
О провале с DataDome
Перечитайте эту строку, она здесь самая интересная.
leboncoin.fr вернул 403 с капчей. Профиль не прошёл. Предыдущий снимок этой же цели, сделанный неделями раньше и на момент написания всё ещё висевший на нашей главной странице, показывал прохождение. Сегодня - нет.
Мы пошли и измерили это, а не остались при догадке. Перепрогон внизу этой страницы провёл двенадцать адресов выхода через ту же цель 2026-08-13, наше ядро и Playwright со stealth-плагином в паре внутри каждого соседства адресов: адрес выхода решил пять раундов из шести, браузер - максимум один. Общий ответ такой: 403 здесь - сначала вопрос об адресе и только потом вопрос о браузере.
Чего это не делает - так это не объясняет задним числом именно этот прогон.
Другой адрес из того же блока 149.52.* прошёл одиннадцатью днями позже, так что
назвать сожжённым тот адрес, которым мы пользовались 2026-08-02, мы не можем.
Замечания ниже - это то, что мы честно могли сказать тогда, до всяких измерений,
и они остаются как были:
- Один прогон - одна точка данных. Тот же профиль, тот же прокси, часом позже - может отличаться. Именно поэтому постоянный значок «необнаружимо» нечестен в любую сторону.
- Самый вероятный фактор - прокси. Этот выход - общий резидентный адрес. DataDome сильно учитывает репутацию IP, а историю этого адреса перед прогоном мы не проверяли. Сожжённый выход проваливается до того, как отпечаток вообще будет оценён. (Именно это подтвердил перепрогон.)
- Совершенно новый профиль с нулевой историей - самый слабый случай. Реальное использование несёт накопленные куки и поведение, которых у профиля первого визита нет.
- Может быть, у них просто улучшился детект. Такое бывает, и делать вид, что нет, обесценило бы все будущие отчёты.
Сказать мы можем нечто более узкое и более полезное: слой отпечатка выглядел согласованным (whoer 100%, прокси не определён, признаков автоматизации нет), и одна коммерческая стена его пропустила, а другая нет.
Провал с CreepJS и поправка к тому, что мы написали здесь сначала
CreepJS загрузился и вернул идентификатор отпечатка, то есть браузер до него дошёл. Наш скрипт извлечения не смог вытащить поля с оценками из отрисованной страницы, поэтому чисел для публикации у нас нет, и оценивать их на глаз мы не будем.
Первая версия этой страницы называла это багом обвязки и обещала починить к сентябрьскому прогону. Это было слишком самоуверенно, и вот поправка. Мы попробовали. Извлечение действительно было неверным, CreepJS отрисовывает свои оценки в shadow root, а не в тело документа, но починка этого вскрыла проблему крупнее: на нашем тестовом хосте CreepJS стабильно роняет процесс отрисовки вместе с собой, а когда тот умирает, умирают и отладочное соединение, и весь прогон. Девять попыток, несколько разных видов отказа, чисел нет.
Теперь CreepJS запускается отдельным изолированным вызовом, чтобы при падении он стоил только себя, а не всех проверок после него. Удастся ли вообще снять его оценки в сентябре - честно открытый вопрос. Если не удастся, эта строка снова так и скажет, а не исчезнет тихо.
Методика, чтобы вы могли повторить
- Создайте профиль в приложении или через
openProfile(). Ничего не меняйте. - Привяжите резидентный прокси. Часовой пояс, локаль и геолокация последуют за выходным IP автоматически.
- Откройте в одной сессии: whoer.net, abrahamjuliot.github.io/creepjs, leboncoin.fr, footlocker.com.
- Запишите HTTP-статус и результат на странице для каждой цели.
Все цели публичны, и ни одна не требует нашего содействия. Бесплатный тариф - это неограниченное число локальных профилей без карты, так что повторить это самому стоит одного вечера.
Если ваш результат отличается от нашего, не доверять стоит нашему: мы прогнали один профиль через один прокси с одной машины.
Что мы изменили из-за этого прогона
На нашей главной странице висит скриншот DataDome из более раннего снимка, показывающий прохождение, и этот прогон ему противоречил, поэтому мы пометили скриншот как устаревший и поставили ссылку сюда.
Позже мы вернули подпись к обычному «пройдено», и это заслуживает объяснения, а не тихой правки. Перепрогон внизу страницы показал, что адрес выхода решает пять раундов из шести: один и тот же адрес блокировал оба браузера, а другой пропускал оба. При таком прочтении один 403 с одного адреса не доказывает, что снимок был неверным, а пометка «устарело» подразумевала уверенность в обратную сторону, которой у нас тоже не было. Скриншот по-прежнему показывает один удачный день и по-прежнему ведёт сюда.
Воспроизведено позже в тот же день
Мы повторили прогон тем же профилем и прокси по тем же целям спустя несколько часов. whoer снова показал 100% маскировки, а leboncoin.fr во второй раз вернул 403 с капчей. Дважды воспроизведённая блокировка в один день с одним и тем же выходным IP - слабое свидетельство о DataDome вообще и разумное свидетельство того, что этот конкретный результат не был случайностью.
Повторный прогон не завершился: цель с Kasada, отработавшая в первом прогоне, во втором уронила процесс. Эти страницы тяжёлые, а наша обвязка к такому пока не устойчива. Записано здесь потому, что отчёт, упоминающий только удавшиеся прогоны, - ровно то, чего мы стараемся не публиковать.
Базовая линия: playwright плюс stealth-плагин
Сравнение, которое стоит публиковать, - не с другим платным вендором. Это Playwright со stealth-плагином: он бесплатный, и именно с ним нас чаще всего сравнивают. Поэтому мы прогнали его через те же четыре проверки.
Эта часть измерена 2026-08-13, а не 2026-08-02, поэтому с таблицей выше она не сопоставима. Она сопоставима сама с собой.
Обе стороны работали на одном хосте, с разницей в минуты, через один и тот же резидентный выход. Ниже проверки без состояния; DataDome потребовал другой схемы и вынесен в отдельный раздел за ними.
| AntiBrow | Playwright + stealth-плагин | |
|---|---|---|
| Движок | наше ядро, Chrome 151 | Chromium из поставки Playwright, Chrome 148 |
| Где подменяется отпечаток | в движке | из внедрённого JavaScript |
| Маскировка whoer.net | 90% | 90% |
| ОС по версии whoer | Win10.0, совпадает с UA | Mac OS X, то есть хост |
| Прокси замечен whoer | нет | нет |
| Kasada (footlocker.com) | Пройдено, 200, витрина отрисована | Пройдено, 200, витрина отрисована |
Кандидат WebRTC srflx |
адрес выхода | 202.66.x.x, собственный адрес хоста |
| Часовой пояс против выхода | America/Los_Angeles, совпадает |
Asia/Shanghai, пояс хоста |
navigator.languages |
en-US, en |
zh-CN, zh, языки хоста |
Главная цифра whoer их не развела, и Kasada пропустил обеих. Если вы пришли за графиком, где платный продукт проходит, а бесплатный падает, этот прогон не про то.
Разница - в нижних трёх строках, и это не оценка, а связность. Базовая линия
объявляла адрес выхода в Лас-Вегасе, сообщая при этом часовой пояс машины в
Азии, язык этой машины и WebRTC-кандидата с её настоящим адресом. Любого из
этого хватает на один запрос со стороны сайта, которому не всё равно. Плагин
свою работу сделал: он прячет следы автоматизации, webdriver был false, и
whoer прочитал браузер как обычный Chrome на macOS.
Одна деталь говорит за всё остальное. Whoer отдал базовой линии китайскую
версию страницы, потому что Accept-Language был хостовым. Мы это заметили
потому, что разбор оценки, ищущий английскую подпись, вернул пустоту.
Что это показывает, а что нет:
- Каждый из этих трёх пробелов чинится руками. Playwright принимает
timezoneIdиlocale, WebRTC закрывается ключом политики. Вопрос никогда не был в том, возможно ли это, а в том, кто поддерживает этот список от версии к версии Chromium и дописывает в него следующий пункт. - Это один прогон, один выход, один хост. Эти строки - свойства двух браузеров, а не адреса, поэтому одного выхода для них достаточно, а для DataDome было недостаточно.
- Базовой линии намеренно не помогали. Никаких подмен пояса и локали. Выдать ей нашу же обвязку прокси значило бы измерить эту обвязку дважды.
Точный состав: playwright-extra с puppeteer-extra-plugin-stealth, текущие
версии, конфигурация по умолчанию, с окном, тот же резидентный выход.
DataDome потребовал другого эксперимента, и первый был неверным
DataDome имеет состояние по адресу выхода, поэтому это единственная проверка, которую нельзя прогнать так же, как всё остальное на этой странице. В первой попытке обе стороны шли через один выход с разницей в несколько минут, обеих заблокировало, и мы едва не опубликовали это как ничью. Это не результат: второй посетитель с адреса, только что использованного на той же цели, находится не в том же положении, что первый, а общий адрес означает и общую репутацию, так что один плохой адрес блокирует обе стороны и выглядит как совпадение.
Переделка, один раунд на соседство адресов:
- у каждого визита свой адрес выхода, повторно не используемый ни для чего,
- обе стороны в раунде берут разные адреса из одной /16, так что соседство зафиксировано, а не разыгрывается монеткой,
- сторона, идущая первой, чередуется по раундам,
- каждый визит ядра идёт на свежем профиле: один прошлый визит оставляет куки, из-за которых следующий становится возвращающимся посетителем.
Шесть раундов, двенадцать адресов, leboncoin.fr:
| Блок адресов | AntiBrow | Playwright + stealth |
|---|---|---|
149.40.* |
Пройдено | Пройдено |
149.87.* |
Пройдено | Пройдено |
149.52.* |
Пройдено | Пройдено |
149.88.* |
Пройдено | Пройдено |
148.135.* |
Заблокировано | Заблокировано |
192.200.* |
Пройдено | Заблокировано |
| 5 / 6 | 4 / 6 |
Адрес решил пять раундов из шести, браузер - максимум один. Пять пар совпали между собой и разошлись с соседними блоками. Одна пара разошлась, в нашу пользу. Одно расхождение из шести не доказывает ничего; опубликуй мы 5/6 против 4/6 как победу, следующий раунд мог бы её перевернуть, и цитировать нас на этом было бы заслуженно.
Что здесь действительно установлено - то, что стоит знать до того, как потратить
день на отладку отпечатка: на этой проверке адрес выхода перевесил всё
остальное, что мы меняли. 403 с капчей - сначала вопрос об адресе и лишь
потом вопрос о браузере.
Два ограничения. Это только главная страница, а на входе, поиске и оформлении заказа политика строже. И базовая линия здесь - Playwright со stealth-плагином, который как раз прячет следы автоматизации; неисправленная автоматизация - противник слабее и так не выступила бы.
О нашем собственном числе
Наша сторона набрала на whoer 90% 2026-08-13 и 100% 2026-08-02. Продукт тот же, адрес выхода разный, и базовая линия через тот же выход в тот же день набрала те же 90%. Мы не знаем, за что именно whoer снял балл, и не будем гадать в выгодную нам сторону. Ровно поэтому серия печатает адрес выхода рядом с оценкой.
Ядро между двумя прогонами тоже разное, Chrome 150 в августе и Chrome 151 в паре с базовой линией, потому что новые профили привязываются к самой свежей опубликованной сборке, а не к замороженной.
Следующий прогон: 2026-09-01. Та же методика, теперь с базовой линией рядом. CreepJS изолирован, чтобы не стоить остальным проверкам, и без обещаний, что он выдаст число.
Что такое профиль на самом деле или проверьте свой по тому же списку.
Как ссылаться на этот прогон
Результаты на этой странице под CC BY 4.0. Указание авторства - условие лицензии, а ссылка - обычный способ его дать. Готовый фрагмент ниже.
AntiBrow, “Detection run, August 2026,” 2026-08-02.
<a href="https://antibrow.com/reports/detection-2026-08">antibrow.com/reports/detection-2026-08</a>
(CC BY 4.0) AntiBrow. Detection run, August 2026 (2026-08-02). https://antibrow.com/reports/detection-2026-08. CC BY 4.0. @misc{antibrow_2026_08,
title = {Detection run, August 2026},
author = {AntiBrow},
year = {2026}, month = {8},
url = {https://antibrow.com/reports/detection-2026-08},
note = {CC BY 4.0}
} Оба файла отдаются с Access-Control-Allow-Origin: *, поэтому их можно запрашивать прямо со своей страницы.
Попробуйте на бесплатном тарифе.
Неограниченное число локальных профилей, без карты. Проверьте результат детекторами сами.