初探Web客户端追踪技术

http://zoo.zhengcaiyun.cn/blog/article/webclient

前言

案例1

当我们首次浏览网站时,在网页的下方位置经常会出现提示,询问是否允许使用 Cookie 来提供服务和流量。为了不被挡住浏览的内容,我们经常会下意识地点击“接受”,然后继续浏览。看似无害而有害增强你在这个网站上的体验的操作,然而很多人没有意识到,当你点下按钮后,网站会塞给你一块饼干(Cookie),接着用这个饼干来换取你的相关信息,甚至能追踪你在网站上的足迹。例如你在当前页面语言选择了“中文”,那么下次再进入到这个网站时,会默认帮你选择“中文”语言。

2488387931.jpg

案例2

在某个网站登录账号时,用户有时候会忘记密码,输入多次后触发了网站的风险机制(如验证码校验),这个时候用户换了另外一个账号登录,然而对于新的账号登录,网站仍然会让当前设备用户处于风险机制中。其原因之一便是你的设备指纹在当前某个时间段内被列入风险用户名单中,在这段时间内,你会持续地触发风险机制。

20230213100234.jpg

常见追踪技术

Cookie追踪

Cookie 是很多网站用于追踪用户行为的手段,服务端会在 HTTP/HTTPS 的响应头部返回 Set-Cookie 字段,浏览器将其自动保存。

对于属于当前网站的 Cookie 的所属域(Domain)中,又可以分为第一方 Cookie(以自身网址后缀存储)和第三方 Cookie(以非自身网站后缀存储)。

2301781751.jpg

当我们在微博上浏览新闻资讯,这个时候可以会刷到某购物网站内嵌的广告,这时候浏览器会同时存在微博和该购物网站的 Cookie ,并且还会惊讶地发现,微博给我们推送的资讯和推荐的广告都符合我们近期浏览的相关内容,这个时候我们便清楚,原来我们的访问行为已经被分析计算出来。

第一方 Cookie

第一方 Cookie 常指的是由当前用户访问的域生成的 Cookie。

当你使用账号登录后,网站会返回属于你的 Cookie,该 Cookie 的所属域是属于当前网站的,Cookie 中还记录着关于你身份的相关信息。使用明确身份在某宝PC购物网站上搜索了“充电器”,用相同的用户登录移动端APP,会得到相似类型的推荐。

1606075787.jpg

image-20221120170035193_副本.png

第三方 Cookie

