隐私指纹浏览器产品系列 —— 浏览器指纹 中(三)

1.引言

在上一篇文章中,我们聊到了最老牌的浏览器指纹检测站——BrowserLeaks。BrowserLeaks曾经是浏览器指纹检测的权威,但它似乎更像是一本老旧的工具书,只能呆板告诉你浏览器的指纹值,并对比不同浏览器的指纹差异。

今天,我们来聊一下指纹检测站的新星——CreepJS。与前辈相比,CreepJS的检测范围更广、更全面。由于其开源属性,全球的开发者不断维护和改进这个项目,使其始终保持领先地位。

接下来,我们将详细了解CreepJS这颗指纹检测站的新星,并研究它是如何检测指纹以及如何发现指纹被篡改的。

2.通过CreepJS查看浏览器指纹

CreepJS会使用大模型验证指纹的不一致性,并使用浏览器API功能进行高熵指纹识别,然后进行信任评分。

🔔

信任评分反映了浏览器指纹值和修订指标的可信度。如果评分是100%,说明这些值的可信度很高。如果评分较低,那就不太可信。

不过,高评分不一定总是好事,低评分有时也未必是坏事。

2.1 WebRTC

WebRTC是一项支持浏览器实时通信的技术,允许浏览器和移动应用进行实时音视频通信和数据共享,无需插件或额外的软件。但它可能暴露IP地址等信息,从而被用来进行用户指纹识别和跟踪。

2.2 Timezone & Intl

Timezone和Intl是浏览器提供的两个API,用于获取用户的时区和国际化信息。

  • Timezone API:通过Date对象,可以获取用户的本地时区信息。这有助于显示正确的时间和日期,但也可能泄露用户的地理位置。
  • Intl API:国际化API,用于格式化日期、时间、数字和货币等信息,根据用户的语言和地区设置进行调整。主要包括Intl.DateTimeFormatIntl.NumberFormatIntl.Collator等。

2.3 Worker

Web Workers 是浏览器中用于在后台运行脚本的机制,允许在不阻塞用户界面的情况下执行多线程操作。主要包括以下三种。

  • Dedicated Worker:专用于一个特定的脚本或页面。
  • Shared Worker:可以在多个脚本或页面之间共享。
  • Service Worker:主要用于控制网络请求和缓存,常用于实现离线功能和提高性能。

2.4 WebGL & Canvas

  • WebGL(Web图形库)是一种在网页中渲染3D和2D图形的技术,无需插件,基于OpenGL ES 2.0。它可以创建复杂的3D场景和动画,广泛应用于游戏、虚拟现实和数据可视化。
  • Canvas 是HTML5的一部分,用于在网页上绘制2D图形。通过JavaScript,可以在Canvas元素上绘制各种图形和动画,适用于从简单图形绘制到复杂游戏开发和数据可视化。

WebGL 和 Canvas 都能暴露设备的某些特性,这些特性可以用来生成设备指纹,进行用户识别和跟踪。WebGL 暴露的信息包括显卡型号、供应商和渲染器信息等,而 Canvas 则通过绘制特定图形并分析其输出图像的像素值来生成独特的指纹。这些图形的渲染结果会因设备、浏览器和操作系统的不同而有所差异。这些差异,虽然看似微小,但可以组合成一个独特的指纹,用于识别和跟踪用户

2.5 Fonts

Fonts API 用于在网页上加载和显示特定字体。通过 CSS 和 JavaScript,可以使用本地字体或从网络上下载的字体来渲染文本,提供更丰富和一致的视觉效果。

字体也可以用于指纹识别。不同设备和浏览器支持的字体集合各不相同,加载和渲染字体的方式也有差异。通过检测系统安装的字体和特定字体的渲染效果,追踪者可以生成一个独特的设备指纹,用于识别和跟踪用户

2.6 Audio

Audio API 用于在网页中处理和播放音频。它允许开发者创建、控制和操作音频内容,实现复杂的音频效果和互动体验。常见的应用包括音频播放、音频处理和实时音频分析。

