> For the complete documentation index, see [llms.txt](https://docs.ipcheck.ing/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ipcheck.ing/knowledge-base/zh/concepts/browser-fingerprinting.md).

# 浏览器指纹识别详解

你清除了 Cookie，切换到了隐私浏览模式。网站似乎还是知道你是谁。为什么？

因为浏览器只要正常工作，就会暴露很多自身信息——而这些细节的组合足以像名字一样用来识别。

## 一段话概括

每个浏览器都会回答网页被允许询问的一些问题。你的屏幕尺寸是多少？时区是什么？使用什么语言？安装了哪些字体？有什么图形硬件？单独看，这些答案都不起眼——数百万人会共享其中每一项。但把二十项放在一起，组合就会迅速缩小。这个组合是一个 **指纹**，而且它不像 Cookie 那样存储在你的设备上，所以你没有东西可删。

比较方式是根据描述而不是名字来识别一个人。棕色头发并不能识别身份。棕发、左撇子、183 厘米、戴眼镜、说葡萄牙语和荷兰语、夜班工作——这样的描述很快就变得具体。

## 会被测量什么

这些信号大致分成几类。

**Canvas 渲染。** 网页会要求浏览器把文本和图形绘制到一张不可见的图像中，然后把像素读回。由于渲染取决于你的操作系统、显卡驱动、字体和抗锯齿设置，不同机器上的像素会有细微差别。两台型号相同、软件相同的设备会得到相同结果；不同配置则不会。这是最强的单项信号之一。

**WebGL 和 GPU。** 3D 渲染暴露的信息更多：图形厂商和型号、支持的功能，以及测试场景是如何绘制的。显卡硬件差异很大，因此它的区分度非常高。

**字体。** 可以通过测量文本排版方式来推断安装了哪些字体。字体集合会反映你的操作系统、语言，以及你曾安装过的每一款设计或办公应用——这是一份格外私人的清单。

**音频处理。** 可以要求浏览器在不播放声音的情况下处理音频信号，而数值输出会随着音频栈略有变化。原理与 Canvas 相同，只是应用在声音上。

**浏览器和系统属性。** User-Agent 字符串、平台、浏览器版本、CPU 核心数、内存大小、触控支持、色深、屏幕和窗口尺寸、是否启用 Cookie、是否存在 PDF 查看器。

**区域设置信号。** 语言偏好、时区，以及浏览器如何格式化日期、数字和货币。单是时区就能强烈暗示地理位置——而你的时区与 IP 地址所在地不一致，是使用 VPN 的典型迹象。

**能力探测。** 授予了哪些权限、有哪些媒体设备、安装了哪些语音、某些数学函数在小数最后一位如何四舍五入。细节虽小，但加起来就很有辨识度。

MyIP 自己的指纹工具把这些大多都做成了开关，因此你可以看到随着每一类被添加或移除，最终值如何变化。

## 稳定性与唯一性

指纹只有同时满足两个条件才适合用于追踪，而这两个条件彼此牵制。

**唯一性** 意味着很少有人与你拥有相同的组合。如果一百万访客生成了同样的指纹，那它就识别不了任何人。

**稳定性** 意味着它会随着时间保持不变。如果你的指纹每次访问都变，那它就无法把今天的访问和上周联系起来。

大多数人的唯一性比想象中更高，主要是因为不寻常的组合，而不是某个单一的特殊值。常见笔记本配常见浏览器相当匿名。再加上一个少见的屏幕尺寸、一套很少安装的字体，以及不寻常的语言配置，这个组合可能几乎没人共享。

在实践中，稳定性是较弱的一半。浏览器会更新，你会安装字体，你会接上外接显示器，你会穿越时区旅行。追踪器会用模糊匹配来应对——把在一两个属性上不同的指纹当作可能是同一个访客。

令人不安的推论： **不寻常的隐私措施反而会让你更容易被识别**，因为它们让你显得更罕见。浏览器宣布一组奇特的被阻止功能组合，正是因为很少有其他人看起来像它。

## 它的用途是什么

并非所有用途都带有敌意，值得把它们区分开来。

* **反欺诈。** 银行和支付服务会用它来发现某个账户是否从一台从未见过的设备上访问。这确实有保护作用。
* **机器人检测。** 自动化工具常常生成不可能或不一致的指纹——例如声称是移动浏览器，却带有桌面级图形硬件。
* **广告与分析。** 在没有可存储标识符的情况下跨网站和会话识别访客。这是引发大多数隐私担忧的用途，而且它本来就会绕过 Cookie 删除。
* **绕过你声明的偏好。** 最令人反感的用途：在你故意清除标识符后重新构建一个标识符。

## 防护是什么样的

大致有三种策略，每一种都有实际代价。

**看起来和所有人一样。** Tor 浏览器的做法。它尽可能标准化各种信号——相同的窗口大小、相同的报告字体、相同的 User-Agent——让所有使用该浏览器的用户呈现几乎相同的指纹。这是现有最有效的防护，因为人群真的很统一。代价也不小：固定窗口大小、被阻止的功能，以及偶尔出问题的网页。

**返回通用答案。** Firefox 的 Resist Fingerprinting 模式就是这样工作：报告标准时区、标准屏幕大小、标准字体集，并阻止或中和最强的探测。它比 Tor 浏览器干扰更小，但仍然明显——网站可能显示错误的时区或出现意外的布局。

**添加噪声。** Brave 把这称为 farbling：它不是阻止 Canvas、音频和 WebGL，而是对结果做轻微扰动，并且对每个网站、每个会话都不同。追踪器得到的是看起来合理但无法复用的答案。代价更低，因为页面仍能正常工作，而且不要求你看起来像别人。

| 方法   | 示例             | 强度  | 代价                |
| ---- | -------------- | --- | ----------------- |
| 统一人群 | Tor 浏览器        | 最高  | 固定窗口、被阻止的功能、兼容性问题 |
| 通用答案 | Firefox RFP    | 高   | 错误的时区、布局惊喜        |
| 随机噪声 | Brave farbling | 中到高 | 低；偶尔有网站怪异表现       |
| 没有任何 | 默认浏览器          | 无   | 无                 |

某些浏览器默认也会采用更轻量的措施——例如 Safari 会减少它报告的信息，并且在重复测量时可能返回不同的值，这就是为什么指纹工具有时会在那里显示一个变化中的值。

没有任何配置能彻底消除指纹识别。凡是能够渲染现代网页的东西，必然会暴露一些关于其渲染方式的信息。现实的目标是让它难以 *重新识别*，而不是让它完全隐形。

## 常见误解

**“隐私浏览会隐藏我的指纹。”** 不会。隐私窗口会清除存储和历史记录，但它们报告的屏幕、字体、硬件和时区都一样。

**“VPN 可以保护我免受指纹识别。”** VPN 会改变你的 IP 地址。其他所有信号都不变——如果指纹始终相同，而 IP 却在各国之间跳来跳去，那反而更显眼。

**“阻止 JavaScript 就能解决。”** 它会移除大多数探测，并破坏现代网页的大部分功能。一些信号也会在 HTTP 标头中保留下来。

**“我的指纹是永久的。”** 它会漂移。更新、新硬件和变更后的设置都会让它发生变化。追踪器会通过模糊匹配来补偿，所以漂移只能减慢它们，而不是阻止它们。

**“两个工具给我的指纹值不同，所以一定有一个错了。”** 都没有错。不存在标准指纹。每个工具都选择自己的信号以及自己的组合方式，因此不同工具之间的数值不可比较——只能在同一个工具内比较。

{% hint style="info" %}
**在 MyIP 上亲自看看**

该 [浏览器指纹](/knowledge-base/zh/lookup-privacy/browser-fingerprint.md) 工具会显示你的浏览器暴露了什么——浏览器和引擎、操作系统、GPU、CPU 核心数、语言、时区、显示器、触控点等等——并基于一组可逐项开关的信号计算指纹值。

一个很有启发性的实验：记下你的值，然后在隐私窗口里、或者在另一个浏览器中打开同一页面并进行比较。观察哪些开关真正改变了该值，比任何文字说明都更能教你理解指纹识别。
{% endhint %}

## 相关概念

* [什么是 WebRTC？](/knowledge-base/zh/concepts/what-is-webrtc.md) — 另一项会暴露出比你预期更多信息的浏览器功能
* [GeoIP：IP 定位如何工作](/knowledge-base/zh/concepts/geoip-explained.md) — 为什么时区不匹配是如此强烈的信号
* [DNS 如何工作](/knowledge-base/zh/concepts/how-dns-works.md) — 除了浏览器之外，你的查询还会暴露什么
* [安全检查清单](/knowledge-base/zh/lookup-privacy/security-checklist.md) — 在你的数字生活中可采取的实用步骤


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ipcheck.ing/knowledge-base/zh/concepts/browser-fingerprinting.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
