User agent用户代理

用户代理(英文:user agent)在计算机科学领域,指的是代表用户执行操作的程序(即软件代理程序)。举例来说,网页浏览器就是一款“协助用户获取、渲染网页内容并与其交互”的用户代理;电子邮件阅读器也可被称作邮件代理。而在会话发起协议(SIP)中,用户代理指的是一个通信会话里的两个终端。
在诸多场景下,用户代理会以主从式架构的分布式计算系统中,通信所使用的网络传输协议客户端的身份运行。尤其是在超文本传输协议(HTTP)中,明确要求发起请求的客户端软件必须使用“User-Agent”请求头,即便客户端并非由用户直接操控也是如此。SIP协议(基于HTTP开发)沿用了这一使用方式。

Cookie

Cookie,其类型为“小型文本文件”,是指部分网站为识别用户身份,存储在用户本地终端(客户端)上的数据(通常会经过加密处理)。
由于HTTP协议本身是无状态的,也就是说服务器无法知晓用户上一次的操作行为,这极大地制约了交互式Web应用程序的实现。以典型的网购场景为例,用户浏览了多个页面,选购了一盒饼干和两瓶饮料。到结算环节时,受HTTP无状态性的影响,若不借助额外方式,服务器无法得知用户的选购内容,因此Cookie便成为规避HTTP无状态性的“额外手段”之一。服务器可设置或读取Cookie中包含的信息,以此维持用户与服务器会话过程中的状态。

IPv4

网际协议版本4(英文:Internet Protocol version 4,IPv4),也被称作互联网通信协议第四版,是网际协议研发过程中的第四个修订版本,同时也是该协议首个被大规模部署应用的版本。IPv4是互联网的核心组成部分,也是目前使用范围最广的网际协议版本,其后续版本为IPv6。直至2011年IANA的IPv4地址完全耗尽时,IPv6仍处于部署应用的初期阶段。

IPv6

网际协议版本6(英文:Internet Protocol version 6,缩写:IPv6)是网际协议的最新版本,作为互联网通信的核心协议使用。之所以用IPv6替代IPv4,核心是为解决IPv4地址资源枯竭的问题,同时IPv6在多个方面也对IPv4做出了诸多优化改进。

Flash

Flash Cookie是由Flash Player管控的客户端共享存储技术,具体特性如下:
  • 与HTTP Cookie类似,Flash Cookie借助SharedObject类实现本地信息存储,该类可在用户计算机上读取和存储一定量的数据,共享对象能够实现永久存储在用户计算机上的各类对象之间的实时数据共享;
  • 本地共享对象以独立文件的形式存储,文件扩展名统一为.SOL;
  • 本地共享对象不依赖浏览器运行,因此普通用户难以对其进行删除操作。若要删除这类文件,需先明确其具体存储位置,这也使得本地共享对象能够长期保存在本地系统中;

Language语言

语言是浏览器基础指纹的其中一项。浏览器基础指纹指的是所有浏览器都具备的特征标识,涵盖屏幕分辨率、硬件类型、操作系统、用户代理(User agent)、系统字体、语言、浏览器插件、浏览器扩展、浏览器设置、时区差值等多项信息。这类指纹信息类似于人类的身高、年龄等特征,重复匹配的概率较高,仅能作为辅助识别的依据。

Resolution分辨率

屏幕分辨率指的是屏幕所显示文字与图像的清晰程度。通常情况下,显示器尺寸越大,其支持的分辨率也就越高。能否提升屏幕分辨率,取决于显示器的尺寸、功能以及所使用显卡的类型。从技术层面来讲,“分辨率”指的是单位面积内的像素数量,而非像素的总数量。

Audio音频

HTML5为JavaScript编程提供的Audio API,使开发者能够在代码中直接操作原始音频流数据,可对其进行任意生成、加工、重构等操作,比如优化音色、调整音调、分割音频等,其功能堪比网页版的Adobe Audition。
AudioContext指纹的实现原理大致如下:
  • 方法一:生成三角波形式的音频信息流,对其进行快速傅里叶变换(FFT),计算其SHA值并将该值作为指纹;
  • 方法二:生成正弦波形式的音频信息流,对其执行动态压缩处理,计算其MD5值并将该值作为指纹;
这两种方法均会在音频输出至音频设备前完成相关操作并清除痕迹,用户完全无法察觉,指纹信息便已被获取。
AudioContext指纹的核心原理为:
主机或浏览器在硬件、软件层面的细微差异,会导致音频信号处理结果出现不同。同一设备上的同款浏览器会生成相同的音频输出,而不同设备或不同浏览器所生成的音频输出则会存在差异。
由此可见,AudioContext与Canvas指纹的原理极为相似,二者均利用硬件或软件的差异来生成标识——前者生成音频数据,后者生成图片数据,随后通过计算得到不同的哈希值作为唯一标识。

Timezone时区