不同设备和浏览器在处理和播放音频时可能会有微小的差异,这些差异可以用来生成独特的设备指纹。例如,通过播放一个特定的音频信号并分析其输出,可以识别出设备的硬件和软件特性。这些特性组合在一起,可以用来识别和跟踪用户。

2.7 Navigator

Navigator 是一个包含有关浏览器和设备信息的对象,常用于检测用户的浏览器环境和功能支持。它提供了多种属性和方法,允许开发者获取用户代理字符串、语言设置、在线状态、硬件并发性等信息。

Navigator 对象暴露的多种属性可以用于指纹识别。比如:

  • User Agent:包含浏览器类型、版本和操作系统信息,能揭示用户的浏览器环境。
  • Language:用户的首选语言设置,可能反映用户的地理位置和语言偏好。
  • Hardware Concurrency:设备的CPU核心数,有助于识别用户设备的硬件特性。
  • Platform:提供操作系统的信息,进一步细化设备指纹。
  • Cookie Enabled:指示浏览器是否启用了Cookie。
  • Do Not Track:用户是否启用了“请勿追踪”功能。
  • Geolocation:获取用户的地理位置信息(需要用户许可)。
  • Online Status:指示用户当前是否在线。
  • Device Memory:设备的内存大小。

3.使用扩展改变浏览器指纹

我们接着使用 All Fingerprint Defender 这款扩展来修改指纹。它通过劫持DOM API来达到这个目的。

💡

在上图中,很明显可以发现CreepJS检测到了api的篡改。

CreepJS是一款先进的浏览器指纹检测工具,能够识别并忽略被篡改的JavaScript(也称原型谎言)。这确保了指纹数据的准确性,不会被伪造的浏览器数据误导。

CreepJS不仅能识别指纹谎言模式和指纹扩展代码,这些模式和代码通常是浏览器为了保护隐私而设置的障碍,但CreepJS能够识破这些障碍,揭示浏览器隐私保护的漏洞。

此外,CreepJS还会检测浏览器的隐私设置,评估这些设置对指纹识别的影响。它利用高熵的新API进行特征检测和指纹识别,确保所获取的数据难以伪造。CreepJS还进行大规模的数据验证,收集和分析各种不一致之处,从而提高指纹识别的准确性。

通过分析不同浏览器和设备的特征,CreepJS能够生成唯一的指纹。它还会为每个指纹生成一个信任分数,显示这些指纹值的可信度。评分机制包括松散指纹、影子比特、垃圾数据和谎言等因素。

CreepJS之所以高效,是因为它能够从多维度收集数据。它利用WebGL、Canvas、Fonts、Audio、Navigator等API,确保指纹的唯一性和准确性。它还能识别并忽略篡改和谎言,提高指纹数据的可信度。通过云端存储和自我学习机制,CreepJS能动态管理和删除指纹数据,确保数据的新鲜和准确。

总的来说,CreepJS通过其全面的功能和高效的机制,实现了准确的浏览器指纹识别,揭示了现代浏览器和反指纹扩展中的隐私漏洞,为用户提供了更好的隐私保护。

4.总结

在本文中,我们探讨了CreepJS作为新一代浏览器指纹检测站的功能和优势。相比传统的BrowserLeaks,CreepJS在检测范围和全面性上都有显著提升,并且由于其开源属性,全球开发者的不断改进使其保持领先地位。

CreepJS的核心功能包括使用大模型验证指纹的一致性和浏览器API功能进行高熵指纹识别,并最终生成信任评分。信任评分用于反映浏览器指纹值的可信度。

浏览器指纹检测的主要技术涵盖以下方面:

  • WebRTC:支持实时通信,可能暴露IP地址。
  • Timezone & Intl:通过Date和Intl API获取时区和国际化信息。
  • Worker:包括Dedicated Worker、Shared Worker和Service Worker,用于多线程操作。
  • WebGL & Canvas:用于绘制2D和3D图形,生成设备特有的指纹。
  • Fonts:通过字体的加载和渲染差异生成指纹。
  • Audio:通过音频处理和播放的微小差异识别设备特性。
  • Navigator:包含用户代理、语言设置、硬件并发性等信息,用于环境检测和指纹识别。

