BrowserFM: 16 000 параметров, чтобы узнать ваш браузер


26.08.26

Ещё недавно браузерная анонимность выглядела по нынешним меркам почти наивно. В начале 2010-х хватало сменить IP, запустить Tor и слегка поколдовать над браузером — и для многих систем ты превращался практически в нового пользователя. Потом пришли Canvas, WebGL, AudioContext, WebRTC, Client Hints, WebAssembly, WebGPU и десятки других источников сигналов, и антифрод перестал смотреть на один параметр — он начал смотреть на их сочетание.

BrowserFM предлагает шагнуть значительно дальше. Вместо очередного отпечатка он пытается построить фактически модель браузерного окружения пользователя, собирая до 16 000 различных атрибутов. И вот здесь всё становится по-настоящему интересно — потому что для арбитражника, мультиаккаунтера, рекламщика, бонусхантера или просто человека, уверенного, что «новый IP плюс новый профиль браузера равно новый пользователь», правила игры тихо меняются.

Что такое BrowserFM

FM здесь ни при чём к радио: BrowserFM расшифровывается как Browser Future Model. Идея проекта довольно радикальна — зачем выбирать несколько десятков «хороших» характеристик браузера, если можно собрать практически всё, что он способен рассказать об устройстве? В основе лежит так называемая BOM Enumeration, Browser Object Model Enumeration: система обходит доступные браузеру объекты и снимает характеристики из множества источников — Window, Navigator, Screen, Performance, CSS, GPU, размеров окна, параметров дисплея, DPI, разрешения, доступных API, особенностей программного окружения и десятков других. В сумме и набегает порядка 16 000 атрибутов.

Многие привычные решения ищут относительно небольшой набор самых информативных признаков. BrowserFM исходит из обратной философии: если браузер отдаёт параметр — почему бы его не использовать? Именно поэтому считать BrowserFM «ещё одним отпечатком» не совсем верно. Это скорее конструктор, из которого можно собрать огромное количество независимых fingerprints.

Один отпечаток превращается в дерево

Представьте, что антифрод взял 16 000 значений и просто свернул их в один SHA-256. Изменился DPI — новый хэш. Поменялся размер окна — снова новый. Обновился Chrome — ещё один. Такая система была бы чрезвычайно чувствительной и практически бесполезной для долгосрочной идентификации. BrowserFM поступает умнее: все параметры распределяются по ветвям — Window, Navigator, Screen, CSS, GPU, Performance и другим, — и каждая ветвь описывает свою часть окружения.

Это принципиальный сдвиг. Теперь антифрод может сравнивать не только «отпечаток A равен отпечатку B?», но и задавать куда более тонкий вопрос: «какие части отпечатка A похожи на B и насколько это сходство статистически значимо?». Отсюда — прямое следствие. Допустим, человек поменял видеокарту, и классический отпечаток, сильно завязанный на WebGL и WebGPU, заметно изменился. Зачем выбрасывать остальные данные? BrowserFM позволяет условно сказать: ветка GPU отличается — хорошо, временно проигнорируем её и сравним всё прочее. Если Window, Navigator, Performance, CSS и множество других характеристик по-прежнему совпадают, у системы есть основания считать, что перед ней тот же пользователь с изменившимся железом. Не нужно искать полное совпадение — достаточно совпадения отдельных частей модели.

Fuzzy hashing: почему сменить пару параметров недостаточно

Главная проблема даже не в количестве характеристик. Знаете, что система анализирует разрешение экрана? Меняем разрешение. Знаете про hardwareConcurrency? Меняем. Про User-Agent — тем более. Если бы отпечаток был обычным хэшем от набора параметров, хватило бы изменить входные данные, чтобы на выходе получить совершенно другое значение. Но BrowserFM опирается на идею fuzzy hashing — нечёткого сравнения. Вместо требования полного совпадения система ищет похожий отпечаток.

