DRM-отпечатки: как EME и Widevine отслеживают вас
Как Encrypted Media Extensions и сигналы возможностей Widevine DRM создают векторы отпечатков и как контролировать DRM-идентичность на уровне движка.
Нужна поддерживаемая продуктовая документация?
У этой статьи есть соответствующая страница в центре документации. Используйте docs для каноничного сценария настройки, актуальных флагов и долгосрочной справки.
Введение
Encrypted Media Extensions (EME) - это спецификация W3C, позволяющая веб-браузерам взаимодействовать с модулями расшифровки контента (CDM) для воспроизведения медиаконтента с DRM-защитой. Наиболее широко используемый CDM - это Widevine от Google, интегрированный в Chrome, Firefox, Edge и большинство браузеров на базе Chromium. EME позволяет стриминговым сервисам, таким как Netflix, Disney+ и Amazon Prime Video, доставлять защищённый контент прямо в браузере без плагинов.
Хотя EME был разработан для воспроизведения медиаконтента, его запросы возможностей стали значительным источником данных для снятия отпечатков. Сайты могут использовать эти запросы для получения информации о платформе браузера, оборудовании безопасности и программной конфигурации без каких-либо видимых индикаторов или запросов разрешений. Это делает возможности DRM проблемой приватности, выходящей далеко за рамки воспроизведения медиа, и проблемой, о которой большинство пользователей не подозревает.
Влияние на приватность
Снятие отпечатков через возможности DRM особенно настораживает, поскольку раскрывает глубокую информацию о платформе, которую сложно получить другими способами. К таким сигналам относятся:
- Поддержка систем управления ключами: доступные DRM-системы в вашем браузере различаются в зависимости от платформы. Некоторые из них эксклюзивны для одной операционной системы, а это значит, что само наличие или отсутствие системы ключей немедленно раскрывает вашу платформу. Это информация, которую вы, возможно, не хотите предоставлять каждому сайту.
- Уровень безопасности: DRM работает на разных уровнях безопасности в зависимости от оборудования устройства. Наличие аппаратной поддержки безопасности или использование только программной обработки раскрывается через эти запросы, выдавая аппаратные детали вашей системы.
- Возможности надёжности: набор поддерживаемых уровней надёжности специфичен для устройства и привязан к конфигурации аппаратной безопасности. Это создаёт ещё одно измерение идентификации платформы, которое сайты могут запрашивать незаметно.
- Возможности кодеков в контексте DRM: кодеки, доступные в контексте DRM, отличаются от доступных для обычного воспроизведения. Эта DRM-специфичная матрица кодеков добавляет ещё один уровень к отпечатку вашего устройства.
Исследование Технического университета Берлина показало, что одних лишь запросов возможностей EME достаточно для различения более 30 конфигураций платформ, а в сочетании с другими сигналами отпечатков их вклад в уникальную идентификацию значителен. Запросы быстрые (менее 50 мс), не требуют разрешений и не создают видимых индикаторов.
Отсутствие осведомлённости делает это особенно проблематичным. Большинство пользователей не знают, что запросы возможностей DRM могут использоваться в целях, выходящих за рамки воспроизведения медиа, и механизма отказа от этих запросов не существует. Именно от такого незаметного отслеживания нужна защита пользователям, заботящимся о приватности.
Почему это важно для вашей приватности
Незаметная идентификация платформы
При каждом посещении сайта он может незаметно определить вашу операционную систему и конфигурацию оборудования через DRM-запросы. Это происходит без уведомления, диалога согласия или видимого признака. Собранная информация может быть объединена с другими сигналами отпечатка для построения подробного и устойчивого профиля вашего устройства.
Обнаружение headless-браузера
Один из самых значительных аспектов DRM-отпечатков связан с headless-браузерами. Стандартный headless Chrome не включает CDM Widevine, что означает провал запросов возможностей DRM в headless-режиме. Поскольку практически все десктопные установки Chrome включают Widevine, его отсутствие является сильным сигналом того, что браузер работает в автоматизированном или headless-окружении. Это создаёт серьёзную проблему для легитимных исследований приватности, автоматизированного тестирования и любых рабочих процессов, полагающихся на headless-браузеры.
Отсутствие возможности отказа
В отличие от куки, доступа к геолокации или разрешений камеры, у пользователей нет способа отказаться от запросов возможностей DRM. API не требует разрешений. Любой сайт может выполнить эти запросы в любое время, что делает DRM-отпечатки постоянным и неизбежным вектором отслеживания для незащищённых браузеров.
Утечка кроссплатформенной идентичности
Запуск браузера на одной операционной системе с представлением идентичности другой платформы немедленно подрывается DRM-сигналами. Например, пользователь на Linux, желающий защитить приватность от платформозависимого отслеживания, всё равно будет идентифицирован через DRM-сигналы, уникальные для его реального окружения.
Распространённые подходы к защите и их ограничения
VPN и прокси-серверы
VPN не влияют на запросы возможностей DRM. EME работает полностью внутри браузера и CDM без сетевых запросов во время определения возможностей. DRM-отпечаток идентичен независимо от использования VPN. Если вы полагаетесь только на VPN для защиты приватности, ваш DRM-отпечаток остаётся полностью открытым.
Режим инкогнито и приватный просмотр
Режимы приватного просмотра не изменяют ответы на запросы возможностей DRM. Поддержка Widevine, уровни надёжности и доступность систем ключей одинаковы в инкогнито и в обычном окне. Приватный просмотр защищает от отслеживания на основе куки, но ничего не делает против снятия отпечатков на аппаратном уровне.
Расширения браузера
Расширения не могут эффективно контролировать ответы EME. Полная блокировка API ломает воспроизведение всего DRM-защищённого контента (Netflix, Disney+ и другие стриминговые сервисы) и легко обнаруживается, поскольку API становится недоступным. Попытки изменить возвращаемые значения вносят обнаруживаемые несоответствия, а расширения не могут добавлять или удалять поддержку нативных бинарных файлов CDM. Это проблема, требующая защиты на уровне движка.
Обходные решения для headless-браузеров
Некоторые фреймворки автоматизации пытаются заставить headless Chrome выглядеть поддерживающим Widevine, подставляя заглушки API. Этот подход не работает, потому что API взаимодействует с реальным бинарным файлом CDM. Заглушка, возвращающая успех без реального CDM, создаёт некорректные объекты конфигурации и проваливается при любом дальнейшем взаимодействии. Поверхностные патчи просто не работают для защиты DRM-сигналов.
Подход BotBrowser на уровне движка
BotBrowser контролирует DRM-сигналы на уровне движка браузера, обеспечивая соответствие всех EME-запросов загруженному профилю отпечатков. Это не переопределение JavaScript и не расширение браузера. BotBrowser модифицирует внутреннюю отчётность DRM браузера, так что сами нативные API возвращают согласованные с профилем результаты.
Конфигурация DRM на основе профиля
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
Профиль определяет полный набор возможностей DRM: какие системы ключей поддерживаются, на каких уровнях надёжности, с какими комбинациями кодеков и какие детали конфигурации возвращаются. Все эти данные сняты с реальных устройств, что обеспечивает внутреннюю согласованность. Вы получаете полную, аутентичную DRM-идентичность, соответствующую реальному устройству.
Widevine в headless-режиме
BotBrowser сохраняет доступность CDM Widevine в headless-режиме. Это одна из важнейших защит, связанных с DRM, поскольку отсутствие Widevine в headless Chrome является одним из самых часто проверяемых сигналов для обнаружения окружения.
chrome --bot-profile="/path/to/profile.enc" \
--headless \
--user-data-dir="$(mktemp -d)"
Запросы возможностей DRM возвращают одинаковые результаты в headless и обычном режимах, обеспечивая полную согласованность независимо от способа запуска BotBrowser. Независимо от того, проводите ли вы исследования приватности, запускаете автоматизированные тесты или создаёте рабочий процесс, требующий headless-работы, ваши DRM-сигналы остаются неотличимыми от обычного десктопного браузера.
Кроссплатформенная DRM-идентичность
Профиль Windows, запущенный на Linux-сервере, сообщает характеристики DRM, соответствующие Windows. Как платформозависимые, так и универсальные DRM-системы сообщаются корректно, уровни надёжности соответствуют целевой платформе, а поддержка кодеков в контексте DRM соответствует ожидаемой конфигурации. Поведение distinctiveIdentifier и persistentState также соответствует платформе профиля.
Эта кроссплатформенная согласованность критически важна для поддержания единой идентичности по всем поверхностям отпечатков. BotBrowser гарантирует, что ваши DRM-сигналы согласованы с каждым другим аспектом профиля браузера.
Согласованные объекты конфигурации
При успешном выполнении запросов возможностей DRM возвращаемые объекты конфигурации раскрывают согласованные параметры, включая типы данных инициализации, видео- и аудиовозможности и поддержку типов сессий. BotBrowser обеспечивает точность и согласованность этих объектов конфигурации с профилем, так что каждая деталь соответствует тому, что сообщило бы реальное устройство.
Настройка и использование
Базовое использование CLI
Защита DRM-сигналов активируется автоматически при загрузке профиля:
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
Интеграция с Playwright
const { chromium } = require('playwright-core');
(async () => {
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
],
headless: true,
});
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
// Перейдите на сайт тестирования отпечатков для проверки DRM-сигналов
await page.goto('https://example.com');
// Проверка согласованности DRM-сигналов
const drmInfo = await page.evaluate(async () => {
const results = {};
// Проверка доступности Widevine
try {
const access = await navigator.requestMediaKeySystemAccess(
'com.widevine.alpha',
[{
initDataTypes: ['cenc'],
videoCapabilities: [{
contentType: 'video/mp4; codecs="avc1.42E01E"',
robustness: 'SW_SECURE_DECODE',
}],
}]
);
results.widevine = {
available: true,
config: access.getConfiguration(),
};
} catch {
results.widevine = { available: false };
}
return results;
});
console.log('DRM signals:', JSON.stringify(drmInfo, null, 2));
await browser.close();
})();
Интеграция с Puppeteer
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('about:blank');
// Проверка доступности Widevine в headless-режиме
const widevineAvailable = await page.evaluate(async () => {
try {
await navigator.requestMediaKeySystemAccess(
'com.widevine.alpha',
[{ initDataTypes: ['cenc'],
videoCapabilities: [{
contentType: 'video/mp4; codecs="avc1.42E01E"',
}],
}]
);
return true;
} catch {
return false;
}
});
console.log('Widevine available in headless:', widevineAvailable);
await browser.close();
})();
Проверка
После запуска BotBrowser с профилем вы можете убедиться в корректной защите DRM-сигналов. Что следует проверить:
- Доступность Widevine соответствует ожиданиям. Для профилей Chrome Widevine должен быть доступен как в обычном, так и в headless-режиме.
- Платформозависимые системы ключей соответствуют вашему профилю. Профиль Windows должен показывать платформозависимую поддержку DRM, которую профиль Linux не показал бы, и наоборот.
- Уровни надёжности соответствуют уровню безопасности и конфигурации оборудования профиля.
- Детали конфигурации корректны и внутренне согласованы.
- Результаты в headless и обычном режимах идентичны. Это одна из важнейших проверок, поскольку обнаружение headless через DRM-сигналы является распространённой техникой отслеживания.
- Результаты согласованы при перезагрузке страницы и перезапуске браузера. Ваша DRM-идентичность должна быть стабильной и воспроизводимой.
Вы можете использовать сайты тестирования отпечатков или встроенные инструменты проверки BotBrowser для подтверждения корректной настройки этих сигналов.
Лучшие практики
-
Всегда используйте полный профиль. DRM-сигналы должны соответствовать платформе профиля, версии браузера и оборудованию. Частичные конфигурации создают обнаруживаемые несоответствия. Полный профиль обеспечивает согласованность всех DRM-сигналов.
-
Проверяйте Widevine в headless-режиме. При запуске в headless-режиме убедитесь, что запросы Widevine успешны. Это один из наиболее часто проверяемых сигналов для обнаружения окружения, и поддержка Widevine в headless-режиме BotBrowser является ключевым преимуществом.
-
Сопоставляйте платформу профиля с ожидаемыми функциями DRM. Профиль Linux не должен сообщать о поддержке DRM, специфичной для Windows, а профиль Windows должен сообщать о соответствующем наборе систем ключей. Профили BotBrowser построены на данных реальных устройств, поэтому такое соответствие достигается автоматически при использовании правильного профиля.
-
Комбинируйте с защитой кодеков. Возможности кодеков DRM и общие возможности медиакодеков должны совпадать. Используйте единый профиль для обеспечения согласованности обоих. Подробности в статье Защита MIME и кодеков.
-
Для настройки воспроизведения Widevine DRM смотрите руководство по настройке Widevine DRM.
Часто задаваемые вопросы
Поддерживает ли стандартный headless Chrome Widevine?
Нет. Стандартный headless Chrome не включает модуль CDM Widevine, что приводит к провалу запросов возможностей DRM. Это отсутствие хорошо известно как сигнал обнаружения окружения. BotBrowser сохраняет доступность Widevine в headless-режиме, обеспечивая согласованность ваших DRM-сигналов независимо от режима отображения.
Может ли DRM-отпечаток идентифицировать конкретное устройство?
Не индивидуально, но DRM-сигналы значительно сужают идентификацию. Комбинация поддержки систем ключей, уровней надёжности и возможностей кодеков создаёт профиль, который в сочетании с другими сигналами отпечатков существенно вносит вклад в идентификацию устройства. Система профилей BotBrowser гарантирует, что ваши DRM-сигналы соответствуют конкретной реальной конфигурации устройства, а не вашему фактическому оборудованию.
BotBrowser действительно расшифровывает DRM-контент?
Защита DRM-сигналов BotBrowser контролирует запросы возможностей, которые сайты используют для снятия отпечатков. Для фактического воспроизведения DRM-контента смотрите руководство по настройке Widevine DRM. Эти две функции работают совместно: защита сигналов обеспечивает согласованность отпечатка, а руководство по настройке DRM охватывает функциональность воспроизведения медиа.
Меняются ли DRM-сигналы между версиями браузера?
Да. Обновления браузера могут изменять версии модуля Widevine, добавлять поддержку новых уровней надёжности или модифицировать возможности кодеков в контексте DRM. Профили BotBrowser привязаны к версиям конкретных релизов браузера, поэтому ваши DRM-сигналы всегда соответствуют реальной конфигурации.
Полезен ли ClearKey для снятия отпечатков?
ClearKey поддерживается повсеместно и сам по себе имеет ограниченную ценность для снятия отпечатков. Однако конкретные детали конфигурации немного различаются между платформами и могут вносить вклад в общий отпечаток. Профили BotBrowser включают соответствующие ответы ClearKey для поддержания полной согласованности.
Как это связано с обнаружением HDCP?
Статус HDCP (High-bandwidth Digital Content Protection) может влиять на уровни надёжности, которые сообщает устройство. Профили BotBrowser включают соответствующие уровни надёжности для целевой конфигурации устройства, независимо от фактического статуса HDCP хоста. Это означает, что ваши сообщаемые возможности всегда согласованы с профилированным устройством.
Могут ли сайты принудительно выполнять проверки возможностей DRM?
Да. Запросы возможностей DRM не требуют разрешений и не создают видимых для пользователя запросов. Любой сайт может запрашивать возможности DRM в любое время, поэтому проактивная защита через BotBrowser необходима, а не реактивные меры.
Итоги
Запросы возможностей EME и Widevine раскрывают детальную информацию о платформе, оборудовании и конфигурации безопасности, служащую постоянным сигналом для снятия отпечатков. Отсутствие DRM в headless-браузерах само по себе является известным вектором отслеживания. BotBrowser контролирует все связанные с DRM сигналы на уровне движка через свою систему профилей, сохраняя доступность Widevine в headless-режиме и обеспечивая кроссплатформенную согласованность всех запросов возможностей EME. С BotBrowser ваша DRM-идентичность аутентична, согласована и полностью соответствует каждому другому аспекту отпечатка вашего браузера. По смежным темам защиты смотрите Защита MIME и кодеков, Контроль аудиоотпечатков и Настройка Widevine DRM.
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.