有没有办法绕过 Chrome 浏览器上的 WebHid USB 限制?

Is there a way to bypass WebHid USB limitation on Chrome browser?

Chrome 89 人启动了 WebHid API,但存在安全限制。

限制包括:

  1. Javascript 切换浏览器标签时无法接收 USB Hid 数据。

  2. Javascript 用户打开时无法接收 USB Hid 数据 select html element

.....更多在link

Chromium 项目中有一个 commit 表示 The blocklist may be bypassed by passing allow_protected_reports=true when connecting to the devic.

有没有办法设置 allow_protected_reports=true 来绕过 UI 上的这些限制,例如 chrome://flags

相关link: https://web.dev/hid/#security-privacy

2021.10.28更新

MacOS BigSur 11.2.3

Chrome 版本 95.0.4638.54(正式版)(x86_64)

重现限制:

  1. Javascript cannot receive USB Hid data when user is opening select html element
   <select>
      <option> test </option>
    </select>
device.addEventListener("inputreport", (e) => {
        const data = e.data.buffer;
        console.log(new Date(), "received data", data);
      });

当用户点击“测试”select元素打开它时,它将停止接收数据。

working example on codesandbox

  1. Javascript cannot receive USB Hid data when browser tab switched.

我现在无法在我的 mac+chrome 上每次都重现它,我确实在一个简单的测试环境中通过 API device.addEventListener("inputreport",...) 接收了隐藏设备数据,当选项卡切换。 但我发现它在我的实际生产 React.js 应用程序中停止了,其中 运行 更多 javascript 和计时器( setInterval )。

不,没有用于绕过 HID 黑名单的 chrome://flags 标志,考虑到风险,我们不打算添加一个。 allow_protected_reports 标志由 Chrome 的内部 HID 客户端使用,不应为 Javascript 客户端启用。 (如果脚本可以访问受保护的报告,那么实现键盘记录器来捕获密码和其他私人信息就变得微不足道了。)

如果您觉得 HID 阻止列表阻止了它不应该阻止的内容,请编辑您的问题以分享有关您尝试访问的设备的更多信息。您还可以在托管黑名单的 WebHID spec tracker 上提交错误。

Javascript cannot receive USB Hid data when browser tab switched.

这不是故意的,我们预计应用程序需要后台访问 HID 设备才能在选项卡不可见时正常运行。您能否编辑您的问题以添加有关您测试此的 OS(和 OS 版本)的更多信息? (或归档一个Chromium bug

Javascript cannot receive USB Hid data when user is opening select html element

我不确定这是什么意思,你能提供一个演示这个问题的测试用例吗?