使用 WebUSB 的 getDevices w/o 提示信息查询所有可用设备?

Querying all available devices using WebUSB's getDevices w/o prompt message?

刚刚发现新的 WebUSB API,它允许应用程序访问插入用户计算机的特定设备。

作为我开发的一部分,我想映射用户的设备(例如,通过查询他们的 VendorID 和 ProductID 来显示连接设备的列表)。

我注意到,为了查询所有用户的可用设备,我必须使用以下代码:navigator.usb.requestDevice({filters:[]}).

此代码向用户提示权限消息,必须为会话启用特定设备。

我的问题 - 是否可以在未经许可的情况下查询供应商 ID 和产品 ID? (当然没有任何尝试使用实际设备,只是查询它)。

没有。要访问设备,您必须使用 requestDevice。这是 API 的核心安全方面之一。来自 the spec:

...This API...requires a similarly generic mechanism for preventing a malicious page from abusing a device.

The first of these protections is the requestDevice() function. The UA may display a permission prompt when this function is called. Even for a non-malicious page this action also preserves user privacy by preventing a site from connecting to a device before the user is aware that such a connection is possible.

即使用户 拥有 给定设备这一事实也是敏感信息,您的 page/app 不应该在没有用户许可的情况下访问。