浏览器:浏览器指纹

news2025/7/16 2:27:51

一、引子

场景一、绑定用户与浏览器(设备),比如某一个网站的账号给到用户,用户只能在自己的电脑的某浏览器使用。

场景二、精准推送广告。

场景三、公司做营销活动,防止活动奖品被程序薅羊毛。

等等场景我们有什么技术方法实现或避免呢,本文介绍浏览器指纹来实现。

二、浏览器指纹简介:

2.1、简介

我们常说的指纹,指人们手指上的指纹,具有唯一性,可以标识一个人的唯一身份。
浏览器指纹是指仅通过浏览器的各种信息,包括CPU核心数、显卡信息、系统字体、屏幕分辨率、浏览器插件(Flash、Silverlight、Java等)、浏览器扩展、浏览器设置、时区偏移量(浏览器GMT偏移量)和许多其他信息的特征组合成的一个字符串,就能近乎绝对定位一个用户,就算使用浏览器的隐私窗口模式,也无法避免。

2.2、浏览器基本指纹

基本指纹是任何浏览器都具有的特征标识,比如硬件类型(Apple)、操作系统(Mac OS)、用户代理(User agent)、系统字体、语言、屏幕分辨率、浏览器插件 (Flash, Silverlight, Java, etc)、浏览器扩展、浏览器设置 (Do-Not-Track, etc)、时区差(Browser GMT Offset)等众多信息,这些指纹信息“类似”人类的身高、年龄等,有很大的冲突概率,只能作为辅助识别。

硬件指纹通过检测硬件模块来获取信息,这些模块补充了基于软件的指纹。硬件模块包括GPU、摄像头、扬声器/麦克风、运动传感器、GPS、电池、CPU、网络适配器、蓝牙和BOIS等。

2.3、浏览器行为指纹

这里拿电商网站举例,我们浏览任意商品,停留页面的时长,经常购买的品类,商品的尺码大小等等都可以被记录在本地的cookie里作为行为指纹,帮助广告商精准投放广告,也可以帮助电商网站训练推荐模型为你做到精准推荐。所以“大数据可能比你还要了解你自己”可不是说说而已。

2.4、浏览器高级指纹

基本指纹就像人的外貌、身高、体重、性别,很难从肉眼的角度去区分浏览器,那么高级指纹对于浏览器来说,就像DNA一般精准(不要害怕,也是有极限的)本文会介绍到目前广泛使用的三大高级指纹:canvas指纹/WebGL指纹/Audio音频指纹

三、浏览器指纹的发展:

浏览器指纹技术的发展跟大多数技术一样,并非一蹴而就的,现有的几代浏览器指纹技术是这样的。

第一代是状态化的,主要集中在用户的 cookie 和 evercookie 上,需要用户登录才可以得到有效的信息。

第二代才有了浏览器指纹的概念,通过不断增加浏览器的特征值从而让用户更具有区分度,例如 UA、浏览器插件信息等。

第三代是已经将目光放在人身上了,通过收集用户的行为、习惯来为用户建立特征值甚至模型,可以实现真正的追踪技术。但是目前实现比较复杂,依然在探索中。

目前浏览器指纹的追踪技术可以算是进入 2.5 代,这么说是因为跨浏览器识别指纹的问题仍没有解决。

四、浏览器指纹技术

4.1、Canvas画布指纹

许多网站和跟踪软件使用HTML画布指纹。因为每个浏览器都会生成不同的模式。基本上,每种浏览器都会使用不同的图像处理引擎,不同的导出选项,不同的压缩级别,这样每台电脑绘制的图片都会略有不同,这些图案可以用来为用户设备分配特定数量的指纹,也可以用来识别不同的用户。

function getCanvasFingerprint () {    
    var canvas = document.createElement('canvas');    
    var context = canvas.getContext("2d");    
    context.font = "18pt Arial";    
    context.textBaseline = "top";    
    context.fillText("Hello, user.", 2, 2);    
    return canvas.toDataURL("image/jpeg");
}
getCanvasFingerprint()

chrome浏览器

联想浏览器

经过对比确实不一样。

4.2、混淆 Canvas 指纹

详解浏览器指纹 - 简书

4.3、混淆其他指纹

与前面混淆canvas指纹混淆的思路是一致的,都是更改被获取对象的原型的方法。

比如混淆时区,就是更改 Date.prototype.getTimezoneOffset 的返回值。

混淆分辨率则是更改documentElement.clientHeight documentElement.clientWidth

混淆 WebGL 则要更改 WebGLbufferData getParameter方法等等。

4.4、AudioContext 音频上下文指纹

如果画布指纹是模式指纹,音频上下文就是声音指纹。

