Saltar al contenido
Multimedia · EME · Widevine L3

Widevine DRM para Chromium automatizado

Los builds de Chromium de código abierto se distribuyen sin el CDM de Widevine, así que el video con DRM falla y requestMediaKeySystemAccess('com.widevine.alpha') se rechaza, mientras que un Chrome de escritorio estándar normalmente lo resuelve. Pasa widevine al lanzar y el SDK descarga el CDM del servidor de componentes de Google, lo verifica y lo activa.

En todos los planes, opcional.

Una opción de lanzamiento

from clearcote import launch_persistent_context

ctx = launch_persistent_context("./profile-drm", widevine=True)   # fetch, verify, enable
page = ctx.pages[0] if ctx.pages else ctx.new_page()
page.goto("https://your-drm-site.example")
# navigator.requestMediaKeySystemAccess('com.widevine.alpha') now resolves

Lo más destacado

Descargado igual que en Chrome

El CDM viene del propio servidor de componentes de Google, igual que lo recibe Chrome estándar, y se descarga una vez por versión. Clearcote nunca lo distribuye.

Verificado antes de usarse

La descarga se comprueba con SHA-256, y si falta el hash se rechaza directamente, porque el CDM es una biblioteca nativa.

En caché y reutilizable

Se guarda en ~/.clearcote/WidevineCdm, así que se descarga una vez por versión. Descárgalo por adelantado con fetchWidevine() para sacar la descarga de tu primer lanzamiento; aun así, cada lanzamiento hace una verificación rápida de versión con Google, directamente desde esta máquina.

Una respuesta EME coherente

Un Chrome real resuelve la consulta del key system de Widevine. Con el CDM instalado, Clearcote también.

Falla sin romper nada

Si no se puede descargar el CDM, el lanzamiento continúa sin DRM en lugar de fallar.

Reproducción L3

Reproducción segura por software (L3). L1, seguro por hardware, queda fuera del alcance.

Por qué es opcional

El CDM de Google es un binario cerrado. No puede formar parte del build abierto de código abierto, y Clearcote tampoco lo redistribuye con el build con licencia. Así que el navegador se distribuye con la infraestructura de EME compilada, pero sin el CDM, y la descarga la activas tú.

El CDM vive en el perfil. En Python funciona con launch_persistent_context y con launch(), que se ejecuta sobre un perfil desechable (la API síncrona; el launch() asíncrono es de incógnito, así que ahí usa launch_persistent_context); en Node usa launchPersistentContext. El lanzamiento en incógnito (ephemeral_profile=False) no puede usarlo. El SDK vuelve a habilitar el actualizador de componentes y, en Windows, fuerza una búsqueda rápida de actualizaciones, para que el motor registre el CDM.

También importa más allá del video. Si el key system de Widevine se resuelve o no es un dato más que una página puede leer, y un Chrome que no sabe responder no parece Chrome.

Para qué se usa

QA de streaming

Prueba la reproducción, los derechos de acceso y la interfaz del reproductor en tu propio catálogo protegido con DRM.

Monitoreo de medios

Verificaciones automatizadas en páginas que reproducen video protegido.

Una persona de Chrome completa

Mantén la respuesta de EME coherente con la de un Chrome real, aunque nunca reproduzcas un video.

Clearcote está hecho para la privacidad, las pruebas, la investigación y la automatización lícita. Tú eres responsable de cómo lo usas y de respetar los términos de los sitios que visitas.

Qué plan lo incluye

En todos los planes, opcional, con reproducción segura por software (L3).

Comparar planes

Preguntas frecuentes

¿Cómo habilito Widevine en Playwright?

Lanza el navegador con el SDK de Clearcote y pasa widevine=True (Python: el launch() síncrono o un contexto persistente) o widevine: true (Node, launchPersistentContext). Descarga el CDM una vez, lo verifica, lo instala en el perfil y lo habilita. El SDK de .NET todavía no tiene opción de Widevine.

¿Por qué Chromium de código abierto no reproduce video con DRM?

El CDM de Widevine es propietario y no se puede distribuir en un build de código abierto, así que sin él fallan tanto la reproducción con DRM como la consulta del key system de EME.

¿Clearcote incluye el CDM?

No. El CDM se descarga del servidor de componentes de Google cuando lo activas, de la misma forma en que lo recibe Chrome estándar. Clearcote nunca lo distribuye.

¿Qué nivel de seguridad es compatible?

L3, seguro por software. L1, seguro por hardware, que algunos servicios exigen para resoluciones altas, queda fuera del alcance.

¿Necesito un perfil persistente?

Necesita un perfil, pero no necesariamente uno que se conserve. El CDM se instala en el perfil, así que en Python el perfil desechable detrás del launch() síncrono funciona igual que launch_persistent_context (el launch() asíncrono es de incógnito); en Node usa launchPersistentContext. Solo el lanzamiento en incógnito (ephemeral_profile=False) no puede usarlo.

Profundiza en la documentación

Características relacionadas

Prueba Clearcote

Un reemplazo directo para Playwright y Puppeteer, coherente hasta el handshake TLS, con un build de código abierto para empezar.

Gratis para un navegador con GitHub. Sin tarjeta.