最后,通过使用扩展程序如All Fingerprint Defender,我们可以修改浏览器指纹。然而,CreepJS能够识别出这些API被篡改的情况,进一步显示其强大的检测能力。

综上所述,CreepJS凭借其广泛而深入的指纹检测功能,成为了当前浏览器指纹检测领域的新星,为用户提供了更精准和可信的指纹检测服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/409279.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 之 浮点数在内存中的存储 详细讲解

文章目录 浮点数浮点数的存储浮点数的存储浮点数的读取例题 浮点数 常见的浮点数:3.14159、1E10(表示1*10^10)等 浮点数家族包括: float、double、long double 类型。 浮点数表示的范围在float.h 中有定义 浮点数的存储 浮点数…

C++研发笔记1——github注册文档

1、第一步:登录网站 GitHub: Let’s build from here GitHub 最新跳转页面如下: 2、选择“sign up”进行注册,并填写设置账户信息 3、创建账户成功之后需要进行再次登录 4、根据实际情况填写个人状态信息 登录完成后页面网站: 5…

手写SpringAOP

一、非注解式简易版AOP 整体流程 1.1 代码 public class Test {public static void main(String[] args){// Aop代理工厂DefaultAopProxyFactory factory new DefaultAopProxyFactory();// 测试对象AOPDemoImpl demo new AOPDemoImpl();// 支撑类:用于存放目标…

配置策略路由实战 附带基础网络知识

背景 作为一个软件开发人员,不可能做到只负责业务开发工作,一旦功能上线或者系统切换就会遇到非常多考验开发人员个人能力的场景,网络调整就是非常重要的一个方面,如果你在系统上线的过程中无法处理一些简单的网络问题或者听不懂…

文件包含漏洞(1)

目录 PHP伪协议 php://input Example 1&#xff1a; 造成任意代码执行 Example 2&#xff1a; 文件内容绕过 php://filer zip:// PHP伪协议 php://input Example 1&#xff1a; 造成任意代码执行 搭建环境 <meta charset"utf8"> <?php error_repo…

Modern C++——不准确“类型声明”引发的非必要性能损耗

大纲 案例代码地址 C是一种强类型语言。我们在编码时就需要明确指出每个变量的类型&#xff0c;进而让编译器可以正确的编译。看似C编译器比其他弱类型语言的编译器要死板&#xff0c;实则它也做了很多“隐藏”的操作。它会在尝试针对一些非预期类型进行相应转换&#xff0c;以…

QT Quick QML 网络助手——TCP客户端

GitHub 源码: QmlLearningPro &#xff0c;选择子工程 Nettools.pro QML 其它文章请点击这里: QT QUICK QML 学习笔记 ● 运行效果&#xff1a; 左侧为常用的网络调试工具&#xff0c;右侧为本项目 UI 效果&#xff0c;前端使用 QML &#xff0c;后端使用C &#xff…

【文档智能 RAG】浅看开源的同质化的文档解析框架-Docling

前言 RAG的兴起&#xff0c;越来越多的人开始关注文档结构化解析的效果&#xff0c;这个赛道变得非常的同质化。 关于文档智能解析过程中的每个技术环节的技术点&#xff0c;前期文章详细介绍了很多内容&#xff1a; 下面我们简单的看看Docling这个PDF文档解析框架里面都有什…

GPIO(通用输入/输出)、中断(hal库)

目录 GPIO&#xff08;通用输入/输出)&#xff08;hal库&#xff09; GPIO工作模式 推挽输出&#xff08;Push-Pull Output&#xff09; 开漏输出&#xff08;Open-Drain Output&#xff09; 复用推挽输出&#xff08;Alternate Function Push-Pull Output&#xff09; 复…

在Ubuntu 22.04测试ebpf-go入门例子

文章目录 1、eBPF-Go依赖1.1 Ubuntu安装ssh server1.2 安装go1.3 安装llvm和clang1.4 安装libbpf和Linux kernel headers 2 编写eBPF C程序3 使用bpf2go编译eBPF C程序4 编写Go程序5 编译运行Go应用程序 eBPF-Go是一个使用eBPF的Go库。它不依赖于C、libbpf或除标准库之外的任何…

Windows单机安装配置mongodb+hadoop+spark+pyspark用于大数据分析

目录 版本选择安装配置Java环境配置Hadoop配置Spark配置 安装pyspark使用Jupyter Notebook进行Spark MongoDB测试参考 版本选择 根据Spark Connector&#xff1a;org.mongodb.spark:mongo-spark-connector_2.13:10.3.0 的前提要求 这里选择使用最新的MongoDB 7.0.12社区版 ht…

基于R语言进行AMMI分析3

参考资料&#xff1a;https://cran.r-project.org/web/packages/agricolae/agricolae.pdf 1、plot()函数 本次介绍的是Agricolae包中的plot.AMMI()函数。此函数可以绘制AMMI双标图&#xff0c;也可以绘制三标图&#xff08;三个坐标轴&#xff0c;IPCA1&#xff0c;IPCA2&…

TiggerRamDisk绕过激活界面,支持最新iOS17.4.1绕过

&#x1f427;技术交流&#xff1a;582022476 ——————— iOS15等待越狱的日子实在太久了&#xff01;checkra1n越狱目前还未发布iOS15系统越狱。 可很多朋友不小心或者大意已经升级到了最新iOS15系统。一般来说这并没有什么大碍&#xff0c;但如果是绕过激活的设备&#…

Cesium 展示——绘制水面动态升高

文章目录 需求分析需求 如图,绘制水面动态升高,作为洪水淹没的效果 分析 我们首先需要绘制一个面然后给这个面一个高度,在回调函数中进行动态设置值【这里有两种,一种是到达水面一定高度停止升高,一种是水面重新升高】/*** @description :洪水淹没* @author : Hukang*…

一起学Java(3)-Java项目构建工具Gradle和Maven场景定位和优缺点对比

在第一步创建的项目&#xff08;java-all-in-one&#xff09;项目里&#xff0c;我们提到了使用Gradle作为项目构建工具。看到这里&#xff0c;不知道你是否有疑惑&#xff0c;什么是项目构建工具。Java项目常用构建工具有哪些&#xff1f;都有什么特点&#xff1f; 带着疑惑&…

工厂现场多功能帮手,三防平板改善管理体验

随着制造业的智能化变革&#xff0c;信息化、自动化和智能化逐渐成为工厂管理的新常态。在这一波技术浪潮中&#xff0c;三防平板作为一种多功能的工作工具&#xff0c;正在逐步改善工厂现场的管理体验。 一、三防平板的定义与特点 三防平板&#xff0c;顾名思义&#xff0c;是…

Python测试框架之—— pytest介绍与示例

Pytest是一个功能强大且易于使用的Python测试框架&#xff0c;它提供了丰富的功能和灵活的用法&#xff0c;使得编写和运行测试变得简单而高效。 一、Pytest的特点 简单灵活&#xff1a;Pytest的语法简洁清晰&#xff0c;容易上手&#xff0c;并且支持复杂的测试场景。自动发…

python库(21):

1 TextBlob简介 TextBlob 是一个基于 Python 的文本处理库&#xff0c;能够让基础的自然语言处理任务变得异常简单。 它提供了一个简单直观的 API&#xff0c;让你能够轻松执行词性标注、名词短语提取、情感分析、文本分类和关键词提取等功能。 值得一提的是&#xff0c;Tex…

Qt+FFmpeg开发视频播放器笔记(二):界面UI搭建

效果图 主要使用无边框窗体搭建,实现窗体的拖动和缩放&#xff0c;播放列表、文件打开等。 主要代码 manwindow设计类 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QMutex> #include "framelesshelper.h"QT_BEGIN_NA…

【网络】传输层协议——TCP协议(进阶)

目录 1.TCP连接的11种状态 2.再次理解三次挥手 2.1.再次理解三次握手 2.2.Socket编程和三次握手的关系 2.2.1.listen的参数 2.2.2.accept函数 2.3.TCP三次握手的优点 2.3.1.阻止重复历史连接的初始化 2.3.2.为什么两次握手不能防止旧的重复连接初始化造成混乱呢&am…