第三方 Cookie 常指某个 Cookie 的域并不是当前所访问网站的域,一般通过 JS 脚本,图片链接和 iframe 等技术生成。常见的有:

  1. 广告网络商。如熟悉的 Google Adsense(https://adsense.google.com/start/),谷歌通过它们识别大量用户行为,在多个网站中进行广告投放;

  2. 大平台下拥有多个子平台,进行某些用户数据跟踪。如上购物网站,无论是 PC 还是移动端,都源于是同一个平台,即相同域下面。而第三方 Cookie 针对的是不同域下的平台,去预判用户行为和推荐用户的商品。如果在上述购物网站旗下的另一平台上,也对应着推送用户曾经浏览的商品。

image-20221120170704254.png

Flash Cookie

我们常说的 Cookie 一般都是指基于浏览器的 HTTP Cookie。可想,一台用户电脑上安装了多个浏览器,虽然登录的身份是同一个用户,但是却对应着多个 HTTP Cookie,且 HTTP Cookie 存在着过期时间和存储大小限制,所以Cookie 存在着被自动销毁的场景,这个时候 Flash Cookie 技术便可以解决这些问题。

Flash Cookie 顾名思义即通过 Flash 插件来实现本地存储 Cookie,也称之为 Share Object。尽管各个不同的浏览器是隔离的,但是每个浏览器都可以通过Flash 获取 Cookie,除非人为主动去删除,否则 Cookie 可以被持久存储在本地共享对象中。

提及 Flash Cookie,不得不提到 Evercookie 技术。该技术于 2010 年十大黑客技术排行榜中位居第二。Evercookie 使用不同的存储技术将 Cookie 缓存在浏览器、系统中,其中包含着 HTTP Cookie, HTML5 的 LocalStorage/ SessionStorage/globalStoage,Flash Cookie 等多种技术,在用户清除了浏览器 Cookie 数据之后仍能将数据重新恢复。但随着各大浏览器不支持 Flash 技术,Flash Cookie 技术也随着不攻自破。

浏览器指纹追踪

上述的 HTTP Cookie 和 Supper Cookie 都有可能存在着被删除或者禁用的风险,并且随着广告拦截器和 Cookie 清除工具越发高明,单单 Cookie 这项技术就不似那么稳妥了,于是众人又将目光投向浏览器指纹。浏览器指纹是通过对多种特征信息综合分析计算后,生成无状态的客户端指纹,指纹具有唯一性,能够被识别、追踪用户行为和隐私数据。

浏览器的基本特征

所有浏览器应该具备的特征信息称之为浏览器的基本特征其中包含浏览器信息,计算机信息,硬件信息等,这些特征信息综合后得出的指纹仍然会存在相同的碰撞,所以尽管基本特征已经够多,但仍然无法确定用户的身份,还需要更多的信息来参与计算得出最终唯一的指纹。查看当前浏览器的相关信息(https://www.whatismybrowser.com/)。

特征信息 获取方式
浏览器中的浏览器扩展/插件 IE: ActiveXObject 
非IE: window.navigator.plugins
浏览器是否执行 JavaScript 脚本 script标签中判断脚本是否执行
浏览器是否接受各种 Cookie 和Supper Cookie的信息 window.navigator.cookieEnabled
浏览器是否发送 Do Not Track 标头 window.navigator.doNotTrack
浏览器是否支持触屏 document.hasOwnProperty("ontouchstart")
浏览器语言 window.navigator.language
user-Agent window.navigator.userAgent
时区偏移量 new Date().getTimezoneOffset()
地区经纬度 HTML5 Geolocation
操作系统 window.navigator.platform
屏幕信息 window.screen
b2 b3

硬件指纹

音频指纹:AudioContext

利用设备音频设置,把播放音频文件的方式模拟成一个正弦函数,再把正弦函数转化成哈希函数,作为附加熵,结合浏览器的基本特征信息,生成音频指纹。

使用 HTML5 AudioContext API 进行指纹识别,AudioContext 指纹是计算机音频堆栈本身的属性,并不会收集计算机播放和录制的声音。

1393337913.jpg

Canvas 指纹

使用 HTML5 提供的 Canvas API 绘制隐藏元素图片,相同的 Canvas 代码在不同的计算机上绘制出的结果也会出现差异,尽管在肉眼上很难看出区别。这是因为浏览器、操作系统、GPU 和图形驱动器任一设备的不同,都会导致绘制图画时渲染的方式不一样,而这恰恰是指纹的唯一识别。

1054475719.jpg

WebRTC 指纹

浏览器提供 WebRTC 功能,通过 UDP 协议建立连接,从而获取到公共 IP 地址、本地 IP 地址和媒体设备(如摄像头、麦克风)的数量及其哈希值。由于是通过 UDP 协议,所以即便是使用了代理,网站也能够获取到真实的公共和本地 IP 地址。

3970425793.jpg

WebGL 指纹

  1. WebGL 是一个 JavaScript API,可在任何兼容的 Web 浏览器中渲染高性能的交互式 3D 和 2D 图形。不同组合的硬件设备会将该图形转换成唯一的hash值 综合指纹

  2. 分析计算指纹的方法还有许多,以上四种巧妙的方法仍然会出现指纹碰撞的几率。但通过各种综合计算出哈希值的指纹,能够提高它的唯一性。目前已有开源的浏览器指纹库(https://github.com/fingerprintjs/fingerprintjs) ,可查询浏览器属性并从中计算出哈希值,生成浏览器指纹。

防范措施

无痕浏览器

目前基本主流浏览器都支持无痕模式,但是只能拦截住一部分的浏览器追踪痕迹。

禁用 JavaScript 和 Cookie

此方法乃为杀敌一千自损八百,前端大多主流的框架都是由 JavaScript 加载执行渲染,禁用 JavaScript 可能会导致页面异常。但是可以通过禁用第三方的 JavaScript 和 Cookie,但是仍需慎用

禁用 WebRTC 和 Geolocation

通过浏览器的设置,禁用 WebRTC 和 Geolocation,但是此行为也会影响部分网站的体验。

使用防追踪浏览器

候鸟浏览器 (https://www.ehouniao.com/) 通过欺骗站点所能够获取到的参数,修改数字指纹,使得网站读取的与你真实的指纹不同,从而达到防追踪的目的。

结论

浏览器的追踪技术是一把双刃剑,它建立了用户个人信息和网站之间的连接,合理地使用能够大大提高用户的体验,但是同时也存在着隐私泄漏。此前,谷歌和亚马逊均因违规使用 Cookie 而面临着巨额罚单,315 晚会上也多次曝光多家互联网公司窃取侵犯用户隐私信息。尽管这些都骇人听闻,但在国际上大部分国家抓取 Cookie 并不违法,只要合理使用,用户也不用过分恐慌,毕竟无论是 Cookie 还是浏览器指纹能提供的用户信息相对有限。尊重科学精神,提倡文明上网。

参考文献

  • flash cookie - 百度百科

  • 硬件指纹 (https://docs.multilogin.com/l/zh/article/aJHHdYrdmY-audio-context)

  • 浏览器指纹解读 (https://blog.51cto.com/lixi/5377134)

  • WebGL (https://developer.mozilla.org/zh-CN/docs/Web/API/WebGL_API#%E6%8C%87%E5%8D%97%E5%92%8C%E6%95%99%E7%A8%8B)

初探Web客户端追踪技术相关推荐

  1. 浅谈Web客户端追踪

    随着互联网络的广泛普及,数以亿计网民的网络行为数据早已成为最宝贵的资源,企业通过五花八门的各种手段了解网民的行为和隐私数据,用于广告投递.用户兴趣分析等,进而作为决策的依据.利用Web客户端对用户行为 ...

  2. 取代cookie的网站追踪技术:”帆布指纹识别”初探

    博文作者:rices 发布日期:2014-07-28 阅读次数:4120 博文内容: [前言] 一 般情况下,网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集 ...

  3. 一个Web开发的客户端基础技术测试Demo

    最近参加了一个Web开发的客户端基础技术测试,虽然对于做前台开发的程序员来说比较简单,但对于一直做后台代码编写的程序员想掌握前台开发的基础来说,应该是一个比较好的Demo.对于Web初学者来说,也是一 ...

  4. django——会话追踪技术

    1.引言 1.1什么是会话追踪技术 会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程. 1.2 什么是会话跟踪 对同一个用户对服务器的连续的请求和接受响应的监视.(将用户与同一用户发出 ...

  5. Canvas 指纹追踪技术

    目录 1. 设备指纹技术介绍 1.1 第一代 -- cookie / evercookie 1.2 第二代 -- 浏览器指纹技术 1.3 第三代 -- 发现设备后面的人 2. 指纹的分类 2.1 普通 ...

  6. 2.5代指纹追踪技术—跨浏览器指纹识别

    01. 研究背景 在如今,做安全防御已经不仅仅是被动的等着攻击者攻击,作为防御方,有越来越多的方法去反击攻击者,甚至给攻击者一些威胁. 设备指纹技术是一种长久有效的追踪技术,即使攻击者挂再多 vpn, ...

  7. 指纹浏览器指纹追踪技术:指纹浏览器开源代码,浏览器指纹js插件

    指纹追踪技术(指纹浏览器)的前世今生: 1).第一代 第一代指纹追踪是cookie这类的服务端在客户端设置标志的追踪技术,evercookie 是 cookie 的加强版. . 第二代 第二代指纹追踪 ...

  8. Node.js 应用全链路追踪技术——全链路信息存储

    作者:vivo 互联网前端团队- Yang Kun 本文是上篇文章<Node.js 应用全链路追踪技术--全链路信息获取>的后续.阅读完,再来看本文,效果会更佳哦. 本文主要介绍在Node ...

  9. 怎么理解分布式链路追踪技术?

    ▲ 点击上方"分布式实验室"关注公众号 回复"1"抽取纸质技术书 - 1 - 为什么需要链路追踪 在学习分布式链路追踪之前,我们需要先理解这项技术产生的背景,以 ...

最新文章

  1. 在mac上搭建octopress+github pages博客
  2. SqlServer用户数据库的系统视图sysobjects、syscolumns、systypes
  3. 【Linux系统编程】IO多路复用之select
  4. 用jquery + iframe實現iframe子頁面加載完前的緩沖效果
  5. Java-进阶:多线程1
  6. windows下配置tensorflow
  7. LeakCanary上传 leak trace 到服务器
  8. 2021年中国中性段开关检测器市场趋势报告、技术动态创新及2027年市场预测
  9. 透过用户思维谈程序员的进阶之路
  10. Lucene(.net)学习
  11. git rebase后无法push远程分支的问题解决
  12. matlab中norm函数的用法
  13. OSChina 周四乱弹 —— 月中发工资还没到家……
  14. java计算两个经纬度之间的直线距离
  15. 前沿科技-混合现实(MR)远程协作辅助工具:微缩虚拟形象Mini-Me
  16. 微信小程序 - 婚礼邀请函
  17. vim 复制、删除多行
  18. java程序员进阶必读书单
  19. top和margin-top的区别
  20. MATLAB AppDesigner 中TextArea保留原有信息并换行显示提示信息

热门文章

  1. 什么是滚柱直线导轨?
  2. Apollo:pnc map
  3. 海上钢琴师(电影) --决赛音乐
  4. 69页完整版智慧港口综合解决方案
  5. 现代化智慧港口管理体系建设的详情分析
  6. MXNet 0.11发布,加入动态图接口Gluon,还有两位CMU教授的亲笔教程
  7. 5.2_1 北师大应用心理(MAP)347心理学专业综合 持续更新
  8. 旗舰机皇诺基亚9强势来临,时光概念机曝光却没想到还有这个!
  9. 识别图片中文字的三种方法/图片转文字
  10. python无法导入模块_python导入模块失败的原因是什么