Антидетект-браузер звучит как что-то из серой зоны интернета. Часто так и есть. Его используют для арбитража, SMM, тестирования, парсинга, работы с несколькими кабинетами, иногда для откровенно грязных схем. Но сама идея интереснее, чем рекламные лендинги таких сервисов.
Браузер давно перестал быть просто окном в сайт. Для сайта это датчик. Он отдаёт версию движка, список возможностей, особенности рендера, язык, часовой пояс, размеры экрана, поведение WebGL, Canvas, AudioContext, WebRTC, заголовки HTTP, TLS-отпечаток, storage, cookies, историю сессии, косвенные признаки железа и другие данные, которые я уже разбирал в статье о Fingerprinting. Часть данных нужна для нормальной работы веба. Часть для трекинга.
Антидетект-браузер пытается сделать вид, что перед сайтом другой человек с другим устройством. Не один браузер с двадцатью аккаунтами, а двадцать отдельных браузеров, каждый со своей маленькой биографией.
Сайт узнаёт нас не только по cookies
Cookies давно стали слишком очевидной штукой. Их можно удалить, заблокировать, изолировать по контейнерам. Поэтому сайты и антифрод-системы смотрят шире.
FingerprintJS описывает браузерный fingerprint как идентификатор, который собирается из атрибутов браузера и устройства. В отличие от cookies и localStorage, такой отпечаток может переживать приватный режим и очистку данных браузера, потому что сайт снова собирает те же признаки при следующем заходе.
Самый простой пример — navigator.userAgent. Браузер говорит: я Chrome на Windows. Раньше этого было много. Сейчас мало.
Сайт обычно спрашивает:
navigator.userAgent navigator.language navigator.hardwareConcurrency navigator.deviceMemory screen.width screen.height Intl.DateTimeFormat().resolvedOptions().timeZone
Это самый простой слой. Дальше идут признаки, которые сложнее подделать аккуратно.
Canvas fingerprinting заставляет браузер нарисовать скрытый текст или фигуру, потом сайт читает пиксели назад. Микроразличия зависят от шрифтов, сглаживания, ОС, видеокарты, драйвера и реализации графики в браузере. Обзор Fingerprint.com относит Canvas, WebGL, media devices, TLS, fonts и audio к основным техникам browser fingerprinting.
WebGL делает похожую вещь, но через графический стек. Сайт может получить renderer, vendor, список расширений, точность вычислений, поведение шейдеров. AudioContext даёт другой канал: браузер прогоняет аудиограф, на выходе возникают небольшие численные отличия. Их можно хешировать.
Один параметр ничего не доказывает. Двадцать параметров уже дают форму. Пятьдесят параметров дают почти паспорт.
Почему мультиаккаунтинг палится
Берём обычного пользователя. Он создаёт пять аккаунтов на одной платформе. Cookies разные. Почта разная. Прокси разные.
Но браузер тот же.
У всех аккаунтов как минимум совпадают следующие данные: Canvas, WebGL, AudioContext, набор шрифтов, timezone, странный размер окна, поведение Intl, Math, Error.stack, permissions API. На сетевом уровне виден один и тот же TLS fingerprint. HTTP-заголовки идут в одном порядке. Поведение вкладок и мыши похоже.
Антифрод система однозначно не скажет, что все эти аккаунты это один человек. Ему достаточно сказать: «эти аккаунты подозрительно связаны», понизит им фрод рейтинг. А дальше платформа может порезать охваты, отправить на проверку, попросить телефон, паспорт, селфи, банковскую карту, пройти каптчу. Или просто забанить пачку аккаунтов.
С этого момента появляется понимание, для чего же именно нужен антидетект браузер - он нужен не для того, чтобы сделать пользователя невидимым. Он создаёт несколько правдоподобных сред. У каждой среды свой отпечаток, своё хранилище, своя история, свои cookies, свои параметры браузера. Идея простая: если сайт склеивает аккаунты по совпадающим признакам, надо убрать совпадения.
Но убирать совпадения нужно правильно. Ведь если рандомизировать всё подряд, браузер начинает выглядеть хуже обычного и тем самым только палится.

