You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Selenium能截取Widevine DRM保护视频?其截图机制是什么?

问题解答

一、ChromeDriver + Selenium 能截取Widevine DRM视频的原因

ChromeDriver的截图能力依赖**Chrome DevTools Protocol(CDP)**的Page.captureScreenshot接口,它直接从Chrome浏览器的渲染进程内部获取已经完成渲染的页面像素数据,而非通过操作系统的显存抓取画面。

Widevine DRM的防截屏机制主要针对操作系统级别的屏幕捕获工具(比如Windows原生截图、第三方截图软件),这类工具需要从显存中读取帧数据,DRM会对这一环节做屏蔽,导致视频区域黑屏。但CDP的截图是从Chrome内部的渲染缓冲区直接提取像素,Widevine在ChromeDriver默认运行环境下并未对这种内部捕获做限制,因此能完整获取包括DRM视频在内的页面内容。

另外,ChromeDriver默认会禁用硬件加速渲染(部分场景下),这也可能让Widevine的视频帧以软件渲染的方式存在于Chrome的内部缓冲区中,进一步降低了被DRM拦截的概率。

二、其他工具无法捕获的原因

  • Windows原生截图:属于系统级捕获,依赖读取显存数据,Widevine的DRM保护机制会阻止这类操作,导致视频区域黑屏。
  • EdgeDriver + PlayReady:微软针对PlayReady DRM在EdgeDriver中做了特殊限制,即使通过CDP接口截图,DRM也会屏蔽视频帧的输出,因此无法捕获。
  • html2canvas:它是基于DOM解析和Canvas绘制的工具,只能捕获网页DOM元素和CSS渲染的内容,无法访问浏览器媒体进程渲染的视频帧(尤其是DRM保护的视频帧,这类帧不会暴露在DOM结构中),因此无法捕获视频内容。

三、Selenium + ChromeDriver的截图机制

Selenium本身并不直接实现截图功能,它只是作为中间层调用ChromeDriver提供的能力,具体流程如下:

  1. Selenium调用ChromeDriver的接口,触发截图请求;
  2. ChromeDriver通过CDP向Chrome的渲染进程发送Page.captureScreenshot命令;
  3. Chrome渲染进程将当前页面的所有渲染内容(包括视频帧)转换为像素数据;
  4. 像素数据被返回给ChromeDriver,再由Selenium保存为图片文件(比如调用get_screenshot_as_file()时)。

内容的提问来源于stack exchange,提问作者SamTest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:59:56