V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Get Google Chrome
Vimium · 在 Chrome 里使用 vim 快捷键
RiverRay
V2EX  ›  Chrome

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

  RiverRay · 2024-07-10 08:49:32 +08:00 · 27802 次点击
这是一个创建于 393 天前的主题,其中的信息可能已经有所发展或是发生改变。

前端老鸟都知道一个常识

谷歌浏览器里面是拿不到真实 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 还有其他硬件信息的

哈哈哈哈哈

147 条回复    2024-07-22 09:21:14 +08:00
1  2  
itakeman
    1
itakeman  
   2024-07-10 08:53:00 +08:00 via Android
会不会泄露用户数据呢?
RiverRay
    2
RiverRay  
OP
   2024-07-10 08:53:37 +08:00
只能说插件权限不要乱给,谷歌扩展能干的事情蛮多的
luzemin
    3
luzemin  
   2024-07-10 08:54:02 +08:00
骚操作
cslive
    4
cslive  
   2024-07-10 08:56:28 +08:00
真的是骚操作,有没有办法屏蔽这个东西
MrSheng
    5
MrSheng  
   2024-07-10 09:00:03 +08:00


的确可以,有点厉害。
vueli
    6
vueli  
   2024-07-10 09:00:10 +08:00
学到了,好骚
0o0O0o0O0o
    7
0o0O0o0O0o  
   2024-07-10 09:01:39 +08:00 via iPhone   ❤️ 3
PhosphorLin
    8
PhosphorLin  
   2024-07-10 09:06:47 +08:00   ❤️ 14
“不作恶”
shuax
    9
shuax  
   2024-07-10 09:08:04 +08:00   ❤️ 56
only *.google.com can do
ersic
    10
ersic  
   2024-07-10 09:08:42 +08:00   ❤️ 1
新的恶龙
geelaw
    11
geelaw  
   2024-07-10 09:13:01 +08:00   ❤️ 3
这件事情的幽默之处在于 MS Edge 也给 google.com 高权限。来源是 https://x.com/lcasdev/status/1810753964020773316 但我没有验证
drymonfidelia
    12
drymonfidelia  
   2024-07-10 09:14:16 +08:00 via iPhone   ❤️ 1
所以说浏览器插件能不装尽量不装,小公司、个人开发者的必须亲自审核代码后禁用更新不然大概率被卖掉
nealHuang
    13
nealHuang  
   2024-07-10 09:20:45 +08:00
m2pro 执行报错

Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
EspoirBao
    14
EspoirBao  
   2024-07-10 09:26:13 +08:00
@nealHuang 好像是带尾缀的不行,只从浏览器端判断 google.com 结尾的
AlexMeng
    15
AlexMeng  
   2024-07-10 09:29:42 +08:00
试了一下,chrome 和 edge 都可以
Ritter
    16
Ritter  
   2024-07-10 09:30:46 +08:00
666
Felldeadbird
    17
Felldeadbird  
   2024-07-10 09:33:00 +08:00
6 ,真的可以。骚啊。
0x90200
    18
0x90200  
   2024-07-10 09:34:41 +08:00
骚的一批
elboble
    19
elboble  
   2024-07-10 09:35:04 +08:00
国内用户安全了:-:
Ghostsss
    20
Ghostsss  
   2024-07-10 09:35:46 +08:00   ❤️ 2
只有*.google.com 才可以,.hk 就不行了。看来这几个知名公司,没一个好的。
w568w
    21
w568w  
   2024-07-10 09:37:19 +08:00
Only Google Can Do!

这是给 Firefox 送子弹啊
qinjiang
    22
qinjiang  
   2024-07-10 09:38:14 +08:00
试了下可以复现,谷歌好样的!
aqqwiyth
    23
aqqwiyth  
   2024-07-10 09:40:53 +08:00   ❤️ 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 的源码.
Greendays
    24
Greendays  
   2024-07-10 09:45:10 +08:00
chrome os 好像就是可以获取到性能信息的,也是在浏览器上显示。不知道有没有关系。
wst
    25
wst  
   2024-07-10 09:45:53 +08:00
Arc 浏览器也可以,这是放到内核里了吗...
Cooky
    26
Cooky  
   2024-07-10 09:46:31 +08:00   ❤️ 1
看来确实得切换到 ungoogled-chromium
proxytoworld
    27
proxytoworld  
   2024-07-10 09:48:51 +08:00
看代码 2013 年就写了
clifftts
    28
clifftts  
   2024-07-10 09:51:51 +08:00
收集客户端硬件信息,为了干啥
body007
    29