Почему простая подмена ломается
Допустим, мы меняем User-Agent на macOS Safari.
Проблема: остальной браузер всё ещё Chrome на Windows.
Сайт видит Safari в строке UA, но WebGL отдаёт Direct3D через ANGLE. Шрифты похожи на Windows. Поведение scrollbars похоже на Windows. navigator.platform говорит одно, media capabilities намекают на другое, TLS похож на Chromium, заголовки похожи на Chromium. Получается не MacBook. Получается мутант.
CreepJS как раз хорош тем, что ловит такие несостыковки. Автор проекта пишет, что цель CreepJS — показать слабые места и privacy leaks в современных anti-fingerprinting расширениях и браузерах.
Если вы откроете этот сайт на антидетект браузере и на обычном браузере, то вы заметите как много разных строчек поменялось. А самое главное, что все они держат согласованность, что вызывает больше доверия у антифрод системы.
Если профиль говорит «Windows 10 + Chrome», то рядом должны лечь:
Windows-шрифты и Windows-логика рендера;
правдоподобный WebGL renderer;
нормальный набор MIME/types и codecs;
язык, регион, timezone, IP-география;
размеры экрана и device scale factor;
поведение permissions, media devices, battery, touch;
HTTP-заголовки и TLS fingerprint, похожие на выбранный браузер.
Для понимания достаточно: сайт смотрит на граф признаков, антидетект пытается сделать этот граф похожим на обычное устройство.
Где тут «реально работает»
Работает там, где антифрод слабее модели профиля.
Многие системы не могут проводить тяжёлый анализ на каждом пользователе. Им нужно быстро принять решение: дать зайти, показать капчу, попросить 2FA, заблокировать, отправить на ручную проверку. У них есть бюджет по CPU, latency, false positive. Нельзя банить всех пользователей с нестандартной системой, потому что нормальные люди тоже бывают странными.
У кого-то старый ноутбук на Linux. У кого-то Firefox с настройками приватности и корпоративный прокси. У кого-то браузер в виртуалке со сломанными шрифтами.
Антидетект живёт в этой серой зоне. Он не обязан быть идеальным. Ему достаточно попасть в диапазон «похоже на реального пользователя, нет сильных противоречий, нет явной связи с другими профилями».
W3C в своём документе по fingerprinting прямо делит меры защиты на уменьшение поверхности отпечатка, увеличение anonymity set и обнаруживаемость fingerprinting. Идея anonymity set тут особенно важна: чем больше пользователей выглядят одинаково или достаточно похоже, тем сложнее выделить одного конкретного человека.
Tor Browser идёт именно по этому пути. Он пытается сделать пользователей похожими друг на друга. Но об этом я тоже уже писал в статье про браузер Tor.
Антидетект обычно идёт другим путём. Он не пытается сделать всех одинаковыми. Он делает много разных профилей. Каждый профиль должен выглядеть как отдельное правдоподобное устройство.
Изоляция профиля — половина дела
Если говорить грубо, антидетект-браузер состоит из двух частей: подмена отпечатка и изоляция состояния.
Изоляция проще для понимания. У каждого профиля свои cookies, localStorage, IndexedDB, cache, service workers, history, permissions, saved logins. Один аккаунт не должен случайно потянуть данные другого.
Обычный Chrome тоже умеет в профили. Firefox умеет в контейнеры. Но антидетект-браузеры делают это центральной функцией: профиль — это отдельная рабочая среда, которую можно запускать, закрывать, переносить, синхронизировать, привязывать к прокси, комментировать, шарить внутри команды.
Для мультиаккаунтинга это критично. Без изоляции можно идеально подделать WebGL и всё равно засветить связь через storage или service worker. Один лишний общий cookie и вся аккуратная маскировка превращается в декорацию.
Тут есть неприятный момент. Чем больше в профиле «жизни», тем он естественнее. Пустой профиль с нулевой историей, свежими cookies и первым входом через подозрительный IP выглядит хуже, чем профиль, у которого есть стабильная сессия и предсказуемое поведение. Антифрод любит историю. Поэтому мультиаккаунтинг редко держится только на технике браузера. Там почти всегда есть прогрев, поведенческие шаблоны, лимиты действий, репутация IP, платёжные следы.
Про это обычно не любят говорить в рекламных описаниях антидетектов. Там продают кнопку «создать профиль». В реальности кнопка создаёт только поверхностный слой.
Подмена API: где браузер начинает врать
Самый очевидный путь — научить браузер врать через JavaScript API.
Сайт спрашивает navigator.hardwareConcurrency, а получает не реальное число потоков CPU, а число из профиля. Сайт читает Intl.DateTimeFormat().resolvedOptions().timeZone, а видит часовой пояс, который соответствует прокси. Сайт рисует скрытую картинку через Canvas, а на выходе получает отпечаток не реального устройства, а заранее подготовленный результат.
Кажется, что это отличный вариант, но сайт может проверять не только ответ. Он может проверять поведение браузера вокруг этого ответа.
Вот в чём подвох.
У настоящего браузерного API есть «почерк». Свойства лежат в ожидаемых местах. У них нормальные дескрипторы. Ошибки дают привычный stack trace. Значения совпадают между основной страницей, iframe и worker’ом там, где они должны совпадать. Canvas ведёт себя стабильно. WebGL не спорит с платформой. Timezone не конфликтует с языком, IP и локалью.
Плохой антидетект часто ломается не на одном большом проколе, а на мелких швах.
В основной странице он показывает одно число потоков CPU, а в worker’е — другое. В navigator значение подменили, а в соседнем API забыли. Функция вроде бы возвращает правильный результат, но её toString() выглядит не как у нативной функции. Свойство есть, но его дескриптор отличается от обычного Chrome. Canvas каждый раз даёт новый шум, хотя реальный браузер при одинаковом рисунке обычно возвращает один и тот же результат.
Сайт не обязан знать настоящее устройство. Ему достаточно увидеть, что перед ним среда, собранная руками.
CreepJS полезен именно этим. Он показывает не только сами значения, но и противоречия между ними. Не просто «какой у тебя Canvas», а «похож ли этот Canvas на остальную систему». Не просто «какой у тебя браузер», а «ведёт ли он себя как этот браузер в разных контекстах».
Поэтому нормальная подмена должна быть глубокой и согласованной.
Если антидетект меняет часовой пояс, он должен думать о языке, регионе, IP, формате дат и поведении Intl. Если меняет Canvas, результат должен быть стабильным внутри профиля. Если меняет WebGL, он не должен конфликтовать с ОС и браузером. Если меняет свойства navigator, те же значения должны аккуратно проявляться в iframe, worker’ах и других местах, куда сайт может заглянуть.
Тут появляется главный конфликт: чем сильнее браузер скрывает реальность, тем выше риск сломать обычный сайт.
Антидетекту приходится балансировать. Если он ничего не меняет, профили склеиваются. Если меняет слишком грубо, сайт видит искусственную среду. Хороший профиль находится между этими крайностями: он достаточно отличается от других профилей, но при этом остаётся похожим на обычный браузер обычного человека.
Почему сетевой слой мешает
Многие думают: поставил прокси — получил другую личность. Нет.
IP — это только один слой. Он должен совпадать с остальными признаками. Если профиль говорит «Париж», timezone стоит Москва, язык браузера русский, DNS уходит странным маршрутом, WebRTC показывает локальные адреса, а TLS fingerprint похож на автоматизированный клиент, картина плохая.
TLS fingerprint особенно неприятен. До JavaScript дело может вообще не дойти. Сервер уже видит ClientHello: набор cipher suites, extensions, порядок расширений, ALPN, supported groups. У разных браузеров и версий эти наборы отличаются. Если сверху написано Chrome, а TLS похож на библиотеку или модифицированный клиент, это шумный сигнал.
Fingerprint.com прямо включает TLS fingerprinting в список распространённых техник наряду с Canvas, WebGL, fonts и audio.
Вот почему антидетект на уровне расширения слабее браузера с изменениями ниже по стеку. Расширение может поменять JavaScript-слой. Оно почти не контролирует сетевой стек, TLS, порядок низкоуровневых признаков, поведение движка. Браузерная сборка имеет больше возможностей, но и больше способов сломаться.
Обнаружение антидетекта: ищут не ложь, а швы
Хорошая антифрод-система не обязана знать реальный GPU пользователя. Она ищет швы.
Шов — это место, где два признака плохо стыкуются.
Например:
браузер заявляет одну платформу, а графический стек похож на другую;
timezone конфликтует с IP-географией;
language и locale не совпадают с клавиатурой, fonts и поведением
Intl;Canvas стабилен, но WebGL выглядит искусственно;
профиль каждый день новый, но действия слишком уверенные;
JS-слой похож на Chrome, TLS-слой нет;
в main thread одно значение, в worker другое;
iframe видит меньше подмены, чем основная страница.
В исследовании Detecting Anti-fingerprinting Browsers авторы оценивали коммерческие, подпольные и исследовательские anti-fingerprinting браузеры. В аннотации прямо сказано: такие инструменты могут успешно обходить browser fingerprinting, но исследователи показывают способы их обнаружения и анализируют, где они дают сбой.
Работает - потому что веб слишком разнообразный, а антифрод ограничен ресурсами и риском false positive.
Палится - потому что идеальная согласованность между JS, графикой, ОС, сетью и поведением очень сложна.

