本文へスキップ
メディア · 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 は、プライバシー保護、テスト、研究、合法的な自動化のために作られています。どう使うか、そしてアクセスするサイトの規約を守ることは、利用者ご自身の責任です。

差分

標準の Chromium と Clearcote Pro の差は 38,921 行。

これが、Pro ビルドと Google が配布する Chromium との距離です。サイトが読み取れる値はすべて Chromium が計算する場所で設定されるため、ページ、その Worker、iframe がすべて同じデバイスを示します。

  • Canvas
  • WebGL
  • WebGPU
  • オーディオ
  • フォント
  • 画面とウィンドウ
  • WebRTC
  • TLS
  • Client Hints
  • 入力タイミング
  • 音声とコーデック
オープンビルドのパッチを GitHub で読む

Pro ビルド、r57 のパッチスタック(Chromium 156.0.8078.47)から集計。無料のオープンビルドは、より小さな公開パッチセットです。

Chromium 156.0.8078.47 → Clearcote Pro r57

345 files changed, 35915 insertions(+), 3006 deletions(-)

240 件のパッチ

領域別の変更ファイル数

  • レンダリングエンジン(Blink)118
  • ブラウザ(chrome/)52
  • Content レイヤー42
  • コンポーネント39
  • ネットワークスタック22
  • UI とウィンドウ14
  • TLS(BoringSSL)11
  • V8 と URL17
  • その他30

対象プラン

すべてのプランで、オプトインで利用できます。再生はソフトウェアセキュア(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 ハンドシェイクまで整合性を保ちます。まずはオープンソースのビルドから始められます。

ブラウザ 1 つまで無料:GitHub、カード確認、または会社の Google アカウント。請求は一切ありません。