设备信息

查看浏览器对外汇报的设备信息:屏幕分辨率、视口尺寸、像素比、CPU 核心数、时区、语言与 User Agent。全部在本地读取,不上传。

把浏览器愿意告诉网站的设备信息,集中成一份可读的清单。 调整窗口大小或网络状态变化时数值会自动刷新。点击复制按钮可将完整报告粘贴到缺陷单里。

显示器

屏幕分辨率
—
可用屏幕区域
—
颜色深度
—
设备像素比
—
屏幕方向
—

浏览器窗口

视口尺寸
—
窗口尺寸
—
滚动条宽度
—

浏览器与 User Agent

User Agent
—
首选语言
—
可接受语言
—
平台
—
浏览器厂商
—
是否启用 Cookie
—
网络是否可达
—
Do Not Track
—

硬件

逻辑 CPU 核心数
—
设备内存
—
最大触点数
—

时间与区域

时区
—
UTC 偏移
—
当前时间(ISO)
—

正确解读设备信息

屏幕尺寸不等于窗口尺寸

三种尺寸经常被混淆,一旦搞错就会写出只在别人机器上出问题的布局。屏幕分辨率描述的是物理面板,无论你怎么缩放窗口都不会变;可用屏幕区域会减去被系统长期占用的部分,例如任务栏或 macOS 菜单栏;视口才是页面真正能绘制的区域,也是三者中唯一被 CSS 媒体查询采纳的值。

调试响应式布局时,你要的几乎总是视口尺寸。用户的显示器可能有 3840 像素宽,但他也许只开了一个 700 像素宽的窗口。如果媒体查询按屏幕宽度写,就会在放不下的空间里输出桌面版布局。

设备像素比把两者联系起来。像素比为 2 表示每个 CSS 像素由 2×2 个物理像素绘制,这正是老显示器上清晰的图片在新笔记本上发虚的原因。用视口尺寸乘以像素比,才是位图真正需要的像素数。

User Agent 会撒谎,而且是故意的

User Agent 是本页最不可信的字段。几十年来各家浏览器都在自己的标识里塞进别家的名字,只为绕过写得很糟的服务端判断,所以今天的 Chrome 仍然会同时声称自己是 Mozilla、AppleWebKit、KHTML、Gecko 和 Safari。为了抑制指纹追踪,浏览器厂商正在冻结并精简这个字符串。

请把它当作提示,而不是判断依据。要确认某个能力是否存在,就直接检测该能力:一行代码即可,能在你写代码时还不存在的浏览器上正常工作,也不会因为厂商改写 User Agent 而失效。

这些数值暴露了什么

单看任何一项都无法定位到具体的人,但组合起来的区分度高得惊人。屏幕分辨率、时区、语言列表、CPU 核心数与像素比拼在一起,往往能在数百万访客中唯一确定一个人——追踪脚本收集它们正是这个原因。

这也是部分字段被刻意模糊或直接隐藏的原因。设备内存会向下取整到很粗的档位,有些浏览器会限制核心数上报、完全不暴露内存,或者返回通用的平台字符串。Do Not Track 实际上已被放弃:几乎没有站点遵守,多数浏览器也不再发送,所以这里为空并不能说明任何问题。

对开发的现实建议是:只采集你真正需要的最少信息。如果你想决定要不要加载重量级动画,就去测量首帧的实际渲染耗时,而不是靠核心数猜测。真实测量胜过推断硬件规格,而且不会增加指纹面积。

完全基于标准浏览器 API 自研实现。不上传任何数据:所有数值都在你的浏览器本地读取,不会离开此页面。

常见问题

为什么显示的分辨率比显示器标称的小?
你看到的是 CSS 像素而非物理像素。把显示的分辨率乘以设备像素比才是面板真实像素数。像素比为 2 的 4K 屏通常报告 1920 × 1080。
为什么视口尺寸会变,屏幕分辨率却不变?
屏幕分辨率描述物理显示器,只有切换显示模式时才会变化;视口是浏览器窗口内可绘制的区域,缩放窗口、打开开发者工具或显示书签栏都会改变它。
能用 User Agent 判断浏览器吗?
不建议。各浏览器在该字符串中刻意互相模仿,厂商也在主动削减其细节。请直接检测你需要的具体能力,而不是匹配浏览器名称。
为什么设备内存是一个取整后的数字?
浏览器会刻意向下取整到很少的几个档位,很多浏览器干脆不上报。暴露精确内存会让浏览器指纹识别变得容易得多。
页面上的内容会被发送到服务器吗?
不会。所有数值都通过标准 API 在你自己的浏览器中读取并在本地渲染,不做任何传输、记录或存储。
为什么 Do Not Track 是空的或不可用?
该信号从未被广泛遵守,多数浏览器已将其移除。这里为空只说明浏览器没有发送该请求头,并不代表追踪偏好未知。