Иными словами, fingerprint — это не пароль: ему необязательно совпадать бит в бит. Системе важно понять, насколько два окружения похожи друг на друга, и модель заранее допускает значительную вариативность части характеристик. Поэтому смена нескольких очевидных параметров ещё не означает разрыв связи со старым окружением. В материалах BrowserFM заявляется точность идентификации порядка 99,7% в соответствующих тестовых условиях — и это уже гораздо интереснее, чем сама по себе цифра «16 000».

Наглядный пример. Первый запуск: 1920×1080, DPI 96, Chrome, видеокарта NVIDIA, 8 потоков CPU, определённый набор шрифтов и определённые Performance-показатели. Второй запуск: 1366×768, DPI 120, тот же Chrome, та же NVIDIA, те же 8 потоков, почти те же шрифты, похожие показатели производительности. Если смотреть только на отпечаток экрана — перед нами разные пользователи. Если смотреть на всю модель — уже далеко не факт. Причём ветви имеют разный вес: легко изменяемый параметр незачем ценить так же высоко, как характеристику, которую трудно стабильно подделать. И здесь мы подходим к, пожалуй, самой интересной части BrowserFM.

Performance Fingerprinting: компьютер выдаёт себя скоростью

Можно подменить строку. Можно изменить значение JavaScript API. Можно сообщить сайту другое разрешение. Но заставить компьютер стабильно работать как другое железо — задача несопоставимо сложнее. BrowserFM уделяет ветке Performance особое внимание: в демонстрационном чекере только эта категория включает десятки различных метрик производительности. Логика проста: если два устройства заявляют одинаковые характеристики, но выполняют одни и те же операции принципиально по-разному, возникает дополнительный сигнал. Особенно ярко это проявляется в случае виртуализации и искусственно собранных браузерных окружений.

Можно написать «я обычный домашний компьютер». Но Performance Fingerprinting задаёт другой вопрос: «а работаешь ты действительно как обычный домашний компьютер?». Поэтому ветка Performance потенциально получает больший вес, чем легко изменяемые Window или Navigator. Это ключевой сдвиг во всём фингерпринтинге: антифрод постепенно переходит от вопроса «что браузер о себе сообщает?» к вопросу «как браузер и устройство реально себя ведут?».

Новый User-Agent давно не означает новый браузер

Если ваш план анонимизации до сих пор всерьёз опирается на пункт «подменить User-Agent» — у нас плохие новости. User-Agent лишь один сигнал из множества, а браузерный движок выдаёт себя через совершенно другие API. Классический пример — AudioContext fingerprinting: различия в реализации аудиостека и движка дают характеристики, которые невозможно согласованно изменить одной строкой User-Agent.

А теперь добавьте к этому Canvas, WebGL, WebGPU, WebAssembly, CSS, Performance, шрифты, Navigator, Screen — и тысячи менее очевидных характеристик. Получается простая вещь: вы можете сказать сайту, что используете другой браузер, но остальные 15 999 параметров тоже должны с вами согласиться. Именно консистентность становится одной из центральных проблем современного fingerprint spoofing.

«Чистая» система — тоже отпечаток

Есть деталь, которую часто недооценивают. Допустим, вы и правда подготовили абсолютно новую машину: свежая Windows, свежий браузер, новый IP, никаких cookies. Казалось бы — идеальный новый пользователь. Но возникает неожиданная проблема: обычные люди почти не пользуются идеально чистыми компьютерами. За месяцы и годы на машине накапливается цифровой мусор — программы, шрифты, расширения, офисный пакет, графические редакторы, служебные приложения, — и всё это постепенно меняет то окружение, которое видит браузер. Поэтому абсолютно чистая Windows сама по себе может стать интересным антифрод-сигналом.

Шрифты — это биография системы

Font fingerprinting существует давно, но в большой модели вроде BrowserFM он становится особенно полезным. Набор доступных шрифтов косвенно выдаёт локализацию системы, установленное ПО, возраст окружения и характер использования компьютера. Microsoft Office приносит собственные шрифты, приложения Adobe оставляют другой набор артефактов, языковые пакеты — третий. Получается своеобразная история жизни системы.

