Aller au contenu
Médias · EME · Widevine L3

Le DRM Widevine pour un Chromium automatisé

Les builds open source de Chromium sont livrés sans le CDM Widevine : la vidéo DRM échoue et requestMediaKeySystemAccess('com.widevine.alpha') est rejeté, là où un Chrome de bureau standard le résout normalement. Passez widevine au lancement et le SDK récupère le CDM sur le serveur de composants de Google, le vérifie et l'active.

Dans toutes les formules, à activer vous-même.

Une seule option de lancement

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

Points clés

Récupéré comme le fait Chrome

Le CDM provient du serveur de composants de Google, comme pour Chrome standard, et n'est téléchargé qu'une fois par version. Clearcote ne le distribue jamais.

Vérifié avant utilisation

Le téléchargement est vérifié par SHA-256, et un hash manquant entraîne un refus pur et simple, car le CDM est une bibliothèque native.

En cache et réutilisable

Stocké sous ~/.clearcote/WidevineCdm, il n'est téléchargé qu'une fois par version. Récupérez-le à l'avance avec fetchWidevine() pour sortir le téléchargement de votre premier lancement ; chaque lancement effectue tout de même une rapide vérification de version auprès de Google, directement depuis cette machine.

Une réponse EME cohérente

Un vrai Chrome résout la requête de key system Widevine. Avec le CDM en place, Clearcote aussi.

Un échec en douceur

Si le CDM ne peut pas être récupéré, le lancement continue sans DRM au lieu d'échouer.

Lecture L3

Lecture en sécurité logicielle (L3). Le niveau L1, sécurisé par le matériel, n'entre pas dans le périmètre.

Pourquoi c'est optionnel

Le CDM de Google est un binaire fermé. Il ne peut pas faire partie du build ouvert open source, et Clearcote ne le redistribue pas non plus avec le build sous licence. Le navigateur est donc livré avec la plomberie EME compilée, mais sans le CDM, et c'est vous qui déclenchez le téléchargement.

Le CDM réside dans le profil. En Python, il fonctionne avec launch_persistent_context et avec launch(), qui tourne sur un profil jetable (l'API sync ; le launch() async est en navigation privée, utilisez donc launch_persistent_context dans ce cas) ; en Node, utilisez launchPersistentContext. Le lancement en navigation privée (ephemeral_profile=False) ne peut pas l'accueillir. Le SDK réactive le component updater et, sous Windows, force une analyse rapide des mises à jour, pour que le moteur enregistre le CDM.

Cela compte aussi au-delà de la vidéo. Le fait que le key system Widevine se résolve ou non est une information de plus qu'une page peut lire, et un Chrome incapable d'y répondre ne ressemble pas à Chrome.

Cas d'usage

QA de streaming

Testez la lecture, les droits d'accès et l'interface du lecteur sur votre propre catalogue protégé par DRM.

Surveillance de médias

Des vérifications automatisées sur des pages qui lisent des vidéos protégées.

Un persona Chrome complet

Gardez la réponse EME cohérente avec celle d'un vrai Chrome, même si vous ne lisez jamais de vidéo.

Clearcote est conçu pour la confidentialité, les tests, la recherche et l'automatisation licite. Vous êtes responsable de l'usage que vous en faites et du respect des conditions d'utilisation des sites que vous visitez.

Offres qui l'incluent

Dans toutes les formules, à activer vous-même, avec une lecture en sécurité logicielle (L3).

Comparer les offres

FAQ

Comment activer Widevine dans Playwright ?

Lancez le navigateur avec le SDK Clearcote et passez widevine=True (Python : le launch() sync ou un contexte persistant) ou widevine: true (Node, launchPersistentContext). Le SDK télécharge le CDM une fois, le vérifie, l'installe dans le profil et l'active. Le SDK .NET n'a pas encore d'option Widevine.

Pourquoi Chromium open source ne lit-il pas les vidéos DRM ?

Le CDM Widevine est propriétaire et ne peut pas être livré dans un build open source ; sans lui, la lecture DRM et la requête de key system EME échouent toutes les deux.

Clearcote inclut-il le CDM ?

Non. Le CDM est récupéré depuis le serveur de composants de Google quand vous activez l'option, de la même manière que Chrome standard le reçoit. Clearcote ne le distribue jamais.

Quel niveau de sécurité est pris en charge ?

L3, sécurisé par logiciel. Le niveau L1, sécurisé par le matériel, que certains services exigent pour les hautes résolutions, n'entre pas dans le périmètre.

Ai-je besoin d'un profil persistant ?

Il faut un profil, mais pas forcément un profil conservé. Le CDM est installé dans le profil : en Python, le profil jetable derrière le launch() sync fonctionne aussi bien que launch_persistent_context (le launch() async est en navigation privée) ; en Node, utilisez launchPersistentContext. Seul le lancement en navigation privée (ephemeral_profile=False) ne peut pas l'accueillir.

Aller plus loin dans la documentation

Fonctionnalités associées

Essayer Clearcote

S'utilise tel quel avec Playwright et Puppeteer, cohérent jusqu'au handshake TLS, avec un build open source comme point de départ.

Gratuit pour un navigateur avec GitHub. Sans carte.