body007  
   2024-07-10 09:52:47 +08:00   ❤️ 1
我测了下,只能在访问*.google.com 网址时在控制台能成功,其他域名不行。
registerrr
    30
registerrr  
   2024-07-10 09:56:19 +08:00
TypeError: Cannot read properties of undefined (reading 'sendMessage')

Google 首页,Gmail 都没成功
lifei6671
    31
lifei6671  
   2024-07-10 09:59:25 +08:00
@geelaw 证实了,edge 浏览器也可以用这种方式后去 CPU 信息。😂
cheneydog
    32
cheneydog  
   2024-07-10 10:01:27 +08:00
试了 chrome 和 edge 可以,360 极速不行。
HFX3389
    33
HFX3389  
   2024-07-10 10:02:01 +08:00
@drymonfidelia #12 但这是 Chrome 自带的,你装不装插件它都在
71oG4t5Zq6Bgx4tE
    34
71oG4t5Zq6Bgx4tE  
   2024-07-10 10:03:02 +08:00
没复现出来。。。
HFX3389
    35
HFX3389  
   2024-07-10 10:03:15 +08:00
@registerrr #30 你的 Google 首页是不是带后缀的?这个只接受.com 后缀的,不能带其他的
HK560
    36
HK560  
   2024-07-10 10:06:51 +08:00
edge 也是生效的
opengps
    38
opengps  
   2024-07-10 10:08:34 +08:00
插件远比网页的级别高,毕竟直接用了本地环境运行,可调用资源甚至接近浏览器的级别,算是一种客户端应用
gongquanlin
    39
gongquanlin  
   2024-07-10 10:09:03 +08:00
google.com 可以,google.com.hk 不可以,哈哈哈
dufu1991
    40
dufu1991  
   2024-07-10 10:10:05 +08:00
@daba 记得 ncr ,不然会跳转到非 google.com
D33109
    41
D33109  
   2024-07-10 10:13:07 +08:00
观察下来在 2013 年貌似就有这个插件了?
drymonfidelia
    42
drymonfidelia  
   2024-07-10 10:13:45 +08:00
@lifei6671
@geelaw edge 不奇怪,毕竟 edge 是完全不管隐私保护的浏览器 /t/1000852
但是我用最新版 Brave 也复现了,这可是以隐私保护为最大卖点的浏览器
71oG4t5Zq6Bgx4tE
    43
71oG4t5Zq6Bgx4tE  
   2024-07-10 10:14:25 +08:00
dode
    44
dode  
   2024-07-10 10:15:23 +08:00
差,谷歌给自己信息收集开后门
Jessec
    45
Jessec  
   2024-07-10 10:18:30 +08:00
哈哈,但我用 firefox
unique0lai
    46
unique0lai  
   2024-07-10 10:30:11 +08:00
@clifftts 大型广告公司恨不得搜集你的所有衣食住行数据,然后拿去给你做用户画像,最后拿去卖广告或是做金融服务。。。
zhangdp
    47
zhangdp  
   2024-07-10 10:42:35 +08:00
只能在 google.com 网页下获取,又有何用
geelaw
    48
geelaw  
   2024-07-10 10:46:23 +08:00 via iPhone
@drymonfidelia #42 和 Edge 保护不保护隐私没啥关系,觉得幽默是因为通常会假设 MS 会把各种 Google 专有的东西删除或者换成 MS 专有的。

@zhangdp #47 对 Google 有用。
RiverRay
    49
RiverRay  
OP
   2024-07-10 10:47:16 +08:00   ❤️ 1
