realfp.com

什么是User-Agent?

说到浏览器指纹,最先被提及的往往就是User-Agent。它是浏览器发送给网站服务器的HTTP标头,其中包含浏览器类型、版本、操作系统等信息。

什么是HTTP标头?
当你在浏览器中输入网址并按下回车键时,浏览器会向服务器发送请求以获取网页内容。这个请求中附带了一些额外信息——这些信息就是HTTP标头。

你可以把HTTP标头想象成你在餐厅里递给服务员的那张点菜单。你坐下来,填好你的需求,然后把它递过去,厨房就知道你想要什么了。同样,HTTP标头告诉服务器你的浏览器在请求什么,以及它有哪些特殊要求。

HTTP标头包含多种信息,例如:
User-Agent —— 就像告诉服务员你的名字,让他知道是谁在点餐。它告诉服务器你使用的浏览器和操作系统。
Accept —— 就像在点菜单上写明你能接受的食物类型(比如中餐、西餐或素食)。它告诉服务器你的浏览器能接受哪些响应格式,比如HTML网页、图片或视频。
Referer —— 就像告诉服务员你是经朋友推荐才来这家餐厅的。它告诉服务器你是从哪个网页跳转过来的。
Cookie —— 就像在点菜单上写下特殊要求,比如“不要辣”或“少盐”。Cookie是存储在浏览器中的小型文本文件,包含与你网站访问相关的信息。

HTTP标头的目的很简单:帮助服务器理解你的请求,并返回最合适的内容——就像点菜单告诉服务员你想吃什么一样。

User-Agent由什么组成?
User-Agent字符串由多个部分组成,每一部分都承载着特定的信息——从浏览器类型到操作系统版本。我们通过几个例子来拆解一下:

示例 1(Windows 上的 Chrome):
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36

示例 2(Windows 上的 Firefox):
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0

示例 3(macOS 上的 Safari):
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15

各部分含义如下:
Mozilla/5.0 —— 通用标识符,表示该User-Agent遵循Mozilla规范,版本为5.0。
操作系统信息 —— 用户操作系统的详细信息及版本。这对开发者很重要,因为不同操作系统可能有不同的特性或限制。例如 (Windows NT 10.0; Win64; x64) 表示 Windows 10 64位系统。
渲染引擎信息 —— 浏览器用来渲染网页的核心组件。了解渲染引擎有助于开发者针对特定浏览器优化网站。例如AppleWebKit/537.36表示使用的是苹果的WebKit引擎。
兼容模式信息 —— 表示浏览器是否处于某种特定的兼容模式下运行,帮助开发者确保网站能适配不同的浏览器模式。(KHTML, like Gecko) 表示浏览器在处理页面时使用了与KHTML和Gecko类似的渲染引擎。
应用程序信息 —— 浏览器的具体名称和版本号。例如Chrome/94.0.4606.81表示用户正在使用 Chrome 94.0.4606.81版本。

所有浏览器的User-Agent都一样吗?
不完全一样。虽然Chrome、Firefox、Safari和Edge等主流浏览器的User-Agent都包含操作系统、浏览器类型、版本和渲染引擎等信息,但它们之间仍有细微差别。

对比一下:

可以看出,除了通用标识符之外,各个浏览器的User-Agent存在明显差异。

为什么会有两个User-Agent?
当你使用realfp等工具检测浏览器的User-Agent指纹时,可能会发现显示了两个不同的User-Agent。这是为什么呢?

实际上,获取用户User-Agent有两种方式
通过HTTP请求获取 —— 在服务端进行,服务器解析HTTP标头中的User-Agent字段。
通过JavaScript获取 —— 在客户端(用户浏览器)进行,使用window.navigator.userAgent等JavaScript函数,不依赖服务端HTTP请求。

举个例子:假设你有一台没有联网的电脑,浏览器无法向任何网站发起请求。但你仍然想知道这个浏览器的User-Agent——你可以打开Chrome,按F12打开开发者工具,点击Console标签,在控制台中输入window.navigator.userAgent,就能直接看到该浏览器的User-Agent。

如果你经常编写脚本爬取网站内容,确保这两个User-Agent被一致修改是非常重要的。你应该始终使用realfp之类的工具来验证修改后的User-Agent是否符合真实场景。

User-Agent有什么用?
在当今的数字环境中,User-Agent有着广泛的实际应用:
网站流量分析 —— 分析工具利用User-Agent数据追踪访问者的浏览器、操作系统和设备类型,帮助网站运营者了解受众并优化用户体验。
网站兼容性 —— 开发者通过分析User-Agent信息,确保网站在不同浏览器和设备上都能正常运行。
恶意活动检测 —— 安全团队和管理员利用User-Agent数据检测可疑或异常活动,因为某些User-Agent字符串可能暗示攻击或滥用行为。
广告精准投放 —— 营销团队利用User-Agent数据更好地定向投放广告,因为不同设备和浏览器的用户对广告形式的反应可能不同。
数据分析与市场研究 —— 研究人员和分析师利用User-Agent数据了解用户在不同浏览器和设备上的行为,从而洞察用户偏好和趋势。

多账号管理
从前面的讨论可以看出,网站通过User-Agent可以获取大量关于用户设备和浏览习惯的信息,包括:
·浏览器类型和版本
·操作系统(Windows、macOS、Android 等)
·设备类型(电脑还是手机)

如果你管理多个账号,务必确保各账号之间的信息特征存在差异。否则,网站可能会根据这些信息将你的多个账号关联起来。

使用浏览器扩展来修改User-Agent并不能有效地伪装你的浏览器,这种防范措施并不安全。尤其是当User-Agent指纹与其他指纹信息结合时,它需要与真实设备的特征相匹配。

相比之下,指纹浏览器可以生成与真实设备特征一致的指纹,并让你每个账号都在独立、隔离的环境中运行。这不仅保护了你的隐私,也确保了账号的安全性。