本文へスキップ
メディア · EME · Widevine L3

Widevine DRM を、自動化した Chromium で

オープンソースの Chromium ビルドには Widevine CDM が含まれていないため、DRM 動画は再生に失敗し、requestMediaKeySystemAccess('com.widevine.alpha') も拒否されます(標準のデスクトップ版 Chrome なら、通常は解決されるところです)。起動時に widevine を渡せば、SDK が Google のコンポーネントサーバーから CDM を取得し、検証して有効化します。

すべてのプランで、オプトインで利用可能。

起動オプション 1 つ

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

主なポイント

Chrome と同じ方法で取得

CDM は、標準の Chrome と同じように Google 自身のコンポーネントサーバーから取得され、バージョンごとに 1 回だけダウンロードされます。Clearcote が CDM を配布することはありません。

使用前に検証

CDM はネイティブライブラリなので、ダウンロードしたファイルは SHA-256 で検証され、ハッシュがない場合は即座に拒否されます。

キャッシュして再利用

~/.clearcote/WidevineCdm 以下に保存されるので、ダウンロードはバージョンごとに 1 回です。fetchWidevine() で事前に取得しておけば、初回起動時のダウンロードを省けます。ただし、起動のたびに、このマシンから Google へ直接、短いバージョン確認が 1 回行われます。

整合性のある EME の応答

実際の Chrome では、Widevine のキーシステムの問い合わせが解決されます。CDM が配置されていれば、Clearcote でも同じです。

失敗しても止まらない

CDM を取得できなかった場合も、起動は失敗せず、DRM なしで続行されます。

L3 再生

ソフトウェアセキュア(L3)での再生です。ハードウェアセキュアの L1 は対象外です。

オプトインである理由

Google の CDM はクローズドなバイナリです。オープンソースのオープンビルドには含められず、Clearcote はライセンスビルドでも再配布していません。そのため、ブラウザには EME の仕組みがコンパイル済みで含まれていますが CDM は含まれておらず、ダウンロードはご自身で実行する形になります。

CDM はプロファイルの中に置かれます。Python では launch_persistent_context でも、使い捨てプロファイルで動く launch() でも使えます(同期 API の場合。非同期 API の launch() はシークレットモードなので、そちらでは launch_persistent_context を使ってください)。Node では launchPersistentContext を使います。シークレットモードでの起動(ephemeral_profile=False)では使えません。SDK はコンポーネントアップデーターを再度有効にし、Windows では簡易的な更新スキャンを強制実行して、エンジンに CDM を登録させます。

これは動画以外でも重要です。Widevine のキーシステムが解決されるかどうかも、ページが読み取れる情報の 1 つであり、それに答えられない Chrome は Chrome らしく見えません。

主な用途

ストリーミングの QA

自社の DRM 保護コンテンツで、再生、視聴権限、プレーヤー UI をテストします。

メディアの監視

保護された動画を再生するページの自動チェック。

欠けのない Chrome ペルソナ

動画を一切再生しない場合でも、EME の応答を実際の Chrome と一致させておけます。

Clearcote は、プライバシー保護、テスト、研究、合法的な自動化のために作られています。どう使うか、そしてアクセスするサイトの規約を守ることは、利用者ご自身の責任です。

対象プラン

すべてのプランで、オプトインで利用できます。再生はソフトウェアセキュア(L3)です。

プランを比較

よくある質問

Playwright で Widevine を有効にするには?

Clearcote SDK で起動し、widevine=True(Python では同期 API の launch() または永続コンテキストで)か widevine: true(Node では launchPersistentContext で)を渡します。SDK が CDM を一度だけダウンロードして検証し、プロファイルに配置して有効化します。.NET SDK にはまだ Widevine のオプションがありません。

オープンソースの Chromium で DRM 動画が再生できないのはなぜですか?

Widevine CDM はプロプライエタリなので、オープンソースのビルドには同梱できません。CDM がなければ、DRM の再生も EME のキーシステムの問い合わせも失敗します。

Clearcote に CDM は含まれていますか?

いいえ。CDM はオプトインしたときに、標準の Chrome と同じ方法で Google のコンポーネントサーバーから取得されます。Clearcote が CDM を配布することはありません。

どのセキュリティレベルに対応していますか?

ソフトウェアセキュアの L3 です。一部のサービスが高解像度の再生に求めるハードウェアセキュアの L1 は対象外です。

永続プロファイルは必要ですか?

プロファイルは必要ですが、保存しておくプロファイルである必要はありません。CDM はプロファイルにインストールされるため、Python では launch_persistent_context だけでなく、同期 API の launch() が使う使い捨てプロファイルでも動作します(非同期 API の launch() はシークレットモードです)。Node では launchPersistentContext を使ってください。使えないのは、シークレットモードでの起動(ephemeral_profile=False)だけです。

ドキュメントで詳しく

関連する機能

Clearcote を試す

Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。まずはオープンソースのビルドから始められます。

GitHub があればブラウザ 1 つまで無料。カード登録は不要です。