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.
38 921 lignes entre Chromium d'origine et Clearcote Pro.
C'est l'écart entre le build Pro et le Chromium livré par Google. Chaque valeur qu'un site peut lire est définie là où Chromium la calcule, si bien que la page, ses workers et ses iframes décrivent tous le même appareil.
- Canvas
- WebGL
- WebGPU
- Audio
- Polices
- Écran et fenêtre
- WebRTC
- TLS
- Client hints
- Timing des saisies
- Voix et codecs
Build Pro, compté sur sa pile de patchs r57 (Chromium 156.0.8078.47). Le build ouvert gratuit est un ensemble de patchs plus restreint et public.
345 files changed, 35915 insertions(+), 3006 deletions(-)
240 patchs
Fichiers modifiés, par domaine
- Moteur de rendu (Blink)118
- Navigateur (chrome/)52
- Couche content42
- Composants39
- Pile réseau22
- Interface et fenêtres14
- TLS (BoringSSL)11
- V8 et URL17
- Tout le reste30
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'une seule seed dans le moteur C++, avec la locale et le fuseau horaire assortis : chaque surface concorde avec toutes les autres.
Une 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 : GitHub, une vérification de carte ou un compte Google d'entreprise. Jamais débité.