音频API使开发人员能够直接在代码中操作原始音频流数据,生成、操作和以任何他们想要的方式重现这些数据,例如改善音调、改变音调和分割音频。

AudioContext生成音频流(三角波),对其执行FFT变换,计算SHA值作为指纹,并在音频输出到音频设备之前清除音频,而用户不会注意到。

主机或浏览器的硬件或软件的细微差异会导致音频信号处理的差异。同一设备上的同一浏览器产生相同的音频输出,而不同机器或浏览器生成的音频输出可能有所不同。这样就可以作为浏览器指纹的跟踪技术。

javascript - 你的浏览器,独一无二 --解读浏览器指纹 - 烧鱼的前端小记 - SegmentFault 思否

方法5、WebGL 指纹

详解浏览器指纹 - 简书

4.6、综合指纹

生活场景中,同一批次同一型号的电脑,使用相同的浏览器就很有可能产生相同的“高级指纹”,存在一定的重复率,这个时候就需要结合上述的所有指纹,经过分析,计算最终的综合指纹作为判断。这样就可以大大降低碰撞率,极大提高客户端唯一性识别的准确性。

4.7、fingerprintjs2

前端使用fingerprintjs2获取浏览器指纹_Boale_H的博客-CSDN博客_fingerprintjs2

五、如何防止被生成指纹:

方法一、

详解浏览器指纹 - 简书

方法二、

我们也有一些简单的方法来防止被生成用户指纹。例如我们可以通过浏览器的扩展插件(Canvas Blocker、WebGL Fingerprint Defender、Fingerprint Spoofing等),在网页加载前执行一段 JS 代码,更改、重写 JS 的各个函数来阻止网站获取各种信息,或返回一个假的数据,以此来保护我们的隐私信息。

六、过程记录:

记录一、浏览器指纹弥补了通过浏览器不易获取ip的缺陷。

记录二、浏览器指纹作用

对于网站而言,拿到浏览器指纹并没有实际价值,真正有价值的是浏览器指纹对应的用户信息。作为网站站长,收集用户浏览器指纹并记录用户的操作,是一个有价值的行为,特别是针对没有用户身份的场景。

例如一个视频网站,未注册该网站的用户 A 喜欢浏览二次元的视频,通过浏览器指纹记录这个,那么下次可以直接向该浏览器推送二次元的视频。因为现在的上网设备大都是私人的,这样的推送方式很容易获得大部分用户的好感,从而使之成为网站的用户。

记录三、浏览器指纹保护您的权利

现在网络技术越来越发达,很多事情都可以在网络上完成。比如收付,现在你不需要开车去银行用手机或电脑访问你的账户。

然后小偷们改进了他们的方法,他们不是从购物街上的人群中偷银行卡,而是钻研计算机技术,试图在网上窃取你的存款。当他们访问你的帐户和密码时,他们将被阻止登录,这就是浏览器指纹技术发挥作用的地方。

小偷使用的电脑和你登录网银所用的电脑不一样,甚至连网络也不一样。当他从那台电脑登录时,浏览器指纹识别技术会识别出设备的指纹。网络随后意识到这是一个不熟悉的指纹,并谨慎地向您发送提醒,邀请您验证您的帐户。没有收到验证信息的窃贼是拿不到你的钱的。

记录四、浏览器指纹识别安全吗?

浏览器指纹识别是安全的,只要没有人恶意使用它,但现实是,除了好处,它确实给我们带来了一些问题。

在过去,你被窃取的隐私可能是一些具体的东西。说出你的名字,你的银行卡号。但是现在,你的浏览器指纹也是一个非常重要的数据。犯罪分子可以用它来诈骗你,有些企业想从你的行为中赚钱。您可能会产生以下效果:

1) 受到浏览器指纹的监控

获取浏览器指纹对网站没有实际价值,但真正有价值的是浏览器指纹对应的用户信息。作为网站管理员,在没有用户身份的情况下,收集用户的浏览器指纹并记录用户的行为是一项有价值的活动。

例如,如果你喜欢阅读动漫,浏览器指纹会记录下你的兴趣。下次访问此站点时,无需登录即可获取推送的动画信息。这是一种非常通用的分发内容的方法。此外,你的购物偏好也会受到浏览器指纹的监控。

其结果是浏览器指纹能准确地知道你喜欢什么。当别人用你的电脑访问互联网时,网络只识别机器,而不识别使用它的人,所以别人很容易就把你的一些偏好传递给你,并被推到你的一些偏好上。

2) 浏览器指纹识别追踪技术

浏览器指纹识别是商业平台上检查账户关联的重要工具。众所周知,一些电子商务平台非常重视市场秩序,你在打开产品页面时看到过很多产品都有相同的图片,这可能是恶意竞争,也许有人为了占领市场而开了很多商店购买同样的产品。