时区是全球范围内划定的特定区域,该区域内为满足法律、商业及社会活动的需求,统一遵守特定的标准时间。时区的划分通常遵循各国及其行政分区的边界,而非严格按照经度线,这是为了方便经贸往来密切或有其他频繁通信需求的区域保持时间统一。
陆地上的绝大多数时区与协调世界时(UTC)的时间差均为整数小时(范围从UTC-11:00(UTC-12:00时区无人类居住)到UTC+14:00),但也有部分时区的偏移量为30分钟或45分钟(例如,纽芬兰标准时间为UTC-03:30,尼泊尔标准时间为UTC+05:45,印度标准时间为UTC+05:30,缅甸标准时间为UTC+06:30)。

localStorage本地储存

localStorage是HTML5本地存储特性web storage的核心API之一,其主要作用是将数据存储在客户端设备中,这里的客户端通常指用户所使用的计算机。在移动设备端,由于绝大多数浏览器均支持web storage特性,因此安卓(Android)、苹果(iOS)等智能手机上的网页浏览器均可正常使用该功能。
通过localStorage存储的数据,在默认情况下是永久保存的。也就是说,一旦通过localStorage保存信息,这些数据会一直存储在用户的客户端设备中。即使用户关闭当前网页浏览器后重新打开,数据依然存在,直至用户或程序明确执行删除操作,这些数据的生命周期才会终止。
在安全性方面,localStorage具备域内安全性,即其数据访问权限基于域名划分。同一域名下的所有页面,均可访问该域名对应的localStorage数据。但存在一个特点:不同浏览器厂商的浏览器之间,localStorage数据是相互独立的。举例来说,在Firefox浏览器中通过localStorage存储的一组数据,无法在Chrome浏览器中读取。同理,由于localStorage数据存储在用户的本地设备中,因此同一应用程序在不同设备上保存的数据也是相互独立的。

Geo地理位置

Geolocation API是W3C HTML5标准的组成部分,该API为开发者提供了一套简洁且高阶的JavaScript接口,允许网站向用户请求其实际地理位置信息,这一行为可能会侵犯用户的隐私。而针对该地理位置API的测试,核心目的是确保在未获得用户明确授权的情况下,无法通过该API获取任何位置相关信息。

Fonts字体

字体指纹识别,指的是依据用户设备中安装的字体类型,以及浏览器渲染字体的方式来生成指纹。通过测量承载文本的HTML元素的填充尺寸等参数,可构建出一个唯一标识符,利用该标识符能够长期追踪同一台浏览器设备。
基于字体指标生成的指纹,与画布指纹的关联度极高。相较于画布指纹,字体指纹识别技术的识别强度可能稍弱,因为画布指纹不仅能获取元素的边界框信息,还能提取像素级数据;但从防御角度来看,字体指纹的防护难度更高。
文本渲染是网页浏览器中一个精细且复杂的环节。即便是拉丁字母的渲染布局,也并非简单的文本框堆叠,连字效果、字距调整、组合字符等因素都会影响最终呈现效果。其他文字书写系统的渲染逻辑则更为复杂,这使得浏览器不得不依赖操作系统提供的文本布局库来完成渲染。这类库包括GNU/Linux系统中的Pango、Windows系统中的图形设备接口(GDI)或DirectWrite,以及Mac OS X系统中的Core Text,这些库属于独立的代码体系,运行行为存在差异。此外,浏览器还会在基础文本渲染的基础上,叠加自身的自定义渲染规则。

Do Not Track请勿追踪

请勿追踪(英文:Do Not Track,简称DNT)是一项HTTP请求头字段。当用户开启该功能后,浏览器会在HTTP数据传输过程中添加一个头字段:dnt: 1,该字段用于向网站服务器表明用户拒绝被追踪的意愿。对于遵守该规则的网站而言,不会追踪用户的个人信息,也不会基于这些信息投放个性化广告。

SSL安全通讯端层

传输层安全性协议(英文:Transport Layer Security,缩写:TLS)及其前身安全套接层(英文:Secure Sockets Layer,缩写:SSL),是一类为互联网通信提供安全保障和数据完整性验证的安全协议。网景公司(Netscape)在1994年推出首款网页浏览器——网景导航者时,同步推出了HTTPS协议,并采用SSL进行加密,这也是SSL技术的起源。后续IETF对SSL进行标准化改造,于1999年发布TLS 1.0标准文档(RFC 2246),随后又相继发布了TLS 1.1(RFC 4346,2006年)、TLS 1.2(RFC 5246,2008年)和TLS 1.3(RFC 8446,2018年)。该协议被广泛应用于浏览器、电子邮件、即时通讯、VoIP、网络传真等各类应用程序中,Google、Facebook、Wikipedia等众多网站也通过该协议建立安全连接并传输数据。目前,TLS/SSL已成为互联网保密通信领域的行业标准。
SSL协议架构包含记录层(Record Layer)和传输层,其中记录层协议定义了传输层数据的封装格式。传输层安全协议先通过X.509证书完成认证,再利用非对称加密算法对通信双方进行身份验证,随后交换对称密钥作为会话密钥(Session key)。该会话密钥用于对通信双方交互的数据进行加密,保障两个应用之间通信的保密性与可靠性,防止客户端与服务器应用之间的通信内容被攻击者窃听。