Представьте пользователя, который уверяет: «я обычный американец, давно работающий на этом компьютере под Windows». А окружение выглядит как система, установленная двадцать минут назад, — без характерного пользовательского софта и с набором шрифтов совсем другой локали. Каждый отдельный признак ничего не доказывает, но фингерпринтинг XXI века именно так и устроен: слабые сигналы складываются в сильный вывод.

VPS, серверная Windows и виртуалки

Для части сценариев удобно взять VPS или удалённый сервер, поставить браузер и работать через него — и с точки зрения сети всё может выглядеть безупречно. Но сеть — лишь один слой. Система уровня BrowserFM анализирует признаки самого окружения: серверная версия Windows отличается от обычной домашней, свежая установка имеет характерный профиль, виртуализированная среда добавляет ещё один набор сигналов. Качественный residential-IP сам по себе не превращает сервер в домашний ноутбук. Сформулировать можно совсем просто: IP говорит сайту, откуда вы пришли, а fingerprint пытается понять, на чём вы пришли, — и антифрод интересуют оба ответа.

Отдельная история — виртуальные машины. Когда-то VM была почти универсальным инструментом разделения окружений; сегодня сама виртуализация становится частью risk scoring. BrowserFM интересен здесь тем, что не пытается найти один магический флаг вроде isVirtualMachine = true, а собирает множество косвенных признаков: GPU, Performance, шрифты, экран, доступные API, программное окружение, поведение браузера, особенности системы. По отдельности каждый сигнал вполне легитимен, но их комбинация способна сформировать характерный профиль виртуальной машины — и это гораздо сложнее исправить одной настройкой.

Антидетект теперь собирает не значения, а систему

Исторически задача антидетект-браузера выглядела примерно так: получить отпечаток, изменить отпечаток, создать независимый профиль. Но чем больше независимых источников информации появляется в браузере, тем труднее поддерживать их взаимную согласованность. Допустим, антидетект меняет GPU — хорошо. А соответствует ли этому GPU его Performance? Согласуется ли с ним WebGPU? Вяжется ли количество ядер CPU с производительностью? Соответствует ли Screen заявленному устройству? Совместим ли набор шрифтов с операционной системой и локалью? Поддерживает ли указанная версия браузера именно такой набор API? Генерировать правдоподобные значения уже недостаточно — нужно генерировать правдоподобную систему взаимосвязанных значений. И разница тут огромна.

Хорошая аналогия — паспорт. Имя: John Smith. Страна: США. Год рождения: 1990. Всё выглядит нормально. Но затем выясняется, что паспорт выдан во Франции, номер имеет немецкий формат, фотография сделана тридцать лет назад, а дата выдачи — завтра. Каждый параметр по отдельности правдоподобен, а вместе они абсурдны. С отпечатком браузера происходит ровно то же самое. Современный антифрод всё меньше волнует вопрос «можно ли подменить этот параметр?» — гораздо важнее другой: «можно ли подменить тысячи параметров так, чтобы они остались согласованными между собой?». BrowserFM превращает эту проблему в архитектурный принцип.

А что со смартфонами

Кажется, что на смартфонах всё проще: модельный ряд ограничен, у миллионов людей одинаковые iPhone и Samsung, железо унифицировано — значит, и отпечаток должен быть менее уникальным. Не обязательно. Особенно интересен Android: несмотря на аппаратную унификацию, браузер всё равно получает большое количество характеристик программного и аппаратного окружения. Объедините их в большую модель, добавьте Performance-метрики — и число потенциальных комбинаций резко возрастает. Поэтому технологии класса BrowserFM способны сократить разрыв между фингерпринтингом в браузере и идентификацией, для которой раньше требовалось устанавливать приложение. Для мобильного антифрода это особенно перспективное направление.

Почему BrowserFM выгоден самому антифроду

