什么是navigator.platform指纹识别?
浏览器与设备

什么是navigator.platform指纹识别?

navigator.platform返回操作系统平台字符串,如MacIntel或Win32,即使在Apple Silicon上也会暴露矛盾信息。

8 分钟阅读·

navigator.platform 是一个JavaScript属性,它会告诉任何网站你的操作系统——静默地、即时地、无需任何提问。它是每台运行现代浏览器的设备都暴露的 浏览器指纹 拼图中一块微小但持久的部分。你现在就可以在 whatsmy.fyi 上查看你自己的值。

简短总结

navigator.platform 是一个只读的JavaScript属性,返回标识你操作系统的字符串——值如 "Win32""MacIntel""Linux x86_64"。它不需要权限,不触发网络请求,可被你访问的每个页面上的每个脚本读取。单独来看它携带低熵(约2到4比特),但指纹系统将其与30多个其他信号结合以唯一识别你的设备。在数亿台Apple Silicon Mac上它实际上是错误的,这些Mac仍然报告 "MacIntel"。现代替代品是 navigator.userAgentData.platform,它在选择加入模型下将低熵数据与高熵数据分离。

什么是navigator.platform指纹?

navigator.platform Navigator API 的一部分,这是自1990年代中期以来JavaScript就能读取的一组浏览器属性。与需要复杂GPU操作来提取指纹的Canvas渲染或WebGL输出不同,navigator.platform 读取极其简单:

console.log(navigator.platform);
// "Win32"          — Windows(32位和64位)
// "MacIntel"       — macOS Intel和Apple Silicon
// "Linux x86_64"   — Linux上的64位x86
// "iPhone"         — iOS上的iPhone
// "iPad"           — iPadOS(较旧的iPad;见下方)

该值对每个页面上的每个脚本都可用,无需权限提示,无需选择加入对话框,也无需网络往返。当追踪或欺诈检测脚本收集它时,你不会收到任何通知。

navigator.platform指纹是指将此值作为更大设备指纹中的一个信号。没有合法的指纹系统单独依赖 navigator.platform——熵太低了。其威力来自两个角色:为组合指纹贡献一小部分熵,以及作为欺诈检测系统用来捕获其他欺骗值不一致性的锚定信号。

电子前哨基金会的Cover Your Tracks 工具将"系统平台"明确作为其测量信号之一进行测试。EFF 2010年对470,161个浏览器的原始Panopticlick研究发现,84%的浏览器仅通过指纹就可以完全唯一识别——对于安装了Flash或Java的浏览器,这个数字上升到94%。

navigator.platform是如何工作的?

该属性在启动时由浏览器根据底层操作系统设置。WHATWG HTML规范将确切格式完全留给浏览器实现——没有标准化的值列表。浏览器通过历史惯例而非规范收敛到一组字符串。

读取值

指纹脚本在单个同步调用中读取 navigator.platform,没有任何副作用:

// 读取navigator.platform——零成本,对用户零可见性
function getPlatformSignal() {
  return {
    platform: navigator.platform,
    // 通常立即与其他navigator属性结合
    hardwareConcurrency: navigator.hardwareConcurrency,
    deviceMemory: navigator.deviceMemory,
    language: navigator.language,
    languages: navigator.languages,
    maxTouchPoints: navigator.maxTouchPoints,
  };
}

// MacBook Pro(Apple Silicon)上的示例输出:
// {
//   platform: "MacIntel",       ← 实际上是错误的——是ARM,不是Intel
//   hardwareConcurrency: 10,    ← 10个CPU核心
//   deviceMemory: 8,            ← 8 GB RAM
//   language: "zh-CN",
//   languages: ["zh-CN", "zh"],
//   maxTouchPoints: 0,          ← 无触摸屏
// }

一致性验证——真正的指纹识别威力

