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 resolvesPoints 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 offresFAQ
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
Chargez des extensions décompressées Manifest V2 et V3 au lancement, en headed ou en headless, sous Windows et Linux.
Un Chromium prêt à brancher sur Playwright et Puppeteer : un seul import à changer en Python, Node ou .NET, avec le navigateur téléchargé et vérifié par SHA-256 pour vous.
Canvas, WebGL, WebGPU, audio, polices, écran et matériel dérivés d'un seul seed dans le moteur C++, avec la locale et le fuseau horaire assortis : chaque surface concorde avec toutes les autres.
Un seed par compte : le même appareil à chaque session, un autre pour le compte suivant, avec des cookies et un stockage qui persistent d'une exécution à l'autre.
À lire aussi
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.