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)だけです。
ドキュメントで詳しく
関連する機能
展開済みの Manifest V2・V3 拡張機能を起動時に読み込みます。ヘッドありでもヘッドレスでも、Windows と Linux の両方で使えます。
Playwright と Puppeteer にそのまま差し替えられる Chromium。Python、Node、.NET で import を 1 行変えるだけで、ブラウザのダウンロードと SHA-256 の検証は SDK が行います。
canvas、WebGL、WebGPU、オーディオ、フォント、画面、ハードウェアを C++ のエンジン内で 1 つのシードから導出し、ロケールとタイムゾーンもそれに合わせます。すべての項目が互いに整合します。
アカウントごとに 1 つのシード。セッションのたびに同じデバイス、次のアカウントには別のデバイス。Cookie とストレージは実行をまたいで保持されます。
関連記事
Clearcote を試す
Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。まずはオープンソースのビルドから始められます。
GitHub があればブラウザ 1 つまで無料。カード登録は不要です。