欺诈检测系统将 navigator.platform 视为真实锚点。如果浏览器发送 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)navigator.platform 返回 "Linux x86_64",这种矛盾几乎可以确定是欺骗、自动化或配置错误的无头浏览器的信号。预期的相关性:

  • "Win32" → User-Agent必须包含 Windows
  • "MacIntel" → User-Agent必须包含 Mac OS X
  • "Linux x86_64" → User-Agent必须包含 Linux
  • "iPhone" → User-Agent必须包含 iPhone 且触摸事件必须触发

一个常见的自动化错误是通过命令行标志设置自定义User-Agent字符串——模仿Mac或iPhone——而不同时覆盖 navigator.platform。这种不匹配会被立即检测到。

现实中的平台字符串值

你的浏览器可能返回的字符串及其实际含义:

平台字符串含义桌面OS占比
"Win32"Windows——32位和64位(Chrome、Edge和现代Firefox在64位Windows上都返回此值)约72%
"MacIntel"Intel Mac上的macOS——以及所有Apple Silicon M1/M2/M3/M4 Mac,这些Mac仍然返回此字符串以保持向后兼容约16%
"Linux x86_64"64位x86上的Linux(大多数Linux桌面用户)约4.7%
"Linux armv7l"ARM上的Linux——Raspberry Pi、Chromebook、某些桌面模式的Android<1%
"iPhone"iPhone上的iOS移动端:约28%的移动OS
"iPad"iPadOS——但启用"请求桌面网站"的iPadOS 13+现在返回 "MacIntel" 而非"iPad"移动端:减少中
"Win64"64位Windows上的旧版Firefox(Firefox 63+将此更改为 "Win32" 以保持一致性)遗留

Apple Silicon和iPad悖论

两个有据可查的怪现象使 navigator.platform 主动产生误导,而非仅仅不精确。

Apple Silicon返回"MacIntel"

每台配备M1、M2、M3或M4芯片的Mac——2020年底推出的基于ARM的处理器——仍然报告 navigator.platform === "MacIntel"。Apple和浏览器供应商选择向后兼容而非准确性:将字符串改为类似 "MacARM" 的内容会破坏检查 "MacIntel" 以应用macOS特定行为的遗留代码。因此,数亿台Apple Silicon设备已经错误地识别自己超过四年。唯一能正确识别Apple Silicon的API是 navigator.userAgentData.getHighEntropyValues(["architecture"]),它返回 "arm" 而非 "x86"

iPadOS 13+报告为Mac

当Apple推出iPadOS 13时,它默认启用了"请求桌面网站",导致Safari报告桌面User-Agent和 "MacIntel" 作为平台——即使在iPad上也是如此。FingerprintJS等指纹库包含纠正逻辑:如果 navigator.platform 返回 "MacIntel" 但设备像移动设备一样触发触摸事件,库会将分类覆盖回iPad或iPhone。没有这种纠正,每台现代iPad在指纹数据中看起来都像MacBook。

现实中谁在使用navigator.platform?

广告网络和追踪

行为广告平台使用浏览器指纹——以 navigator.platform 作为一个组成部分——在第三方Cookie被阻止后维护持久的设备标识符。平台有助于操作系统级细分(Windows用户收到不同于macOS用户的广告)和跨会话标识符稳定性。

欺诈检测平台

Fingerprint(前身为FingerprintJS)、Stripe Radar和Sift Science等服务主要将 navigator.platform 用作一致性检查。如果声称是Windows机器的设备显示Linux平台值,或者同一用户账户的已认证会话之间的平台值发生变化,就会触发风险信号。GDPR下的合法用途论点通常援引"欺诈预防"合法利益基础。

无头浏览器检测

自动化爬虫和机器人框架通常无法设置与其欺骗的User-Agent匹配的真实 navigator.platform 值。Cloudflare Bot Management和Akamai Bot Manager等反机器人平台将此对齐作为其机器人评分模型中的一个信号进行检查。缺失、为空或不匹配的平台字符串是自动化的可靠指示器。

A/B测试和分析

分析仪表板使用 navigator.platform 进行用户体验报告中的操作系统细分。这是非追踪用例——平台值被聚合,而非用于建立持久标识符。然而,它是使用指纹脚本使用的相同API调用在客户端处理的。