为了防止此类情况发生,电子商务平台使用浏览器指纹来确定哪些店铺属于同一商家。如果被发现,平台将进行处罚。

因此,最简单、可靠且安全的大批量打开浏览器的方法是运用虚拟浏览配置文件。通过AdsPower指纹浏览器,你只需要在一台电脑上创建多个相当于真实设备的浏览器配置文件。

它们互不干扰,确保指纹之间不会相互泄露。在网络平台看来,这些浏览器的指纹就是真实设备的浏览器指纹,所以不会怀疑你的身份。

AdsPower多开的浏览器设定了独立的指纹,包括时区、默认语言、User Agent、字体、分辨率等。您可以试用系统提供的指纹信息,也能自定义指纹信息。

AdsPower指纹浏览器+代理IP=同设备多账号隔离访问。让您可以在互联网上运营账号和店铺保持安全,而且你还能同时连接到多个社交媒体帐户,不被平台检测到关联,这也就不存在账号被封禁的危险。

记录四、

基本指纹就是容易被发现和修改的部分,如 http 的 header。

{  "headers": {    
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",     
    "Accept-Encoding": "gzip, deflate, br",     
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",     
    "Host": "httpbin.org",     
    "Sec-Fetch-Mode": "navigate",     
    "Sec-Fetch-Site": "none",     
    "Sec-Fetch-User": "?1",     
    "Upgrade-Insecure-Requests": "1",     
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
  }}

除了 http 中拿到的指纹,还可以通过其他方式来获得浏览器的特征信息,例如:

每个浏览器的UA

浏览器发送的 HTTP ACCEPT 标头

浏览器中安装的浏览器扩展/插件,例如 Quicktime,Flash,Java 或 Acrobat,以及这些插件的版本

计算机上安装的字体。

浏览器是否执行 JavaScript 脚本

浏览器是否能种下各种 cookie 和 “super cookies”

是否浏览器设置为“Do Not Track”

系统平台(例如 Win32、Linux x86)

系统语言(例如 cn、en-US)

浏览器是否支持触摸屏

拿到这些值后可以进行一些运算,得到浏览器指纹具体的信息熵以及浏览器的 uuid。

这些信息就类似人类的体重、身高、肤色一样,有很大的重复概率,只能作为辅助识别,所以我们需要更精确的指纹来判断唯一性。

七、本文总结自网络,欢迎交流指正,关注我,一起学习。

八、参考链接:

前端使用fingerprintjs2获取浏览器指纹_Boale_H的博客-CSDN博客_fingerprintjs2

javascript - 你的浏览器,独一无二 --解读浏览器指纹 - 烧鱼的前端小记 - SegmentFault 思否

详解浏览器指纹 - 简书

什么是浏览器指纹?一文详解浏览器指纹追踪技术

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt配置VS的编译环境(以MSVC2015 64bit为例)

目录 一、原因 二、VS2015安装 三、配置套件(Kits) 一、原因 很多时候,由于VS版本切换,需要从高版本切换到低版本,或者从低版本升级到高版本,例如VS2019到VS2015,或者VS2010到VS2015。 以VS2…

辽宁千圣文化:抖音店铺怎么做二次优化?

抖音商品卡订单是指永华在抖音、抖音极速版,通过直播的方式出现短视频页面商品卡之后,直接成交商品详情页直接成交后的订单,那么跟着辽宁千圣文化小编来一起看看吧!一.与政策有关1.什么是「商品卡订单」?用户通过抖音、…

FCN网络(Fully Convolutional Networks)

首个端到端的针对像素级预测的全卷积网络 原理:将图片进行多次卷积下采样得到chanel为21的特征层,再经过上采样得到和原图一样大的图片,最后经过softmax得到类别概率值 将全连接层全部变成卷积层:通常的图像分类网络最后几层是全…

六、死信队列