Proxy代理

代理(英文:Proxy)也被称作网络代理,是一类特殊的网络服务,允许一方终端(通常为客户端)通过该服务与另一网络终端(通常为服务器)建立间接连接。部分网关、路由器等网络设备本身就具备网络代理功能。通常认为,代理服务有助于保护网络终端的隐私与安全,降低遭受网络攻击的风险。
提供代理服务的计算机系统或其他类型网络终端,被称为代理服务器(英文:Proxy Server)。一次完整的代理请求流程如下:客户端首先与代理服务器建立连接,随后依据代理服务器所采用的代理协议,请求与目标服务器建立连接,或获取目标服务器上的指定资源(如文件)。在后一种场景下,代理服务器可能会将目标服务器的资源下载至本地缓存;若客户端所需获取的资源已存在于代理服务器的缓存中,代理服务器则无需向目标服务器发送请求,直接将缓存中的资源返回给客户端即可。部分代理协议允许代理服务器修改客户端的原始请求或目标服务器的原始响应,以适配代理协议的要求。在计算机程序中,代理服务器的相关选项和设置通常包含“防火墙”配置项,用户可输入代理地址,以此隐藏自身的网络操作行为,还可绕过网络过滤机制实现特定的网络访问。

DNS域名系统

域名系统(英文:Domain Name System,缩写:DNS)是互联网的核心服务之一。它本质上是一个分布式数据库,负责将域名与IP地址进行相互映射,从而让用户能够更便捷地访问互联网。DNS协议使用TCP和UDP的53号端口进行通信。目前,每一级域名的长度限制为63个字符,而域名的总长度则不得超过253个字符。
最初,域名所使用的字符仅局限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许将其他语言的字符用作互联网顶级域名。借助基于Punycode编码的IDNA系统,可将Unicode字符串转换为符合DNS规范的字符集。因此,像“XXX.中国”、“XXX.美国”这类包含非ASCII字符的域名,可直接在浏览器地址栏输入并访问,无需安装额外插件。

Canvas画布

画布(canvas)元素是HTML5标准的组成部分,支持脚本语言(如脚本编程语言)动态渲染位图图像。开发者可通过JavaScript编程语言在该元素上绘制图形,其常见应用场景包括绘制图形与文字、图像处理、游戏开发以及动画制作等。

WebGL

WebGL是一套JavaScript API,能够在无需安装插件的情况下,在任意兼容的网页浏览器中渲染交互式2D和3D图形。WebGL被完全整合到浏览器的各项网页标准中,可将GPU加速的图像处理和特效渲染能力,作为网页Canvas的一部分来使用。WebGL元素可嵌入到其他HTML元素中,且能与网页或网页背景的其他部分融合显示。WebGL程序由两部分构成:一是通过JavaScript编写的控制逻辑,二是通过OpenGL着色器语言(GLSL)编写的着色器代码(该语言语法与C/C++相似),后者会在计算机的图形处理器(GPU)上运行。

IndexedDB

Indexed Database API(简称IndexedDB,曾用名WebSimpleDB)是W3C推荐的网页浏览器标准之一,其核心是为开发者提供一套具备索引功能的JSON对象集合事务性本地数据库操作接口。W3C于2015年1月8日发布了IndexedDB接口的最终推荐标准。
IndexedDB可用于实现浏览器内置功能(如书签管理),也可应用于各类Web应用程序(如电子邮件应用)。

WebRTC 网页实时通信

WebRTC实现了基于网页的视频会议功能,其遵循WHATWG协议标准,核心目标是让开发者仅通过简单的JavaScript代码,就能在浏览器中实现实时通信(Real-Time Communications,RTC)能力。
WebRTC(Web Real-Time Communication)项目的核心目标,是让Web开发者能够基于浏览器(如Chrome、FireFox等)快速便捷地开发出丰富的实时多媒体应用,且无需用户下载安装任何插件。开发者无需关注多媒体数字信号的处理流程,仅需编写简单的JavaScript程序即可实现相关功能。目前W3C等组织正在制定WebRTC对应的JavaScript标准API,当前版本为WebRTC 1.0,处于草案(Draft)阶段。此外,WebRTC还致力于构建一个能在多款浏览器间稳定运行的实时通信平台,打造开发者与浏览器厂商共赢的生态环境。同时,Google也持续推动WebRTC技术纳入HTML5标准体系,足见其在该领域的长远布局。WebRTC提供了视频会议所需的核心技术能力,涵盖音视频采集、编解码、网络传输、画面显示等全流程功能,且支持跨平台运行,可适配Windows、Linux、Mac、Android等操作系统。