Есть сторона технологии, о которой пользователь обычно не думает: хранение данных стоит денег. Особенно когда у вас не тысяча посетителей в месяц, а сотни миллионов событий ежедневно. Google, Amazon, рекламные сети, банки, маркетплейсы и крупные антифрод-платформы работают с колоссальными объёмами информации. По заявленной архитектуре представление BrowserFM хранится значительно компактнее обычного JSON — в материалах фигурирует экономия примерно до девяти раз.

Для одного пользователя это мелочь. Для сотен миллионов отпечатков — инфраструктурное преимущество. И часто судьбу технологии решает не только вопрос «насколько хорошо это работает?», но и «сколько стоит применять это на 500 миллионах запросов?». Если отпечаток одновременно точнее и дешевле в хранении, мотивация внедрять его резко возрастает.

Модель, которая растёт вместе с браузером

И ещё одна неприятная особенность концепции: она не привязана к сегодняшним API. Появился новый браузерный интерфейс — его добавляют в соответствующую ветвь. Появился новый способ получить информацию о GPU — ещё один сигнал. Новый Performance API — ещё несколько характеристик. Именно поэтому название Future Model выглядит уместно: это не фиксированный отпечаток, а архитектура, в которую можно бесконечно добавлять новые источники информации. Сегодня 16 000 параметров. Завтра их может быть больше.

Что это значит для мультиаккаунтинга — и главная идея

Вывод неприятный, но полезный: эпоха борьбы с фингерпринтингом через подмену нескольких популярных параметров заканчивается. Современная система может одновременно анализировать сетевое окружение, браузер, железо, производительность, программное окружение, историю изменений, согласованность характеристик и поведение пользователя. BrowserFM закрывает прежде всего огромный кусок браузерного и аппаратно-программного слоя. Поэтому и вопрос постепенно меняется. Раньше спрашивали: «у меня изменился отпечаток?». Теперь правильнее спрашивать: «выглядит ли новое окружение как независимое реальное устройство?». Это совершенно разные вопросы.

Особенно важно помнить об этом при работе с fingerprint-чекерами. Пользователь меняет параметр, обновляет страницу, видит «Fingerprint ID изменился» — и радостно заключает, что сайт теперь считает его другим человеком. Но это может быть ложным чувством безопасности. Полный хэш действительно меняется даже от небольшой правки входных данных, вот только антифроду вовсе не обязательно использовать его как единственный идентификатор. Он может отдельно хранить и сравнивать ветки GPU, Performance, Navigator, Screen, CSS и оценивать степень сходства старого и нового профилей. Вопрос не в том, поменялся ли хэш, — вопрос в том, насколько сдвинулось само пространство признаков.

И это подводит к самой фундаментальной идее BrowserFM, которая интереснее любой цифры. Через несколько лет «16 000» может выглядеть совершенно обыденно — важно другое: браузерный отпечаток перестаёт быть идентификатором и становится моделью устройства. А модель по своей природе допускает изменения. У пользователя может смениться видеокарта, обновиться браузер, поменяться разрешение, появиться новый монитор, установиться Office. Реальные компьютеры меняются постоянно — и хороший антифрод не должен терять человека после каждого такого изменения. Он должен понимать характер изменений: отличать естественную эволюцию живой системы от наспех собранного окружения, которое лишь притворяется настоящим.

Отсюда и новый, куда более трудный вопрос для всех, кто строит независимые профили. Раньше он звучал как «как получить новый отпечаток?». Теперь — «как собрать окружение, которое ведёт себя как по-настоящему другое устройство и остаётся внутренне согласованным, меняясь во времени так, как менялся бы реальный компьютер?». А это уже не переключатель в интерфейсе, а полноценная инженерная задача.

Еще не с нами?

Зарегистрируйтесь, чтобы получить доступ ко всем возможностям сайта.

Регистрация

Похожие посты

При нажатии на кнопку "Принять" вы соглашаетесь, что Detect Expert может использовать файлы cookie для персонализации содержимого.

Вы всегда можете отказаться, следуя инструкциям в наших Cookie Policy.