一个反常识: 在 Chrome 浏览器里如何拿到用户最真实的 CPU 和其他硬件信息(不走 UA

161 天前
 RiverRay

前端老鸟都知道一个常识

谷歌浏览器里面是拿不到真实 CPU 和硬件信息的

(:UA 那个很容易伪造好吧

今天再给你一个反常识:

其实,Chromium 内置了一个系统级插件。

这个插件允许 *.google.com 网站获取宿主机 CPU 信息

去 Chromium 源码里找找,发现插件 ID 是:nkeimhogjdpnpccoofpliimaahmaaome 。

而且,这个插件还能对外通信

so ,骚操作来了

我们可以随便打开一个 Google 的网站在 console 里面输入:

chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome',
{method: 'cpu.getInfo'},
response => console.table(response));

CPU 、进程还有负载 一五一十的就有了

看源代码,这个内置插件里面还暴露了不少其他方法,可以自己探索玩玩

说人话:

如果你做的是浏览器扩展,完全可以获取到宿主机的 CPU 还有其他硬件信息的

哈哈哈哈哈

24339 次点击
所在节点    Chrome
147 条回复
zhangdp
161 天前
@RiverRay 申明 google.com 权限不需要打开 google.com 网站就能执行?另外插件自己本身就可以调用"system.cpu"API 可以获取 cpu 等信息了。
blubzz
161 天前
那么类如 360 自家的浏览器的,访问特定的网站是不是也可以获取了?
nziu
161 天前
这不是一个公开的 api ?,也别说什么开源并不等于有人看,这代码截图都贴上了不也没人看。
https://developer.chrome.com/docs/extensions/reference/api/system/cpu?hl=zh-cn
zeR0f1re
161 天前
@nziu 这个是插件的权限,问题是我没安装 google 的插件,它凭什么没通知就获取我的权限
SkywalkerJi
161 天前
in Microsoft Edge this capability is also available exclusively to *.google.com domains

厉害了微软
lc4t
161 天前
Arc 也是可以的
webbillion
161 天前
63 楼是谷歌不作恶的坚决维护者?
hez2010
161 天前
@SkywalkerJi edge 用的也是 chromium 内核,如果 ms 压根都不知道这个 api 的存在的话,自然也保留着 chromium 默认的行为。
9ki
161 天前
之前发帖子说 google 屏蔽疑似主动屏蔽某些搜索结果还被爱自由人士喷了呢 /1055707 某些人被洗脑的太严重了..
Biggoldfish
161 天前
你都装了 Chrome 了 Google 要收集你硬件信息搞用户画像的话直接用 Chrome 读取上传不就完了,搞个插件只对 google.com 生效然后等着用户访问网页再去读取上传?
codehz
161 天前
@Biggoldfish 这里的问题是给 google meets 提供了竞争优势,其他基于网页的在线会议软件都没法通过这个来获取 cpu 信息来调试错误
SkywalkerJi
161 天前
@hez2010 #68 证明了大家搬项目时并不会把代码都看一边,也不会全局替换上家的名字
cat9life
161 天前
同样,chrome 和 edge 都复现成功
skadi
161 天前
在 g 的首页复现成功.
kkocdko
161 天前
using ungoogled-chromium

chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome',
{method: 'cpu.getInfo'},
response => console.table(response));

VM62:1 Uncaught TypeError: Cannot read properties of undefined (reading 'sendMessage')
at <anonymous>:1:16
rdZZZ
161 天前
https://developer.chrome.com/docs/extensions/reference/api/system/cpu#type-CpuInfo

这 API 不是早就有了,不光 cpu ,显示器、内存、存储都能查,也就是说任何 chrome 扩展都有能力拿到,只是 google 恰好把它给暴露出去了
IDKAFK
161 天前
@satoru HN 上的来源不是那条推文吗?昨晚发布的
boywang004
161 天前
Version 126.0.6478.127 (Official Build) (arm64)

复现成功,可以可以。

```
value
:
archName
:
"arm64"
features
:
[]
modelName
:
"Apple M2 Max"
numOfProcessors
:
12
processors
:
(12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
temperatures
:
[]
[[Prototype]]
:
Object
```
daidr
161 天前
如果是扩展,本身 chrome 就提供了 cpu.getInfo 方法让你拿到完整的 CPU 信息

如果是网页,只有 google 自己的白名单域名会注入 chrome.runtime ,其他网页你怎么搞都不可能拿到这玩意
Johnathan
161 天前
@kkocdko 我也是这个报错!没有成功

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1056113

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX