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

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

  RiverRay · 137 天前 · 23835 次点击
这是一个创建于 137 天前的主题,其中的信息可能已经有所发展或是发生改变。

前端老鸟都知道一个常识

谷歌浏览器里面是拿不到真实 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  
   137 天前 via Android
会不会泄露用户数据呢?
RiverRay
    2
RiverRay  
OP
   137 天前
只能说插件权限不要乱给,谷歌扩展能干的事情蛮多的
luzemin
    3
luzemin  
   137 天前
骚操作
cslive
    4
cslive  
   137 天前
真的是骚操作,有没有办法屏蔽这个东西
MrSheng
    5
MrSheng  
   137 天前


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

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

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

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

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

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

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

你 Chrome 再牛逼能知道我的电脑的颜色吗?
Reficul
    55
Reficul  
   137 天前
@aqqwiyth #23

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

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

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

这 API 不是早就有了,不光 cpu ,显示器、内存、存储都能查,也就是说任何 chrome 扩展都有能力拿到,只是 google 恰好把它给暴露出去了
IDKAFK
    77
IDKAFK  
   137 天前
@satoru HN 上的来源不是那条推文吗?昨晚发布的
boywang004
    78
boywang004  
   137 天前
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  
   137 天前   ❤️ 1
如果是扩展,本身 chrome 就提供了 cpu.getInfo 方法让你拿到完整的 CPU 信息

如果是网页,只有 google 自己的白名单域名会注入 chrome.runtime ,其他网页你怎么搞都不可能拿到这玩意
Johnathan
    80
Johnathan  
   137 天前
@kkocdko 我也是这个报错!没有成功
daidr
    81
daidr  
   137 天前   ❤️ 1
@hez2010 runtime 暴露出去主要是可以给 what's new 或者扩展商店之类的页面用,比如检测扩展安装状态、在 what's new 里帮你改浏览器主题。
LingXingYue
    82
LingXingYue  
   137 天前
google.com 可以 google.com.hk 却不行
这是历史遗留代码?还是谷歌一直在偷偷用呢
kylix
    83
kylix  
   137 天前
确实可以,google.com 首页 复现成功
Garphy
    84
Garphy  
   137 天前
有时候可能有点用···
zaizaizai2333
    85
zaizaizai2333  
   137 天前
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  
   137 天前 via iPhone   ❤️ 1
@satoru HN 上的源链接是昨天发的,OP 是今天的帖,明显是 OP 翻译别人的
SunOfHomeBoy
    87
SunOfHomeBoy  
   137 天前
chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome',
{method: 'cpu.getInfo'},
response => console.table(response));

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

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