惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
Stack Overflow Blog
Stack Overflow Blog
B
Blog
I
InfoQ
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
F
Full Disclosure
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
T
Tailwind CSS Blog
S
Secure Thoughts
P
Privacy International News Feed
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
W
WeLiveSecurity
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Project Zero
Project Zero
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
H
Help Net Security
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
博客园 - 【当耐特】

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Антидетект-браузеры: почему мультиаккаунтинг вообще работает
PetrVasilche · 2026-05-18 · via Все публикации подряд на Хабре

Антидетект-браузеры: почему мультиаккаунтинг вообще работает

Уровень сложностиПростой

Время на прочтение9 мин

Охват и читатели3

FAQ

Антидетект-браузер звучит как что-то из серой зоны интернета. Часто так и есть. Его используют для арбитража, 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, реальные схемы атак и всё, что помогает лучше понимать угрозы вокруг себя.