如何使用javascript浏览器端获取视频卡驱动程序名称?

jsp*_*blm 2 javascript browser firefox html5 google-chrome

我希望得到一个字符串:英特尔开源技术中心Mesa DRI英特尔(R)HD Graphics 520(Skylake GT2)

仅在浏览器上使用javascript.我知道来自augur.io的库可以找到该值,但我需要一个开源解决方案或者知道可以使用什么js方法.

gma*_*man 5

您可以使用WebGL的WEBGL_debug_renderer_info扩展名.虽然(a)用户可能没有WebGL,(b)根据浏览器的不同,扩展可能不可用.

function getVideoCardInfo() {
  const gl = document.createElement('canvas').getContext('webgl');
  if (!gl) {
    return {
      error: "no webgl",
    };
  }
  const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
  return debugInfo ? {
    vendor: gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL),
    renderer:  gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL),
  } : {
    error: "no WEBGL_debug_renderer_info",
  };
}

console.log(getVideoCardInfo());
Run Code Online (Sandbox Code Playgroud)

根据@jaromanda X的评论,这个扩展是有争议的.有些人认为知道GPU是一个隐私问题.例如,MacPro拥有(或拥有)仅MacPro的GPU.MacPro就像一台价值6000美元的机器,所以通过了解这个人的GPU,你就会知道他们有了★.就像"如果GPU = MacPro的GPU然后展示广告的昂贵的东西".同样,它是识别您的特定机器的另一条信息.

反驳的论点很多

  • 你可以在某种程度上通过检查webgl参数来判断用户是否拥有高端GPU,例如最大纹理大小,支持的制服数量等等.使WebGL有用所需的东西.

  • 关于使用信息来识别机器,您可以通过指纹识别WebGL参数和渲染工件来获取大部分信息.

  • 对于技术支持,了解用户的GPU并要求非技术用户挖掘他们的系统以找出它并不是很有帮助通常很重要.

  • 一些驱动程序有错误,虽然浏览器的工作是解决这些错误,但修复错误通常需要3到6个月,并且修复程序会渗透到浏览器的发布版本.与此同时,公司需要一种解决错误的方法,这些错误通常采用"如果GPU = X做Y"的形式,其中Y可以是"使用不同技术"到"不为此用户使用WebGL"的任何内容.这就是谷歌地图的功能.如果已知特定GPU /驱动程序不稳定,那么Google地图将回归到功能少得多的canvas2d版本.

  • 关于最后2点,许多网站尽可能地跟踪错误和/或崩溃.通过跟踪GPU,他们可以看到崩溃是否与特定GPU /驱动程序相关并实施变通方法.

注意:SO真的不是讨论这个扩展是好还是坏的地方.以上信息大部分仅供参考.双方都有其优点.