Widevine y navegadores headless: lista de límites de DRM
Separa límites de pantalla, CDM, robustez y licencia con una matriz reproducible para depurar DRM en automatización.
BotBrowser Team
Quieres la documentación estructurada de Plataforma?
Este artículo forma parte de la biblioteca editorial. Para pasos de configuración, material de referencia y actualizaciones continuas, entra en la sección de docs.
BotBrowser puede repetir una prueba DRM autorizada en un perfil declarado, pero no entrega un CDM propietario, no concede derechos y no convierte headless en una pantalla segura por hardware. Esta guía es distinta de disponibilidad de Widevine CDM en navegadores automatizados: aquella comprueba la primera llamada EME; aquí se separan pantalla, módulo, robustez y licencia.
Resumen
“Falló DRM en headless” no identifica la causa. Puede fallar antes de seleccionar el CDM, aceptar solo robustez de software, restringir la salida o recibir un rechazo del servicio de licencias. Registra versión, perfil, modo de pantalla y código HTTP en cada ejecución.
Contenido
Cuatro límites
La disponibilidad de requestMediaKeySystemAccess() puede fallar antes de contactar al servidor. Usa la prueba de disponibilidad de Widevine y llama a ese resultado “negociación del módulo”, no “reproducción”.
Una respuesta positiva tampoco demuestra HW_SECURE_ALL: un escritorio o display virtual puede ofrecer solo software. Además, la reproducción puede empezar y terminar en output-restricted si la ruta de salida no cumple la política. Por último, el challenge puede ser rechazado por cuenta, región, HTTP o entitlement. Guarda códigos y estados, nunca tokens ni mensajes opacos.
Matriz reproducible
Usa el mismo fixture HTTPS y un perfil nuevo por fila:
| Fila | Cambio | Resultado que se registra | Lectura |
|---|---|---|---|
| A | headless, solicitud predeterminada | éxito o NotSupportedError | negociación del módulo |
| B | headed, mismo perfil | comparación con A | modo de pantalla |
| C | SW_SECURE_DECODE frente a HW_SECURE_ALL | robustez aceptada | nivel de seguridad negociado |
| D | challenge en servicio de prueba autorizado | HTTP y código del proveedor | decisión de licencia |
| E | display virtual | restricción o ruta de reserva | protección de salida |
Conserva un JSON como {"build":"Chrome 155.0.8059.80","mode":"headless","profile":"fresh-temporary","access":"supported","licenseStatus":null}. Es un artefacto medido, no una promesa universal.
Lectura de fallos
Si todas las filas rechazan, compara binario y argumentos. Si software funciona y hardware no, documenta el límite de la máquina o el requisito del proveedor. Si EME funciona y falla la licencia, revisa estado HTTP, cuenta de prueba y región. Si el estado cambia después de comenzar, registra keystatuseschange y la salida.
No copies un CDM ni desactives controles de seguridad para que pase una prueba. Para consistencia entre modos, consulta consistencia de perfiles headless y headed; para configuración, configuración Widevine de BotBrowser.
Límite de BotBrowser
Con la build y entitlement adecuados, BotBrowser puede mantener el perfil y la política --bot-widevine por contexto. No fabrica un CDM, no cambia una decisión de cuenta, no garantiza hardware seguro ni prueba que todos los títulos funcionen en todos los hosts.
Conclusión
Headless es un modo de presentación. Divide disponibilidad, robustez, salida y licencia en filas separadas, repite el fixture tras cada actualización y conserva el resultado medido.
Fuentes
Artículos Relacionados
Widevine en navegadores automatizados: por qué falla EME
Plataforma¿Qué es Widevine DRM? Configuración headless y privacidad
Huella digitalFingerprinting DRM: qué revelan las consultas EME y Widevine
PlataformaConsistencia de perfiles entre navegadores headless y headed
Huella digitalValidación de privacidad en distintos backends de renderizado
PlataformaIdle Detection API: control, permisos y privacidad
Lleva BotBrowser de la investigación a producción
Usa estas guías para entender el modelo y después avanzar hacia validación multiplataforma, contextos aislados y despliegue de navegador preparado para escalar.