You need to enable JavaScript to run this app. 如何使用WebRTC获取当前电脑可共享应用列表,替代浏览器默认共享弹窗
优惠活动
大模型
产品
解决方案
定价
更多

如何使用WebRTC获取当前电脑可共享应用列表,替代浏览器默认共享弹窗

这是W3C为保障用户安全设计的强制沙箱规则:所有合规的Web应用,都不允许页面JS直接枚举系统层面的可共享窗口、应用列表,防止恶意网站偷偷获取用户当前打开的应用信息、甚至未经授权截取屏幕内容。navigator.mediaDevices.getDisplayMedia()触发的默认选择弹窗,是规范要求的必备用户授权环节,没有公开的Web API可以直接拉取这个弹窗里展示的数据源列表。

可落地的适配方案

桌面端打包应用场景(Electron/Tauri)

如果你的产品是打包为桌面客户端运行,可以完全绕开浏览器沙箱限制:

  • Electron直接调用内置的desktopCapturer API,传入types: ['window', 'screen']参数,即可获取所有可共享源的完整信息,包括窗口标题、实时缩略图、唯一标识ID
  • Tauri可以对接系统原生的窗口枚举接口,获取所有前台应用的元数据
  • 拿到列表后在自定义UI渲染,用户选中对应源后,把源ID传给WebRTC捕获接口,即可替代默认弹窗逻辑。

配套Chromium扩展场景

如果必须在普通网页环境实现,可以开发配套的浏览器扩展申请特殊权限:

  • 扩展申请desktopCapture权限后,可获取系统级的可共享源枚举能力,把列表数据回传给网页端
  • 用户在自定义UI完成选择后,把选中的源ID传给扩展,触发WebRTC的捕获流程即可
  • 注意:该方案仅对安装了对应扩展的用户生效,且扩展需要通过浏览器应用商店审核才能分发。

纯Web端兼容方案

如果无法开发扩展、也不是桌面端应用,只能在现有规范下尽可能优化体验:

  • 调用getDisplayMedia()前,在自定义UI中提前告知用户即将弹出系统共享选择窗口,引导用户完成选择
  • 可通过接口参数优化弹窗体验,比如传入preferCurrentTab: true优先引导用户共享当前标签页,减少操作步骤
  • 目前现代浏览器已经封堵了所有纯JS绕过默认弹窗的非规范方案,这类方法要么仅在老旧版本生效,要么存在安全风险,不建议生产环境使用。

WebRTC默认弹窗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 06:45:02