Почему антидетект нельзя заменить обычным приватным браузером
Приватный режим чистит локальное состояние после сессии. Он не делает устройство другим.
Firefox Resist Fingerprinting снижает уникальность и ограничивает сбор данных. Mozilla предупреждает, что это может ломать сайты, потому что сайты реально используют часть этих API для функциональности.
Tor Browser снижает fingerprinting через стандартизацию поведения. Он хорош для приватности, но плохо подходит под модель «много разных аккаунтов с разными устройствами». Если двадцать аккаунтов заходят из одинакового Tor Browser через сеть Tor, это отдельный сильный паттерн.
Антидетект решает другую задачу: не спрятаться в толпе одинаковых браузеров, а развести аккаунты по разным правдоподобным профилям. Для платформы это должно выглядеть как разные пользователи, разные устройства, разные истории.
Именно поэтому в антидетекте важна не «анонимность», а связность легенды. IP, язык, железо, ОС, браузер, часовой пояс, поведение, cookies, история — всё должно быть частью одного образа.
Финальная мысль
Антидетект собирает для каждого профиля свой отпечаток. Не случайный, а связный: будто это отдельный человек с отдельным устройством, браузером и историей.
Поэтому мультиаккаунтинг может жить долго: профиль выглядит правдоподобно и плохо связывается с другими профилями.
Но невидимости тут нет. Сильный антифрод ищет не одно подозрительное поле, а несостыковки между слоями: браузер говорит одно, WebGL намекает на другое, timezone спорит с IP, Canvas ведёт себя слишком искусственно.

Спасибо всем большое, что дочитали статью до конца! Буду рад видеть вас в своём Telegram-канале, там я продолжаю разбирать темы, связанные с кибербезопасностью: цифровая гигиена, приватность, деанон, антифрод, OSINT, реальные схемы атак и всё, что помогает лучше понимать угрозы вокруг себя.
