1. Что представляют собой CSS-функции в цифровом отпечатке
Браузеры предоставляют множество API и возможностей, связанных с CSS, которые можно использовать для идентификации или снятия цифрового отпечатка браузерной среды. К ним относятся:
CSS.supports(property, value)
: Проверяет, поддерживает ли браузер определенное CSS-свойство или значение.document.styleSheets
: Перечисляет все загруженные таблицы стилей, что может выявить установленные расширения или пользовательский CSS.- Запросы особенностей CSS: Платформы могут обнаруживать поддержку современных модулей, таких как
@supports
, CSS Grid, Flexbox, API Houdini и других. - Пользовательские свойства и значения CSS: Некоторые скрипты измеряют реакцию на определенные правила
@property
или оцениваютCSS.registerProperty()
. - Ориентация экрана, медиазапросы и prefers-color-scheme: Все они могут влиять на возможности CSS и часто используются для обогащения цифрового отпечатка.
В совокупности эти “CSS-отпечатки” формируют профиль того, какой браузер и устройство вы используете.
2. Как платформы обнаруживают CSS-отпечатки
CSS-отпечатки собираются незаметно во время обычного отображения сайта или через скриптовые тесты. Методы обнаружения включают:
- Перечисление поддерживаемых функций: Скрипты проверяют
CSS.supports()
в циклах или используют парсинг стилей для оценки Grid, Flexbox, backdrop-filter или поведения макета пользовательских элементов. - Проверка таблиц стилей: Анализируя все загруженные таблицы стилей, сборщики отпечатков могут обнаружить внедренный или измененный CSS, иногда связанный с инструментами автоматизации или обходом CSP.
- Изменения макета на основе шрифтов: Платформы могут наблюдать, как пользовательские шрифты или стили текста влияют на отображение, и измерять это через DOMRect или boundingRect API.
- Динамическая отрисовка элементов: Использование
boundingClientRect
,scrollIntoView
илиwindow.getComputedStyle()
для оценки реакции элементов при разных макетах может дать подсказки об инструментах. - Экспорт CSS Houdini: Браузеры, которые предоставляют API, такие как
CSS.paintWorklet
илиCSS.animationWorklet
, помечаются с высокой точностью — особенно при обнаружении финансовых или безголовых браузеров.
CSS-функции особенно эффективны для различения реальных профилей просмотра людей и инженерных поддельных сред, что делает их ключевой целью современных систем борьбы с мультиаккаунтами или ботами.
3. Как FlashID маскирует CSS-функции
FlashID использует надежный и модульный подход к контролю CSS-отпечатков, позволяя:
- Подменять поведение
CSS.supports()
: Мы перехватываем и перезаписываем ответы о возможностях CSS, чтобы отражать согласованный, заданный пользователем профиль браузера. - Изолированные среды таблиц стилей: FlashID гарантирует, что содержимое
document.styleSheets
специфично для каждого экземпляра браузера и может обрезаться для предотвращения утечек, таких как обнаружение внедрения стилей. - Согласованность отрисовки шрифтов: Мы сохраняем специфичные для профиля CSS-значения, обеспечивая стабильность вычисляемых стилей, связанных со шрифтами, отступами и преобразованиями, между сеансами.
- Настройка поведения макета: Выбор макета CSS, такой как
display: grid
, правила flex или пользовательский парсинг значений, точно имитируется для сохранения реалистичности браузера. - Маскировка поддержки Paint Worklet: FlashID может имитировать или подавлять продвинутые API CSS Houdini, такие как
paintWorklet
, усложняя обнаружение. - Адаптивное поведение с учетом профиля: Медиазапросы, prefers-color-scheme и стили, связанные с экраном, адаптируются в соответствии с остальной частью профиля браузера.
Благодаря этим высокоуровневым настройкам, FlashID гарантирует, что CSS-отпечатки не выдают идентичность браузера, и каждый профиль ведет себя так, как если бы он работал на уникальном, изолированном устройстве.
Рекомендуемое Чтение