navigator.platform vs navigator.userAgentData——现代替代品

User-Agent Client Hints API navigator.userAgentData)在Chrome 89(2021年)中作为Google User-Agent缩减计划的一部分引入——该计划旨在冻结旧版User-Agent字符串以减少被动指纹识别面。新API将数据分为低熵(始终可用)和高熵(必须明确请求):

// 低熵: 始终可用,返回清晰的枚举值
navigator.userAgentData.platform;
// "macOS", "Windows", "Linux", "Android", "iOS"
// ——不再有 "MacIntel", "Win32", "Linux x86_64"

// 高熵: 必须明确请求;网站必须说明需求
navigator.userAgentData
  .getHighEntropyValues(["platform", "platformVersion", "architecture", "bitness"])
  .then(data => {
    console.log(data.platform);         // "macOS"
    console.log(data.platformVersion);  // "14.5.0"(内部版本,非"Sonoma")
    console.log(data.architecture);     // "arm" ← 终于正确识别Apple Silicon
    console.log(data.bitness);          // "64"
  });

// 不支持userAgentData的浏览器回退(Firefox):
const platform = navigator?.userAgentData?.platform || navigator?.platform;

关键架构转变:architectureplatformVersion 等高熵值需要明确的异步调用,让浏览器有机会应用噪声或提示用户。截至2026年初,Firefox对此API的支持有限,部分原因是担心它提供了比旧版字符串方法更结构化——因此更容易进行指纹识别——的操作系统描述。

如何保护自己

防止 navigator.platform 泄露比听起来更难,因为简单的欺骗通常会使你更容易被识别,而非更难。以下选项按效果从最强到最实用排列:

  • Tor Browser(最强保护):Tor在同一操作系统类别的所有用户中标准化 navigator.platform——所有Windows用户报告相同的值,所有macOS用户报告相同的值。目标是每个Tor用户看起来都相同的大型匿名集。代价是通过Tor中继网络浏览速度较慢。
  • Firefox配合 privacy.resistFingerprintingabout:config 中启用此标志会导致Firefox同时欺骗 navigator.platform 和多个其他navigator属性。然而,只有约0.48%的Firefox用户启用了此功能——该设置本身就成为将你与99.52%没有此设置的Firefox用户区分开来的指纹。你可能更加突出,而非更不突出。
  • Brave Browser(推荐日常使用): Brave的Farbling 方法按会话和网站随机化高熵指纹信号。对于 navigator.platform,Brave将报告值与真实平台对齐(以避免明显不一致),同时扰乱做了大部分指纹工作的Canvas和WebGL等高熵信号。
  • 不要单独欺骗navigator.platform:仅更改 navigator.platform 而不同时更新User-Agent字符串、WebGL GPU字符串和Canvas输出,会产生欺诈检测系统会立即捕获的信号矛盾。不完整的欺骗比不欺骗更糟——它会将你标记为自动化或故意逃避者。
  • 使用一致的浏览器配置:一些隐私研究人员建议不要进行欺骗,而是使用常见的浏览器配置(Windows上的Chrome,最常见的平台组合)融入大多数人群。报告 "Win32" 的设备有约72%的桌面浏览器共享该值——比不寻常的Linux或BSD配置大得多的匿名集。
  • 了解VPN的限制:VPN改变你可见的IP地址,但对 navigator.platform 或任何其他浏览器属性没有任何影响。它消除了一个追踪向量,同时让所有指纹识别面完好无损。在 whatsmy.fyi 上查看你的完整暴露情况。

navigator.platform已被弃用了吗?

答案故意模糊。 WHATWG HTML规范 仍然包含 navigator.platform——它没有被正式弃用。MDN将其标记为"不推荐"和"不可靠",但未到弃用的程度。mdn/contentwhatwg/html 存储库中的GitHub issues讨论了这种状态,但没有结论。