1、死信的概念 2、死信来源 3、死信实战 3.1 代码架构 正常队列绑定正常交换机正常队列绑定死信交换机死信队列绑定死信 3.2 消息TTL过期变成死信 生产者向 normal_exchange发送消息,通过路由键zhangsan路由到 normal-queue中,消息设置TTL属性 /**…

【自监督论文阅读笔记】What Makes for Good Views for Contrastive Learning?

Abstract 数据的多个视图之间的对比学习最近在自监督表示学习领域取得了最先进的性能。尽管取得了成功,但对不同视角选择的影响研究较少。在本文中,我们使用理论和实证分析来 更好地理解视图选择的重要性,并认为我们应该减少视图之间的互信息…

三分钟完成Stable Diffusion本地安装(零基础体验AI绘画)

三分钟完成Stable Diffusion本地安装前言安装步骤下载链接前言 最近AI绘画很火,很多无编程基础的小伙伴也想体验一下,所以写这篇博客来帮助小伙伴们愉快的体验一下~废话少说,我们直接开整! 安装步骤 首先,下载本项目的…

电脑启动后显示器黑屏怎么办?排查下面4个问题,快速解决

电脑启动出现显示器黑屏是一个相当常见的问题。如果您遇到了这个问题,不要惊慌,因为它有很多可能的原因,可以采取一些简单的措施来解决它。在本文中,小编将介绍下面4种常见的电脑启动后显示器黑屏的原因,排查这些原因&…

合并两个有序链表(精美图示详解哦)

全文目录引言合并两个有序链表题目描述方法一:将第二个链表合并到第一个思路实现方法二:尾插到哨兵位的头节点思路实现总结引言 在前面两篇文章中,我们介绍了几道链表的习题:反转链表、链表的中间结点、链表的倒数第k个结点&…

基于单细胞多组学数据无监督构建基因调控网络

在单细胞分辨率下识别基因调控网络(GRNs,gene regulatory networks)一直是一个巨大的挑战,而单细胞多组学数据的出现为构建GRNs提供了机会。 来自:Unsupervised construction of gene regulatory network based on si…

力扣sql简单篇练习(二十四)

力扣sql简单篇练习(二十四) 1 各赛事的用户注册率 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 SELECT contest_id,ROUND(count(*)/(SELECT count(user_id) FROM Users)*100,2) percentage FROM Register GROUP BY contes…

MQTT协议-使用CONNECT报文连接阿里云

使用网络调试助手发送CONNECT报文连接阿里云 参考:https://blog.csdn.net/daniaoxp/article/details/103039296 在前面文章介绍了如何组装CONNECT报文,以及如何计算剩余长度 CONNECT报文:https://blog.csdn.net/weixin_46251230/article/d…

【C语言】详解静态变量static

关键字static 在C语言中:static是用来修饰变量和函数的static主要作用为:1. 修饰局部变量-静态局部变量 2. 修饰全局变量-静态全局变量3. 修饰函数-静态函数在讲解静态变量之前,我们应该了解静态变量和其他变量的区别: 修饰局部变量 //代码1 #include &l…

OpenTelemetry 实现方案

OpenTelemetry 有很多种组合和实现方案,我们分别来了解一下 OpenTelemetry 在三种不同技术架构下的使用方式。 1、OpenTelemetry to 开源工具组合 作为经典的对各种遥测数据的处理架构,开源工具可将不同类型的数据存储在不同的平台,比如日志…

倒立摆建模

前言 系统由一辆具有动力的小车和安装在小车上的倒立摆组成,系统是不稳定,我们需要通过控制移动小车使得倒立摆保持平衡。 具体地,考虑二维情形如下图,控制力为水平力FFF,输出为角度θ\thetaθ以及小车的位置xxx。 力…

【WebRTC---序篇】(五)信令逻辑

关于信令的几个问题 信令发送的过程信令发送的时机:用户点connec按钮;选中connect按钮后,按回车键; Windows会分发给消息处理机制,而触发OnDefaultAction中调用Conduction的StartLogin; StartLogin里面会调用pcc_client(信令模块)的Connect; 如果是域名,进行域名解析,之后…

SQL注入——布尔盲注

目录 一,盲注的概念 二,盲注分类 三,注入方法的选择 四,关键函数 五,实例 一,盲注的概念 页面没有报错回显,不知道数据库具体返回值的情况下,对数据库中的内容进行猜解&#x…

【历史上的今天】3 月 8 日:游戏机之父诞辰;搜索技术理论之父出生;MIT 公开演示旋风计算机

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 8 日,在 1857 年的今天,美国纽约制衣和纺织女工举行了首次大型抗议活动。妇女节是纪念妇女权利运动的国际性节日。设立国际妇女节…

【打卡-Coggle竞赛学习2023年3月】对话意图识别

学习链接: https://coggle.club/blog/30days-of-ml-202303 ## Part1 内容介绍 本月竞赛学习将以对话意图识别展开,意图识别是指分析用户的核心需求,错误的识别几乎可以确定找不到能满足用户需求的内容,导致产生非常差的用户体验…

2.6 棋盘覆盖

在一个2*x2‘个方格组成的棋盘中,若怡有一个方格与其他方格不同,则称该方格为特殊方格,且称该棋盘为一特殊棋盘。显然,特殊方格在棋盘上出现的位置有 4种情形因而对任何k0,有4‘种特殊棋盘。图2-4 申的特殊棋益是12时 …

【项目设计】高并发内存池(七)[性能测试和提升]

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…