前端老鸟都知道一个常识
谷歌浏览器里面是拿不到真实 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 还有其他硬件信息的
哈哈哈哈哈
1
itakeman 141 天前 via Android
会不会泄露用户数据呢?
|
2
RiverRay OP 只能说插件权限不要乱给,谷歌扩展能干的事情蛮多的
|
3
luzemin 141 天前
骚操作
|
4
cslive 141 天前
真的是骚操作,有没有办法屏蔽这个东西
|
5
MrSheng 141 天前
|
6
vueli 141 天前
学到了,好骚
|
7
0o0O0o0O0o 141 天前 via iPhone 3
|
8
PhosphorLin 140 天前 14
“不作恶”
|
9
shuax 140 天前 55
only *.google.com can do
|
10
ersic 140 天前 1
新的恶龙
|
11
geelaw 140 天前 3
这件事情的幽默之处在于 MS Edge 也给 google.com 高权限。来源是 https://x.com/lcasdev/status/1810753964020773316 但我没有验证
|
12
drymonfidelia 140 天前 via iPhone 1
所以说浏览器插件能不装尽量不装,小公司、个人开发者的必须亲自审核代码后禁用更新不然大概率被卖掉
|
13
nealHuang 140 天前
m2pro 执行报错
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist. |
14
EspoirBao 140 天前
@nealHuang 好像是带尾缀的不行,只从浏览器端判断 google.com 结尾的
|
15
AlexMeng 140 天前
试了一下,chrome 和 edge 都可以
|
16
Ritter 140 天前
666
|
17
Felldeadbird 140 天前
6 ,真的可以。骚啊。
|
18
0x90200 140 天前
骚的一批
|
19
elboble 140 天前
国内用户安全了:-:
|
20
Ghostsss 140 天前 2
只有*.google.com 才可以,.hk 就不行了。看来这几个知名公司,没一个好的。
|
21
w568w 140 天前
Only Google Can Do!
这是给 Firefox 送子弹啊 |
22
qinjiang 140 天前
试了下可以复现,谷歌好样的!
|
23
aqqwiyth 140 天前 2
这个插件的申明.
https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/resources/hangout_services/manifest_v2.json;l=1;drc=b0b102b6582fe1fca4a5eb6b156f198113674ec7 源码的解析 https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/resources/hangout_services/thunk.js ... if (method === 'cpu.getInfo') { chrome.system.cpu.getInfo(doSendResponse); return true; } ... chrome 本质上是 C++写的 很早以前还支持 C++的扩展安装 , 有条件可以看看 chromimu 的源码. |
24
Greendays 140 天前
chrome os 好像就是可以获取到性能信息的,也是在浏览器上显示。不知道有没有关系。
|
25
wst 140 天前
Arc 浏览器也可以,这是放到内核里了吗...
|
26
Cooky 140 天前 1
看来确实得切换到 ungoogled-chromium
|
27
proxytoworld 140 天前
看代码 2013 年就写了
|
28
clifftts 140 天前
收集客户端硬件信息,为了干啥
|
29
body007 140 天前 1
我测了下,只能在访问*.google.com 网址时在控制台能成功,其他域名不行。
|
30
registerrr 140 天前
TypeError: Cannot read properties of undefined (reading 'sendMessage')
Google 首页,Gmail 都没成功 |
32
cheneydog 140 天前
试了 chrome 和 edge 可以,360 极速不行。
|
33
HFX3389 140 天前
@drymonfidelia #12 但这是 Chrome 自带的,你装不装插件它都在
|
34
71oG4t5Zq6Bgx4tE 140 天前
没复现出来。。。
|
35
HFX3389 140 天前
@registerrr #30 你的 Google 首页是不是带后缀的?这个只接受.com 后缀的,不能带其他的
|
36
HK560 140 天前
edge 也是生效的
|
37
huBane 140 天前
|
38
opengps 140 天前
插件远比网页的级别高,毕竟直接用了本地环境运行,可调用资源甚至接近浏览器的级别,算是一种客户端应用
|
39
gongquanlin 140 天前
google.com 可以,google.com.hk 不可以,哈哈哈
|
40
dufu1991 140 天前
@daba 记得 ncr ,不然会跳转到非 google.com
|
41
D33109 140 天前
观察下来在 2013 年貌似就有这个插件了?
|
42
drymonfidelia 140 天前
|
43
71oG4t5Zq6Bgx4tE 140 天前
|
44
dode 140 天前
差,谷歌给自己信息收集开后门
|
45
Jessec 140 天前
哈哈,但我用 firefox
|
46
unique0lai 140 天前
@clifftts 大型广告公司恨不得搜集你的所有衣食住行数据,然后拿去给你做用户画像,最后拿去卖广告或是做金融服务。。。
|
47
zhangdp 140 天前
只能在 google.com 网页下获取,又有何用
|
48
geelaw 140 天前 via iPhone
@drymonfidelia #42 和 Edge 保护不保护隐私没啥关系,觉得幽默是因为通常会假设 MS 会把各种 Google 专有的东西删除或者换成 MS 专有的。
@zhangdp #47 对 Google 有用。 |
49
RiverRay OP @zhangdp 任何浏览器插件,只要申明 google.com 的的权限,都可以获取~(:这个操作你是无感的
|
50
chenliangngng 140 天前
@zhangdp 当你安装插件,大概率是挂梯子走谷歌官方的插件中心,这个时候安装完插件已经拿到你所有数据了。这些硬件数据拿一次就可以了
|
51
cnt2ex 140 天前
试了一下 ungoogled chromium 无法获取,chrome/brave 可以。
|
52
siteshen 140 天前
|
53
atuocn 140 天前 1
edge 也有🤣,edge://extensions-internals/ 可以发现更多
|
54
zaizaizai2333 140 天前 3
|
57
satoru 140 天前
https://news.ycombinator.com/item?id=40918052
报告,有人翻译了你的发现发到 Hacker News 上去了 |
58
showgood163 140 天前 1
ungoogled chromium 没有成功,提示
VM252:1 Uncaught TypeError: Cannot read properties of undefined (reading 'sendMessage') at <anonymous>:1:16 |
59
showgood163 140 天前
检查 chrome://extensions-internals/ 没有发现名称为 nkeimhogjdpnpccoofpliimaahmaaome 的插件
|
60
dante9 140 天前
|
61
zhangdp 140 天前
|
62
blubzz 140 天前
那么类如 360 自家的浏览器的,访问特定的网站是不是也可以获取了?
|
63
nziu 140 天前 1
这不是一个公开的 api ?,也别说什么开源并不等于有人看,这代码截图都贴上了不也没人看。
https://developer.chrome.com/docs/extensions/reference/api/system/cpu?hl=zh-cn |
65
SkywalkerJi 140 天前
in Microsoft Edge this capability is also available exclusively to *.google.com domains
厉害了微软 |
66
lc4t 140 天前
Arc 也是可以的
|
67
webbillion 140 天前 1
63 楼是谷歌不作恶的坚决维护者?
|
68
hez2010 140 天前
@SkywalkerJi edge 用的也是 chromium 内核,如果 ms 压根都不知道这个 api 的存在的话,自然也保留着 chromium 默认的行为。
|
69
9ki 140 天前
之前发帖子说 google 屏蔽疑似主动屏蔽某些搜索结果还被爱自由人士喷了呢 /1055707 某些人被洗脑的太严重了..
|
70
Biggoldfish 140 天前
你都装了 Chrome 了 Google 要收集你硬件信息搞用户画像的话直接用 Chrome 读取上传不就完了,搞个插件只对 google.com 生效然后等着用户访问网页再去读取上传?
|
71
codehz 140 天前
@Biggoldfish 这里的问题是给 google meets 提供了竞争优势,其他基于网页的在线会议软件都没法通过这个来获取 cpu 信息来调试错误
|
72
SkywalkerJi 140 天前 2
@hez2010 #68 证明了大家搬项目时并不会把代码都看一边,也不会全局替换上家的名字
|
73
cat9life 140 天前
同样,chrome 和 edge 都复现成功
|
74
skadi 140 天前
在 g 的首页复现成功.
|
75
kkocdko 140 天前
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 |
76
rdZZZ 140 天前
https://developer.chrome.com/docs/extensions/reference/api/system/cpu#type-CpuInfo
这 API 不是早就有了,不光 cpu ,显示器、内存、存储都能查,也就是说任何 chrome 扩展都有能力拿到,只是 google 恰好把它给暴露出去了 |
78
boywang004 140 天前
Version 126.0.6478.127 (Official Build) (arm64)
复现成功,可以可以。 ``` value : archName : "arm64" features : [] modelName : "Apple M2 Max" numOfProcessors : 12 processors : (12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] temperatures : [] [[Prototype]] : Object ``` |
79
daidr 140 天前 1
如果是扩展,本身 chrome 就提供了 cpu.getInfo 方法让你拿到完整的 CPU 信息
如果是网页,只有 google 自己的白名单域名会注入 chrome.runtime ,其他网页你怎么搞都不可能拿到这玩意 |
81
daidr 140 天前 1
@hez2010 runtime 暴露出去主要是可以给 what's new 或者扩展商店之类的页面用,比如检测扩展安装状态、在 what's new 里帮你改浏览器主题。
|
82
LingXingYue 140 天前
|
83
kylix 140 天前
确实可以,google.com 首页 复现成功
|
84
Garphy 140 天前
有时候可能有点用···
|
85
zaizaizai2333 140 天前
Marius Karnauskas
@karnauskas To report CPU/GPU load during Hangouts call - and probably adjust stream quality on the go. Luca Casonato 🏳️🌈 @lcasdev That’s not the point. The idea is good. The Google only implementation is not. 最后两句中文金句 |
86
drymonfidelia 140 天前 via iPhone 1
@satoru HN 上的源链接是昨天发的,OP 是今天的帖,明显是 OP 翻译别人的
|
87
SunOfHomeBoy 140 天前
chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome',
{method: 'cpu.getInfo'}, response => console.table(response)); 亲测可行! |
88
Akiya 140 天前
实测 Edge 在 Mac 上可以复现
|
89
piapia 140 天前
@0o0O0o0O0o zz 你咋啥都知道. tql
|
90
CloveAndCurrant 140 天前
opera 也可以复现成功
|
91
lixen9 140 天前
测试了下,获取的 cpu 信息不对,macos
|
93
pikko 140 天前
@nziu #63 extension 有额外权限能理解(暂且不说有没有控制硬件权限许可),而楼主说的这个,是不装插件,打开谷歌官网就能跳出来的 runtime 对象,妥妥的后门了。
google exlusive 后门 |
94
caqiko 140 天前 7
作为一个 Chrome Extension 开发者,我来解释一下:
1. Chromium 为浏览器扩展提供了很多 API ,其中包括 chrome.system.cpu 。这个 API 允许扩展访问 CPU 信息。 2. internal extensions:Google Chrome 自带了一些内部扩展( internal extensions ),如 Google Hangouts 和 PDF 预览功能等。这些扩展可以利用 Chrome 的各种 API 来实现其功能。 3. manifest.json:扩展的 manifest.json 文件是扩展的配置文件,其中定义了扩展的各种权限和行为。Google Hangouts 扩展在 manifest 中声明了相关的权限,以及在哪些页面(*.google.com )可以运行。这解释了为什么只有在*.google.com 页面可以获取。 4. background script:扩展的 background 脚本(如 trunk.js )是在后台运行的,可以持续监听和响应来自页面的消息。 5. message passing:扩展可以使用 chrome.runtime.sendMessage 和 chrome.runtime.onMessage 来实现消息传递。页面脚本 content-script 可以发送消息到 background script ,然后 background script 可以处理这些消息并返回响应。 综上所述,并不是只有 Google 有这个权限,所有的扩展都可以拿到这个功能。 |
96
sloknyyz 140 天前
你说错了一点,没有进程信息,那是处理器核心负载信息。
|
97
mizuhokaga 140 天前
win11 edge 在 https://www.google.com/
复现成功, 不过我用 Firefox |
98
pikko 140 天前 1
@caqiko #94 题主探讨的是访问谷歌网页就暴露一个 runtime 对象了,都不到安装插件那一步。且只有谷歌有。
也就是谷歌就能看你 cpu 来做数据收集,别的网站不行。 |
99
poorcai 140 天前 via Android
我已经在尝试着转向 firefox 了
|
100
asdjgfr 140 天前
厉害了,真能复现,看 chromium 源码应该是 11 年前加的,9 年前改成 google 白名单,在 62 版本就有了
|