实际结论:navigator.platform 将无限期保留在浏览器中以保持向后兼容性,就像 navigator.appName(自1990年代起每个浏览器都返回 "Netscape")一样。它永远不会被删除,因为太多遗留脚本依赖它。但Web开发者应该将任何合法的操作系统检测迁移到 navigator.userAgentData.platform——MDN承认 navigator.platform 的唯一有效记录用例是确定向用户显示哪个修饰键符号( 还是 Ctrl),而新API更可靠地做到这一点。

常见问题

navigator.platform在Apple Silicon Mac上返回什么?

它返回 "MacIntel"——与Intel Mac相同的值。Apple和浏览器供应商以准确性为代价保留了向后兼容性。自2020年以来,每台M1、M2、M3和M4 Mac都在报告错误的CPU架构。从浏览器检测Apple Silicon的唯一方法是通过较新的 navigator.userAgentData.getHighEntropyValues(["architecture"]),它正确返回 "arm"

网站可以在没有navigator.platform的情况下检测我的操作系统吗?

可以,通过多种互补渠道:User-Agent 请求头(随每个HTTP请求发送,在任何JavaScript运行前对服务器可见)、WebGL GPU字符串(通常命名操作系统特定的GPU驱动)、Canvas渲染差异(macOS Core Text vs Windows ClearType vs Linux FreeType产生可测量的不同像素输出),以及CSS -webkit- 前缀支持模式。单独阻止 navigator.platform 不会阻止操作系统检测。

清除Cookie会重置我的navigator.platform吗?

不会。navigator.platform 在浏览器启动时从你的操作系统派生——它不存储在Cookie、本地存储或任何可以清除的浏览器数据中。在无痕模式下、在全新浏览器配置文件中以及在完整缓存清除后,它是相同的值。更改它的唯一方法是使用不同的操作系统或主动欺骗它的浏览器。

navigator.platform和navigator.userAgent有什么区别?

navigator.platform 是一个简短、结构化的操作系统标识符。navigator.userAgent 字符串是一个更长的复合字符串,包括浏览器名称、版本、操作系统名称、操作系统版本、渲染引擎和历史兼容性标记——全部在一个非结构化字符串中。User-Agent包含更多熵(10到15比特),但在浏览器版本之间也更多变。navigator.platform 在版本间更稳定,这给了它在指纹识别中的互补角色:即使用户代理字符串随浏览器更新而演变,平台值也很少改变。

为什么iPad有时显示"MacIntel"作为其平台?

iPadOS 13(2019年发布)引入了默认启用的"请求桌面网站"功能。这导致iPad上的Safari报告桌面User-Agent和 "MacIntel" 作为其平台,而非 "iPad"。目的是使网站向更大的iPad屏幕提供桌面优化内容。副作用是指纹系统必须通过间接信号(触摸事件支持、屏幕宽高比和WebKit API)检测iPad,而非直接信任平台字符串。

navigator.platform贡献多少比特的熵?

单独约2到4比特,因为现实流量中不同值的数量很小(Win32覆盖约72%的桌面浏览器;MacIntel覆盖约16%;Linux变体分割其余部分)。对于不寻常的值,熵更高——报告 "Linux armv7l" 的用户处于极小的少数,匿名集小得多。当与Canvas哈希、WebGL渲染器、屏幕分辨率、时区和硬件并发性结合时,总组合指纹通常超过20比特——足以将你的身份缩小到百万分之一的浏览器中。

Firefox的privacy.resistFingerprinting会欺骗navigator.platform吗?

会。在 about:config 中启用时,Firefox将 navigator.platform 的欺骗作为协调属性覆盖集的一部分,同时影响 navigator.userAgentnavigator.appVersionnavigator.oscpunavigator.buildID。欺骗值因平台而异——Firefox在Windows上报告合理的假Windows 10值,在Mac上报告合理的假macOS值——而非通用的假值,以避免破坏键盘快捷键行为。缺点:只有约0.48%的Firefox用户启用了此设置,使这些用户仅凭其异常标志就可以明确识别。

相关文章

即时查询您的 IP 地址、位置与隐私评分。

零日志。零追踪。零外部 API。

立即检测 →

相关文章

什么是navigator.platform指纹识别? | whatsmy.fyi