@zhangdp 任何浏览器插件,只要申明 google.com 的的权限,都可以获取~(:这个操作你是无感的
chenliangngng
    50
chenliangngng  
   2024-07-10 10:50:13 +08:00
@zhangdp 当你安装插件,大概率是挂梯子走谷歌官方的插件中心,这个时候安装完插件已经拿到你所有数据了。这些硬件数据拿一次就可以了
cnt2ex
    51
cnt2ex  
   2024-07-10 10:51:30 +08:00
试了一下 ungoogled chromium 无法获取,chrome/brave 可以。
siteshen
    52
siteshen  
   2024-07-10 10:51:58 +08:00
又一个支持逃离 Google 的论据:

google.com -> duckduckgo.com
Google Chrome -> Mozilla Firefox
atuocn
    53
atuocn  
   2024-07-10 10:54:22 +08:00   ❤️ 1
edge 也有🤣,edge://extensions-internals/ 可以发现更多
zaizaizai2333
    54
zaizaizai2333  
   2024-07-10 10:55:20 +08:00   ❤️ 3
@proxytoworld 果然证明,开源并不等于有人看。

这有啥,我们的 iOS 的 App 不需要任何权限,就能知道手机机型和手机颜色呢。

你 Chrome 再牛逼能知道我的电脑的颜色吗?
Reficul
    55
Reficul  
   2024-07-10 10:57:23 +08:00
@aqqwiyth #23

emmm, Google Hangouts 都被关掉了,这个插件还遗留着呢...
ysc3839
    56
ysc3839  
   2024-07-10 11:03:50 +08:00 via Android
@geelaw 属于是 100% backdoor-for-backdoor compatible 了
satoru
    57
satoru  
   2024-07-10 11:08:24 +08:00
https://news.ycombinator.com/item?id=40918052
报告,有人翻译了你的发现发到 Hacker News 上去了
6388xE5FRKTNUT9x
    58
6388xE5FRKTNUT9x  
   2024-07-10 11:15:27 +08:00   ❤️ 1
ungoogled chromium 没有成功,提示

VM252:1 Uncaught TypeError: Cannot read properties of undefined (reading 'sendMessage')
at <anonymous>:1:16
6388xE5FRKTNUT9x
    59
6388xE5FRKTNUT9x  
   2024-07-10 11:16:57 +08:00
检查 chrome://extensions-internals/ 没有发现名称为 nkeimhogjdpnpccoofpliimaahmaaome 的插件
dante9
    60
dante9  
   2024-07-10 11:21:16 +08:00
zhangdp
    61
zhangdp  
   2024-07-10 11:21:25 +08:00
@RiverRay 申明 google.com 权限不需要打开 google.com 网站就能执行?另外插件自己本身就可以调用"system.cpu"API 可以获取 cpu 等信息了。
blubzz
    62
blubzz  
   2024-07-10 11:23:54 +08:00
那么类如 360 自家的浏览器的,访问特定的网站是不是也可以获取了?
nziu
    63
nziu  
   2024-07-10 11:24:21 +08:00   ❤️ 1
这不是一个公开的 api ?,也别说什么开源并不等于有人看,这代码截图都贴上了不也没人看。
https://developer.chrome.com/docs/extensions/reference/api/system/cpu?hl=zh-cn
zeR0f1re
    64
zeR0f1re  
   2024-07-10 11:27:52 +08:00   ❤️ 2
@nziu 这个是插件的权限,问题是我没安装 google 的插件,它凭什么没通知就获取我的权限
SkywalkerJi
    65
SkywalkerJi  
   2024-07-10 11:30:40 +08:00
in Microsoft Edge this capability is also available exclusively to *.google.com domains

厉害了微软
lc4t
    66
lc4t  
   2024-07-10 11:41:53 +08:00
Arc 也是可以的
webbillion
    67
webbillion  
   2024-07-10 11:43:32 +08:00   ❤️ 1
63 楼是谷歌不作恶的坚决维护者?
hez2010
    68
hez2010  
   2024-07-10 11:50:13 +08:00
@SkywalkerJi edge 用的也是 chromium 内核,如果 ms 压根都不知道这个 api 的存在的话,自然也保留着 chromium 默认的行为。
9ki
    69
9ki  
   2024-07-10 11:52:09 +08:00
之前发帖子说 google 屏蔽疑似主动屏蔽某些搜索结果还被爱自由人士喷了呢 /1055707 某些人被洗脑的太严重了..
Biggoldfish
    70
Biggoldfish  
   2024-07-10 11:56:25 +08:00
你都装了 Chrome 了 Google 要收集你硬件信息搞用户画像的话直接用 Chrome 读取上传不就完了,搞个插件只对 google.com 生效然后等着用户访问网页再去读取上传?
codehz
    71
codehz  
   2024-07-10 12:00:06 +08:00
@Biggoldfish 这里的问题是给 google meets 提供了竞争优势,其他基于网页的在线会议软件都没法通过这个来获取 cpu 信息来调试错误
SkywalkerJi
    72
SkywalkerJi  
   2024-07-10 12:09:45 +08:00   ❤️ 3
@hez2010 #68 证明了大家搬项目时并不会把代码都看一边,也不会全局替换上家的名字
cat9life
    73
cat9life  
   2024-07-10 12:22:25 +08:00
同样,chrome 和 edge 都复现成功
skadi
    74
skadi  
   2024-07-10 12:25:46 +08:00
在 g 的首页复现成功.
kkocdko
    75
kkocdko  
   2024-07-10 12:28:50 +08:00
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
    76
rdZZZ  
   2024-07-10 12:31:47 +08:00
https://developer.chrome.com/docs/extensions/reference/api/system/cpu#type-CpuInfo

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

复现成功,可以可以。

```
value
:
archName
:
"arm64"
features
:
[]
modelName
:
"Apple M2 Max"
numOfProcessors
:
12
processors
:
(12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
temperatures
:
[]
[[Prototype]]
:
Object
```
daidr
    79
daidr  
   2024-07-10 12:40:37 +08:00   ❤️ 1
如果是扩展,本身 chrome 就提供了 cpu.getInfo 方法让你拿到完整的 CPU 信息

如果是网页,只有 google 自己的白名单域名会注入 chrome.runtime ,其他网页你怎么搞都不可能拿到这玩意
Johnathan
    80
Johnathan  
   2024-07-10 12:42:17 +08:00
@kkocdko 我也是这个报错!没有成功
daidr
    81
daidr  
   2024-07-10 12:45:56 +08:00   ❤️ 1
@hez2010 runtime 暴露出去主要是可以给 what's new 或者扩展商店之类的页面用,比如检测扩展安装状态、在 what's new 里帮你改浏览器主题。
LingXingYue
    82
LingXingYue  
   2024-07-10 13:19:57 +08:00
google.com 可以 google.com.hk 却不行
这是历史遗留代码?还是谷歌一直在偷偷用呢
kylix
    83
kylix  
   2024-07-10 13:56:03 +08:00
确实可以,google.com 首页 复现成功
Garphy
    84
Garphy  
   2024-07-10 14:13:36 +08:00
有时候可能有点用···
zaizaizai2333
    85
zaizaizai2333  
   2024-07-10 14:14:45 +08:00
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.

最后两句中文金句
drymonfidelia
    86
drymonfidelia  
   2024-07-10 14:22:33 +08:00 via iPhone   ❤️ 1
@satoru HN 上的源链接是昨天发的,OP 是今天的帖,明显是 OP 翻译别人的
SunOfHomeBoy
    87
SunOfHomeBoy  
   2024-07-10 14:36:12 +08:00
chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome',
{method: 'cpu.getInfo'},
response => console.table(response));

