Widevine и headless-браузеры: границы DRM и чек-лист
Разделите ограничения вывода, CDM, устойчивости и лицензии с воспроизводимой матрицей для автоматизации DRM.
BotBrowser Team
Нужна структурированная документация по теме Платформа?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
BotBrowser может повторить разрешённый DRM-тест в объявленном профиле, но не поставляет проприетарный CDM, не выдаёт права и не превращает headless в аппаратно защищённый дисплей. Этот материал дополняет проверку доступности Widevine CDM в автоматизированных браузерах: там проверяется первый вызов EME, а здесь отдельно рассматриваются дисплей, модуль, устойчивость и лицензия.
Кратко
«DRM не работает в headless» не является диагнозом. Сбой бывает до выбора CDM, при доступности только программной устойчивости, из-за ограниченного вывода или отказа сервиса лицензий. Записывайте сборку, профиль, режим и HTTP-код.
Содержание
Четыре границы
requestMediaKeySystemAccess() может отказать до обращения к серверу. Используйте пробу доступности Widevine и называйте результат согласованием модуля. Успех не доказывает HW_SECURE_ALL: виртуальный экран часто даёт только программные уровни. Воспроизведение также может перейти в output-restricted. Challenge после этого всё равно может быть отклонён аккаунтом, регионом, HTTP или entitlement. Храните коды, но не токены и не непрозрачные сообщения.
Воспроизводимая матрица
Один HTTPS-fixture и новый профиль для каждой строки:
| Строка | Изменение | Наблюдение | Смысл |
|---|---|---|---|
| A | headless, запрос по умолчанию | успех или NotSupportedError | согласование модуля |
| B | headed, тот же профиль | сравнение с A | режим вывода |
| C | SW_SECURE_DECODE и HW_SECURE_ALL | принятая устойчивость | согласованный уровень |
| D | challenge в разрешённом тестовом сервисе | HTTP и код провайдера | решение лицензии |
| E | виртуальный вывод | ограничение или резервный путь | защита вывода |
Сохраняйте JSON вроде {"build":"Chrome 155.0.8059.80","mode":"headless","profile":"fresh-temporary","access":"supported","licenseStatus":null}. Это измерение, а не универсальная гарантия.
Как читать сбои
Если всё отклонено, сравните бинарник и аргументы. Если программный уровень работает, а аппаратный нет, зафиксируйте ограничение среды или требование провайдера. Если EME работает, а лицензия нет, проверьте HTTP, тестовый аккаунт и регион. При остановке после старта запишите keystatuseschange и путь вывода.
Не копируйте CDM и не отключайте защиту. Для согласованности режимов читайте согласованность headless и headed профилей, а для настройки читайте Widevine DRM в BotBrowser.
Что контролирует BotBrowser
При совместимых сборке и entitlement BotBrowser может сохранять профиль и политику --bot-widevine для контекста. Он не создаёт CDM, не меняет решение аккаунта, не гарантирует аппаратную защиту и не доказывает работу каждого title на каждом хосте.
Итог
Headless это режим вывода. Разделяйте доступность, устойчивость, вывод и лицензию, повторяйте fixture после обновлений и сохраняйте измеренный результат.
Источники
Похожие статьи
Widevine в автоматизированных браузерах: почему EME не работает
ПлатформаЧто такое Widevine DRM? Настройка headless и конфиденциальность
ОтпечаткиDRM-фингерпринтинг: что раскрывают запросы EME и Widevine
ПлатформаСогласованность профиля в headless и headed браузере
ОтпечаткиПроверка приватности в разных графических backend
ПлатформаIdle Detection API: контроль, разрешения и приватность
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.