Cookie 与浏览器指纹有什么区别

Cookie 是网站写在浏览器里、之后还能读回来的一小段数据。浏览器指纹不是存进去的一份文件,而是网站从浏览器请求、脚本和渲染结果里观察到的环境特征。两件事可以同时发生,清掉 Cookie 并不会把那些环境特征一起清掉。

您清掉 Cookie,再打开同一个网站:登录状态没了,但网站读到的屏幕、时区和画布结果,还是原来那一套。

学习目标

阅读本文后,您将能够:

  • 说出 Cookie 和浏览器指纹分别存在哪里
  • 判断清 Cookie 会改变什么、不会改变什么
  • 理解网站可以同时使用这两种方式

浏览器指纹是什么

浏览器指纹是网站把打开页面时观察到的环境特征组合起来的结果,不是浏览器里单独存着的一个文件。

它从哪来例如
请求自带IP、User-Agent、语言
脚本读取屏幕、时区、平台信息
渲染和测试Canvas、WebGL、功能支持

这些特征在您打开页面时就已经能被观察到。网站不必先往您的浏览器里写入一份「指纹文件」。

两者差在哪里

Cookie 靠网站先存进去、再读出来。浏览器指纹靠的是环境本身暴露出来的特征。

Cookie浏览器指纹
存在哪里网站写入浏览器的数据当前浏览器和环境的特征
没有写入时网站读不到这一份打开页面仍能观察到特征
用户删除后这一份数据就没了屏幕、时区、渲染结果通常还在
能否一起用可以可以

为什么要分开看?

很多人把「清 Cookie」理解成换了一个新环境。Cookie 清掉之后,登录状态和网站写入的标识就没了,浏览器、屏幕、时区和渲染方式往往没变。网站仍可能从这些特征里看出,这还是相近的一套环境。

清掉一种,另一种还在

  • 清 Cookie 去掉的是网站存过的数据,不是整套浏览器环境。
  • 没有 Cookie,网站仍可能通过请求、脚本和渲染看到环境特征。
  • 有 Cookie,也不表示网站只靠 Cookie 认出用户。两种方式可以同时用。
  • 环境特征相同,不能单独证明是同一个人。
  • 环境特征不同,也不能单独证明一定是两个用户。

常见问题

无痕模式是不是就没有 Cookie,也没有指纹?

无痕会少保存历史和 Cookie。屏幕、时区、语言和渲染结果在无痕里通常还在。

浏览器指纹是不是一种特殊的 Cookie?

不是。Cookie 是存进去的数据。指纹是对当前环境特征的观察和组合,不是同一份存储。

把 Cookie 关掉,网站就认不出这个浏览器了吗?

网站读不回自己写过的那份数据。请求和脚本仍可能拿到浏览器与环境信息。