亲测可行!
Akiya
    88
Akiya  
   2024-07-10 14:38:54 +08:00
实测 Edge 在 Mac 上可以复现
piapia
    89
piapia  
   2024-07-10 14:49:19 +08:00
@0o0O0o0O0o zz 你咋啥都知道. tql
CloveAndCurrant
    90
CloveAndCurrant  
   2024-07-10 14:50:03 +08:00
opera 也可以复现成功
lixen9
    91
lixen9  
   2024-07-10 14:52:24 +08:00
测试了下,获取的 cpu 信息不对,macos
lixen9
    92
lixen9  
   2024-07-10 14:56:21 +08:00
@lixen9 搞错了.. 查询的是对的
pikko
    93
pikko  
   2024-07-10 15:00:58 +08:00
@nziu #63 extension 有额外权限能理解(暂且不说有没有控制硬件权限许可),而楼主说的这个,是不装插件,打开谷歌官网就能跳出来的 runtime 对象,妥妥的后门了。
google exlusive 后门
caqiko
    94
caqiko  
   2024-07-10 15:17:23 +08:00   ❤️ 8
作为一个 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 有这个权限,所有的扩展都可以拿到这个功能。

9ki
    95
9ki  
   2024-07-10 15:21:43 +08:00   ❤️ 1
@caqiko 题都没读对就来教别人..
sloknyyz
    96
sloknyyz  
   2024-07-10 15:24:20 +08:00
你说错了一点,没有进程信息,那是处理器核心负载信息。
mizuhokaga
    97
mizuhokaga  
   2024-07-10 15:24:56 +08:00
win11 edge 在 https://www.google.com/
复现成功, 不过我用 Firefox
pikko
    98
pikko  
   2024-07-10 15:27:30 +08:00   ❤️ 1
@caqiko #94 题主探讨的是访问谷歌网页就暴露一个 runtime 对象了,都不到安装插件那一步。且只有谷歌有。
也就是谷歌就能看你 cpu 来做数据收集,别的网站不行。
poorcai
    99
poorcai  
   2024-07-10 15:28:03 +08:00 via Android
我已经在尝试着转向 firefox 了
asdjgfr
    100
asdjgfr  
   2024-07-10 15:29:25 +08:00
厉害了,真能复现,看 chromium 源码应该是 11 年前加的,9 年前改成 google 白名单,在 62 版本就有了
1  2  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.