返回博客
平台

Widevine DRM 设置:无头浏览器视频内容

在 BotBrowser 中配置 Widevine DRM,在无头环境中访问受保护的视频内容。

概述

Widevine 是 Google 的数字版权管理系统,被流媒体平台广泛使用。BotBrowser 内置了 Widevine CDM 库,DRM 保护的视频内容无需手动配置即可正常工作。

基本用法

chrome --bot-profile="/profiles/windows-chrome-122.enc" \
       --user-data-dir="$(mktemp -d)"

BotBrowser 可以通过 EME 协商 Widevine 许可证、解密并播放 DRM 保护的视频,并报告正确的 requestMediaKeySystemAccess 能力。

验证 Widevine 支持

const { chromium } = require('playwright-core');

const browser = await chromium.launch({
  executablePath: '/path/to/botbrowser/chrome',
  args: ['--bot-profile=/profiles/windows-chrome-122.enc'],
  headless: true,
});

const page = await (await browser.newContext()).newPage();
const widevine = await page.evaluate(async () => {
  try {
    const config = [{
      initDataTypes: ['cenc'],
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.42E01E"',
        robustness: 'SW_SECURE_DECODE',
      }],
    }];
    await navigator.requestMediaKeySystemAccess('com.widevine.alpha', config);
    return { supported: true };
  } catch (e) {
    return { supported: false, error: e.message };
  }
});
console.log('Widevine:', widevine);
await browser.close();

无头模式下的视频播放

const browser = await chromium.launch({
  executablePath: '/path/to/botbrowser/chrome',
  args: [
    '--bot-profile=/profiles/windows-chrome-122.enc',
    '--autoplay-policy=no-user-gesture-required',
  ],
  headless: true,
});

const page = await (await browser.newContext()).newPage();
await page.goto('https://example-streaming-site.com/video');
await page.waitForSelector('video');

--autoplay-policy=no-user-gesture-required 参数允许视频在无用户交互时自动播放。

DRM 安全级别

BotBrowser 在无头模式下以 Widevine L3(软件级别)运行。指纹配置文件控制浏览器如何报告 DRM 能力,匹配真实平台行为。

故障排除

"No key system supported":验证 Widevine CDM 库是否存在于 BotBrowser 目录中。

视频播放但无画面:检查 video.readyStatevideo.currentTime 确认播放是否正常进行。

开始使用

  1. GitHub 下载 BotBrowser
  2. 使用上述能力检查脚本验证 Widevine 支持
  3. 无头视频播放使用 --autoplay-policy=no-user-gesture-required
#widevine#drm#video#streaming#platform