乐趣区

关于前端:从前端视角看浏览器隐身模式下你是如何被追踪的

  本文从科普和技术视角对浏览器隐身模式进行介绍,全文脉络如下,读者可依据趣味抉择对应章节浏览。

意识隐衷模式

隐衷模式暗藏了什么

  古代网络浏览器,大多数都减少了 隐衷浏览模式 来浏览网页,旨在爱护用户隐衷。Chrome 称之为隐身模式;Opera、Safari 和 Firefox 中个别称为隐衷浏览。这些模式以 深色主题和蒙面人物图标 为特色,能够给用户一种 匿名浏览的印象 。芝加哥大学和汉诺威莱布尼茨大学的钻研人员发现, 人们对隐衷浏览或隐身模式存在很多误会,许多用户认为隐衷浏览能够爱护他们免受恶意软件、广告、跟踪脚本和互联网服务提供商 (ISP) 的监控。

  其实,隐衷浏览旨在防止在计算机上保留浏览会话的痕迹 。因而,当你关上隐衷窗口时,主浏览窗口中的 cookie、浏览历史不会被保留。当你敞开隐衷浏览窗口时,你的浏览历史记录、保留的明码以及你在该窗口的文本字段中键入的内容(用户名、电话号码等)都将被擦除。 这意味着应用你的计算机并启动浏览器的下一个人将无奈找出你在私人浏览会话期间拜访了哪些网站,即使是你本人,当下次应用这些网站未登录帐户时,你也将以新用户的身份呈现。

  隐衷浏览是一种十分有用且不便的工具,可用于疾速浏览会话,不会在你的计算机上留下痕迹。它将爱护你的隐衷免受应用你计算机的其他人的侵害,并缩小你在拜访网站时走漏的一些无关你本人的信息 。然而 隐衷浏览不会让你匿名,也不会爱护你免受监督和大型技术窥探

  说到泄露隐衷,很多人认为只有本人不登录、不应用 cookie,应用浏览器的无痕模式,本人的数据信息就是平安的、本人浏览了什么就只有本人晓得了,那么,咱们无妨间接看看浏览器官网本人的定义吧。

  无痕模式(Incognito mode)是 Chrome 浏览器的一种设置,在 Chrome 浏览器里,它是这样形容的:

  简略来说,Chrome 无痕模式只是帮你删除了你存在本地的搜寻和浏览记录,只是看起来“无痕”而已。要在 Chrome 中以隐身模式关上页面,请单击右上角的三点图标,从呈现的下拉菜单中抉择关上新的无痕窗口,或按 Ctrl+Shift+N。一个带有深色主题的新窗口弹出,并显示一条告诉:“您已进入无痕模式”,细则解释了隐身模式的优缺点。默认状况下,第三方 cookie(用于跨不同站点跟踪你)被禁用。

  至于如何开启隐身模式,置信大多数人都是晓得的,如果不晓得,或者不晓得某一款特定的浏览器如何开启隐身模式,能够参考上面这个链接。

How do I set my browser to Incognito or private mode?

  在实践中,即便在隐衷模式下,网站依然能够通过 关联其余信息 来发现你的身份,例如你的 IP 地址、设施类型和浏览习惯(一天中的工夫、拜访的页面等),隐衷浏览不会暗藏任何数据。Facebook 和 Google 等大型科技公司领有大量对于用户的信息,通过连贯这些点,即便你尚未登录帐户,它们也能够辨认你的身份。

浏览器隐身模式真的能够隐身吗?

  通过后面的介绍,想必你的答案是确定的:不能。

  咱们能够通过一个展现隐衷浏览跟踪的示例网站 —— Nothing Private 来证实这一点。这个网站的测试形式是让你先提交一个你的标识信息,之后让你应用浏览器的无痕模式拜访网站,猜猜网站会不会认出你。

  这里,我先填入了“獨釣寒江雪”,很显著的,当我提交信息时,浏览器除了发送了我填写的“獨釣寒江雪”,还有一个 finger 字段。

  当我应用无痕模式再次关上这个网站时,浏览器又携带了雷同的 finger 字段去服务器查问相干信息,于是,我被辨认进去了

  综上:浏览器无痕模式并不能爱护你的数据信息不被网站的服务器所获取。精确的说,无痕模式就是自欺欺人而已。有趣味的话,您无妨亲自去 Nothing Private 体验一下,对于它的原理,后续章节会持续介绍。

隐衷模式不能干什么

  • 它不会爱护你免受病毒或恶意软件的侵害;
  • 它不会让你的 Internet 服务提供商 (ISP) 无奈看到你上网的地位(事实上,无论你做什么,你的 ISP 简直都能够拜访你的所有浏览流动);
  • 它不会阻止网站查看你的理论地位;
  • 当你敞开网页时,你在隐衷浏览或隐身模式下保留的任何书签都不会隐没,它会被增加到你的失常浏览网页的书签中;
  • 敞开窗口时不会删除你在私密浏览时下载到计算机的文件。

隐衷模式应用现状

  2017 年,DuckDuckGo 对 5,710 名美国人进行了浏览器隐衷模式考察,以理解人们对隐衷模式的意识以及他们如何应用这一常见的隐衷性能,残缺报告可参考:A Study on Private Browsing: Consumer Usage, Knowledge, and Thoughts。

  简略总结如下:

  • 46% 的美国人应用过隐衷浏览;

  • 人们应用隐衷浏览的第一个起因是“令人难堪的搜寻”;

  • 76% 应用隐衷浏览的美国人无奈精确辨认其提供的隐衷劣势;

  • 65% 的受访者示意,在理解隐衷浏览的局限性后(隐衷浏览模式只会阻止你的浏览器历史记录被记录在你的计算机上,并不会提供任何额定的爱护),他们感到“诧异”、“误导”、“困惑”或“受到挫伤”;

  • 84% 的美国人会思考尝试应用另一个次要的网络浏览器,如果它能提供更多功能来帮忙爱护他们的隐衷的话。

参考资料:Is Private Browsing Really Private?

从技术视角看隐身模式

用户拜访网站的过程

  个别状况下,用户拜访网站的过程如下图所示:

  当一位用户浏览网页时,个别会进行以下操作:

  • 关上浏览器,输出网址。这时候浏览器就会默默将此过程保留在历史记录中;
  • 连贯申请通过用户家中的网线,层层递进,达到互联网供应商的骨干网络,再接着连贯到用户申请的网站地址,这个时候就网站就能拿到用户的 IP 地址了;
  • 网站返回数据给用户,网页大部分的内容作为临时文件被暂存在用户电脑中;
  • 用户如果进行注册 / 登录,则会将用户信息保留 / 更新在服务器端。将 Cookie 保留在本地作为验证用户的一种形式,防止用户屡次重复的登录。当然进行注册时填写的手机号、邮箱、家庭住址也会被浏览器记录,不便用户下次调用。

  能够看到整个过程一般而言有 3 种数据是保留在用户的电脑上的,那就是浏览记录、临时文件与 Cookie 和表单填写的内容。而有 1 或 2 种的数据被保留在了网站那边,就是 IP 地址和用户填写的注册信息。

  当初十分多的公司和学校建设了专有的网络环境,对外只显示 1 个 IP,数据返回的时候再发送到相应的内网 IP 上。雇主和学校有心想看的话还是可能晓得内网的某个人浏览了什么。对于 HTTP 网站链接,雇主和学校可能残缺的理解用户浏览了哪些网站,用户看了哪些内容,停留了多久,针对哪些网站进行了点击跳转等等;对于 HTTPS 网站链接,因为证书的存在和相应的验证机制,一般而言 HTTPS 解密(中间人攻打)很难动员,所以只可能理解到用户浏览了哪些网站而已。同时不失当的网络环境也会将本人的浏览记录裸露在别人的视线中,比方收费专用的 Wi-Fi。

浏览器隐身模式检测的博弈

  在 Chrome 76 之前,存在一个破绽,许多网站利用该破绽来检测用户是否在 Chrome 的隐身模式下拜访网站。这些网站只须要 尝试应用 FileSystem API 用于存储长期或永恒文件的。此 API 在隐身模式下被禁用,但在非隐身模式下存在,因而产生了差别,该差别被利用来检测用户是否正在应用隐身模式浏览网站并阻止这些用户查看网站的内容。

const fs = window.RequestFileSystem || window.webkitRequestFileSystem;
if (!fs) {console.log('check failed?');
} else {
  fs(
    window.TEMPORARY,
    100,
    console.log.bind(console, 'not in incognito mode'),
    console.log.bind(console, 'incognito mode')
  );
}

  起初谷歌修复了一个破绽,可怜的是,他们的修复导致了另外两种办法,依然能够用来检测访问者何时进行私密浏览。

  • 基于文件系统大小检测隐身模式:该办法基于为浏览器应用的外部文件系统预留的存储量。平安钻研人员 Vikas Mishra 发现,Chrome 隐身模式和非隐身模式之间存储配额存在区别,如果长期存储配额 <= 120MB,那么能够必定地说它是一个隐身窗口。这个办法次要通过navigator.storage.estimateAPI 来进行获取和判断。
if ('storage' in navigator && 'estimate' in navigator.storage) {const { usage, quota} = await navigator.storage.estimate();
  console.log(`Using ${usage} out of ${quota} bytes.`);

  if (quota < 120000000) {console.log('Incognito');
  } else {console.log('Not Incognito');
  }
} else {console.log('Can not detect');
}
  • 通过拜访工夫检测隐身模式:在读取和写入数据时,内存文件系统总是比磁盘文件系统快。在隐身模式下,Chrome 会将写入 API 的数据存储在内存中,而不是像在失常模式下那样将数据长久化到磁盘。这种新的检测办法是由研究员 Jesse Li 发现的,它测量对浏览器文件系统的一系列写入。依据这些写入的速度,网站实践上能够确定浏览器是否应用隐身模式。避免这种检测办法的惟一办法是让隐身模式和一般模式应用雷同的存储介质,以便 API 无论如何都以雷同的速度运行。

  Chrome 开发人员看到了这两点:在 2018 年 3 月的设计文档中,他们确定了基于工夫和文件系统大小检测隐衷模式的危险,并进行了代替实现:只将元数据保留在内存中,并加密磁盘上的文件。这将解决网站应用工夫来辨别内存和磁盘存储的危险,并打消基于文件系统大小和文件系统类型(长期与长久)的差别。

  然而,这样的解决方案有其本身的衡量。尽管它能够抵挡隐衷模式检测,但它会留下元数据:即便数据自身无奈解密,它的存在也提供了隐身应用的证据。

  如果咱们思考隐身模式的威逼模型,其次要目标是爱护同一设施的其余用户的隐衷,而不是您拜访的网站的隐衷,这种衡量可能是不值得的。

隐衷模式下如何标识用户

设施惟一标识与浏览器指纹

  咱们都晓得,浏览器隐身模式能够让他人无奈晓得你都拜访了什么网站和做了什么操作,在隐身模式下,关上的网页和加载的文件不会记录到你的浏览历史记录以及加载历史记录中。在你敞开关上的全副隐身窗口后,零碎会删除所有新 Cookie。然而,做为程序猿的咱们,如果有相似以下场景:

  • 当产品和数据分析师须要更精准的数据时;
  • 当无需登陆的页面(如社区文章)须要杜绝隐身模式刷 UV 访问量时;
  • 当无需登陆的投票站点须要杜绝隐身模式重复投票点赞时;
  • 当无需登陆的问卷类网站,须要限度用户只能进行一次问卷提交或者第二次关上,须要展现前次提交的后果时;

  这对咱们来说,无疑是一个微小的困扰,咱们或者都晓得 设施惟一标识 的概念,但在浏览器端,在隐身模式下,在无需用户额定受权时,咱们该如何拿到设施惟一标识呢?

  在开发场景下,惟一的标识一个设施是一个基本功能,能够领有很多利用场景,比方 软件受权(如何保障你的软件在受权后能力在特定机器上应用)、软件 License,设施标识,设施身份辨认 等。

  如果说要获取设施惟一标识,兴许你会想到相似 IMEI、Android ID、MAC 地址等思路,然而 Android 10 中官网文档 中有以下两个表述:

  • 从 Android 10 开始,利用必须具备 READ_PRIVILEGED_PHONE_STATE 特许权限能力拜访设施的不可重置标识符(蕴含 IMEI 和序列号)。
  • 默认状况下,在搭载 Android 10 或更高版本的设施上,零碎会传输随机调配的 MAC 地址。

  一个电脑可能存在多个网卡,多个 MAC 地址,MAC 地址另外一个更加致命的弱点是,MAC 地址很容易手动更改。

  至于 Android ID,则不具备真正的唯一性,ROOT、刷机、复原出厂设置、不同签名的利用等都会导致获取的 Android ID 产生扭转,并且不同厂商定制的零碎的 BUG 会导致不同的设施可能会产生雷同的 Android ID。

  其余一些获取设施惟一标识的办法,这篇文章有比拟全面的阐述:

获取设施惟一标识(Unique Identifier):Windows 零碎

  广告商是如何追踪咱们?日常应用手机该怎么爱护隐衷这篇文章有一张图则是一个更好的汇总:

  而如果回到咱们前端场景下,以上这些办法又多了很多局限性,比方有的须要特许权限,有的须要依赖于原生开发的配合,那么,有没有一种 只须要前端参加 ,也能够取得不错的准确率的惟一标识计划呢?—— 此时就到了 浏览器指纹 退场的时候了。

  FingerPrint 即咱们常说的指纹识别,应用手指和拇指前端的纹理按下的纹印来鉴定身份。指纹是甄别身份的一种牢靠的办法,具备唯一性,因为每个人的每个指头上的纹理排列各不相同而且不因发育或年龄而扭转。而浏览器指纹是指仅通过浏览器的各种信息,如 CPU 外围数、显卡信息、零碎字体、屏幕分辨率、浏览器插件等组合成的一个字符串,就 能近乎相对定位一个用户,就算应用浏览器的隐衷窗口模式,也无奈防止

  这是一个被动的辨认形式。也就是说,实践上你拜访了某一个网站,那么这个网站就能辨认到你,尽管不晓得你是谁,但你有一个惟一的指纹,未来无论是 广告投放、精准推送、平安防备,还是其余一些对于隐衷的事件,都十分不便。

浏览器指纹的技术点与分类

  • 根本指纹:浏览器根本指纹是任何浏览器都具备的特色标识,比方 UserAgent、屏幕分辨率、CPU 外围数、内存大小、浏览器插件及扩大、浏览器设置、语言、硬件类型、操作系统、时区、地理位置、DNS、SSL 证书等泛滥信息,这些指纹信息“相似”人类的身高、年龄等,有很大的抵触概率,只能作为辅助辨认。能够在这个网址进行查看本地浏览器的基本特征。
  • 高级指纹:浏览器高级指纹与根本指纹的区别是:根本指纹就像是人的外貌特色,外貌能够用男女、身高、体重辨别,然而这些特色不能对某个人进行唯一性标识,仅应用根本指纹也无奈对客户端进行唯一性断定,基于 HTML5 的诸多高级性能就能生成高级指纹了。高级指纹包含 Canvas 指纹、Webgl 指纹、AudioContext 指纹、WebRTC 指纹、字体指纹等;
  • 综合指纹:零散的指纹信息并不能真正的定位到惟一用户,并不能用来代表一个用户的惟一身份(用户指纹)。综合指纹是指将所有的用户浏览器信息组合起来,就能够近乎 99% 以上的准确率定位标识用户。将根本指纹和高级指纹组合起来就能够生成综合指纹(用户指纹),这样就能够达到靠近 99% 以上定位惟一用户了。

  更多对于高级指纹的细节和原理,能够通过探讨浏览器指纹这篇文章进行理解。

BrowserLeaks

  长期以来,人们始终认为 IP 地址和 Cookie 是用于在线跟踪人员的惟一牢靠数字指纹。但过了一段时间,当古代网络技术容许感兴趣的组织在他们不知情且无奈防止的状况下应用新办法来辨认和跟踪用户时,事件就失控了。

  BrowserLeaks 就是对于浏览隐衷和网络浏览器指纹的。在这里,你将找到一个 Web 技术平安测试工具库,这些工具将向你展现哪些类型的个人身份数据可能会被泄露,以及如何爱护本人免受此类泄露。这个网站提供了包含 IP 地址、地理位置、Canvas、WebGL、WebRTC、字体等多种类型指纹的查看及其基本原理概述。

  如果你对其中的技术原理很感兴趣,能够进入 BrowserLeaks,点击对应卡片题目进行查看和理解,比方 HTML5 Canvas Fingerprinting 页面,会给出你的 Canvas 指纹及其唯一性率等信息。

Nothing Private 的辨认原理

  后面的章节「浏览器隐身模式真的能够隐身吗?」中介绍了 Nothing Private 这个站点的测试后果,咱们也看到,在提交信息和校验的时候,申请会携带一个 finger 字段,这个字段就能够被认为是“浏览器指纹”。

  查看 GitHub 上 Nothing Private 的源码能够发现,Nothing Private 实现“浏览器指纹”的外围逻辑如下:

  不言而喻,Nothing Private 应用 ClientJS(用纯 JavaScript 编写的设施信息和数字指纹)的浏览器指纹识别性能来获取你的 Web 浏览器的指纹,外围办法在于getFingerprint。当你提交表单时,此指纹与你填写的标识一起保留在应用 PHP 作为后端的 MySQL 数据库中。下次你拜访该网站时,你的浏览器指纹将与数据库中的列匹配,并返回你填写的标识。

  ClientJS 以后用于生成指纹的数据点包含:

user agent, screen print, color depth, current resolution, available resolution, device XDPI, device YDPI, plugin list,
font list, local storage, session storage, timezone, language, system language, cookies, canvas print

  咱们还是浏览一下 ClientJS 的 getFingerprint 根本逻辑:

  咱们发现,getFingerprint会获取 UA、cookie、本地存储、canvas 指纹等信息,再通过Murmur Hash 算法加密,最终返回一个能够惟一标识浏览器设施的“浏览器指纹”。

MurmurHash 是一种 非加密型哈希 函数,实用于个别的哈希检索操作。由 Austin Appleby 在 2008 年创造,并呈现了多个变种,都曾经公布到了私有畛域(public domain)。与其它风行的哈希函数相比,对于规律性较强的 key,MurmurHash 的随机散布特色体现更良好。

ClientJS 官网地址

FingerprintJS

  FingerprintJS 是一个疾速的浏览器指纹库,纯 JavaScript 实现,没有任何依赖。默认状况下,应用 Murmur Hash 算法返回一个 32 位整数,Hash 函数能够很容易地更换。同时,他也很轻量:开启 gzipped 后只有 843 bytes,匿名辨认网络浏览器的准确率高达 94%

  FingerprintJS 的应用也比较简单:

import FingerprintJS from '@fingerprintjs/fingerprintjs';

// 利用启动时初始化:Initialize an agent at application startup.
const fpPromise = FingerprintJS.load();

(async () => {
  // Get the visitor identifier when you need it.
  const fp = await fpPromise;
  const result = await fp.get();

  // This is the visitor identifier:
  const visitorId = result.visitorId;
  console.log(visitorId);
})();

  更多对于 fingerprintJS 的信息,能够参考:

  • fingerprintJS 介绍与应用
  • fingerprintJS – GitHub
  • fingerprintJS – 官网文档

  下面这些办法,能取得九成以上意义的惟一浏览器指纹,兴许并不能齐全真的惟一,因为比方重写相干 canvas 办法、应用相似猫头鹰浏览器等非凡浏览器还是会使得相干办法生效,然而技术手段更多时候只是一个通用意义上的解决方案,减少破解的壁垒和老本,我认为反对罕用场景下的开发是足够的了。

  有了惟一的浏览器指纹,咱们就能够在相似统计 UV、点赞、投票的时候,带上相干指纹,天然就能够在极大水平上分别用户是否存在刷票、刷访问量的行为了,不过,浏览器指纹技术终归是把双刃剑,在解决以上问题的同时,难免会给用户带来更多的信息透露困扰。

实现 Canvas Fingerprinting

  Canvas Fingerprinting(Canvas 指纹)基于 Canvas 绘制特定内容的图片,应用 canvas.toDataURL()办法返回该图片内容的 base64 编码字符串。对于 PNG 文件格式,以块 (chunk) 划分,最初一块是一段 32 位的 CRC 校验,提取这段 CRC 校验码便能够用于用户的惟一标识。Canvas 利用 HTML5 canvas API 和 JavaScript 来动静生成你想要的图像。和其它跟踪技术一样,这种办法已被成千上万的网站采纳了,包含咱们熟知的广告畛域。

  上面是 Canvas 指纹的一个简略实现,原理其实比较简单,不了解的中央能够参考正文:

// PHP 中,bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过应用 pack() 函数再转换回去
// 上面是 PHP 的 bin2hex 的 JavaScript 实现
function bin2hex(s) {
  let n,
    o = '';
  s += '';
  for (let i = 0, l = s.length; i < l; i++) {n = s.charCodeAt(i).toString(16);
    o += n.length < 2 ? '0' + n : n;
  }

  return o;
}

// 获取指纹 UUID
function getUUID(domain) {
  // 创立 <canvas> 元素
  let canvas = document.createElement('canvas');
  // getContext() 办法可返回一个对象,该对象提供了用于在画布上绘图的办法和属性
  let ctx = canvas.getContext('2d');
  // 设置在绘制文本时应用的以后文本基线
  ctx.textBaseline = 'top';
  // 设置文本内容的以后字体属性
  ctx.font = "14px'Arial'";
  // 设置用于填充绘画的色彩、突变或模式
  ctx.fillStyle = '#f60';
  // 绘制 "被填充" 的矩形
  ctx.fillRect(125, 1, 62, 20);
  ctx.fillStyle = '#069';
  // 在画布上绘制 "被填充的" 文本
  ctx.fillText(domain, 2, 15);
  ctx.fillStyle = 'rgba(102, 204, 0, 0.7)';
  ctx.fillText(domain, 4, 17);

  // toDataURL 返回一个蕴含图片展现的 data URI
  let b64 = canvas.toDataURL().replace('data:image/png;base64,', '');
  // atob() 办法用于解码应用 base-64 编码的字符串;base-64 编码应用办法是 btoa(),这俩都是 window 全局办法
  let crc = bin2hex(atob(b64).slice(-16, -12));
  return crc;
}

// 调用时,你能够传入任何你想传的字符串,并不局限于传递 domain,这里只是为了便于辨别站点
console.log(getUUID('https://www.baidu.com/'));

PHP bin2hex() 函数

  测试结果表明,同一浏览器拜访该域时生成的 CRC 校验码总是不变。能够简略了解为 同样的 HTML Canvas 元素绘制操作,在不同的操作系统不同的浏览器上,产生的图片内容其实是不完全相同的。呈现这种状况可能是有几个起因:

  • 在图片格式上,不同 web 浏览器应用了不同的图形处理引擎、不同的图片导出选项、不同的默认压缩级别等。
  • 在像素级别来看,操作系统各自应用了不同的设置和算法来进行抗锯齿和子像素渲染操作。
  • 即便是雷同的绘图操作,最终产生的图片数据在 hash 层面上仍然是不同的。

如何更好的爱护个人隐私

咱们应该在何时应用私密 / 隐身模式?

  隐身模式就是可能在多人共用电脑的时候爱护本人的浏览记录不被其余专用的人看到,以及爱护本人的账户不被歹意登录。此外隐衷模式还能爱护咱们不被歹意广告所困扰

  • 即便你应用的是隐衷浏览模式,也并不意味着你能够做一些邪恶的事件
  • 兴许你想将你的工作和集体生存离开;
  • 你可能会共用一台计算机或设施,并且你不心愿你的家人、敌人、共事窥探;
  • 你可能正在购买礼物,但你不心愿任何货色毁坏可能的惊喜;
  • 或者,兴许你只是想限度公司收集无关你的数据量,并且你器重隐衷;
  • 应用公共场所的电脑设备时。

如何避免被生成“浏览器指纹”?

  上一大节咱们探讨了网站如何应用各种技术来生成“浏览器指纹”来标识惟一用户,那么上面咱们来说说,如何防止被网站“生成”惟一用户指纹。

  罕用的伎俩是,通过浏览器的扩大插件,阻止网站获取各种信息,或者返回个假的数据,这种形式是在网页加载前就执行一段 JS 代码,更改、重写、HOOK 了 js 的各个函数来实现的,因为 JS 的灵活性给这种形式提供了可能。然而这种形式始终是表层的,应用 JS 批改是能避免大部分网站生成惟一指纹,然而是有伎俩能够检测进去是否“舞弊”的。

  更好的伎俩是从浏览器底层做解决,从浏览器底层批改 API 使得这些在 js 层获取的信息并不惟一,不论如何组合都不能生成一个惟一的代表用户的指纹。比方:猫头鹰浏览器。

猫头鹰浏览器是基于 chromium 代码批改编译的浏览器,从底层对各种 API 做了批改,能够交给用户自定义返回各种数据,比方 Canvas、Webgl、AudioContext、WebRTC、字体、UserAgent、屏幕分辨率、CPU 外围数、内存大小、插件信息、语言等信息,这样就能够完全避免被“生成”惟一用户指纹了。因为在线公司、广告商和开发人员喜爱跟踪你的在线流动和操作,以便为你提供有针对性的广告,通常,大家认为这是进犯用户隐衷的。

如何免受广告跟踪器的监督和跟踪

  禁用第三方 Cookie。Chrome 2020 年推了一个叫做 SameSite Cookie 的货色,目标是为了缩小第三方 Cookie 的发送,但网站所有者依然有能力关掉它(SameSite=None),可参考下图。而 Chrome 的终极目标,是要在 2022 年齐全毁灭第三方 Cookie,像 Safari 和 Brave 曾经做的那样,SameSite Cookie 就是第一步。

  禁用 JavaScript 脚本,蒽,这个在现今,预计还是算了。在当初前后端拆散的开发模式下,大多数网站在禁用 JavaScript 后,将什么也没有,得,懊恼没有了,网站内容也没有了,一了百了~

  要暗藏你的互联网流量免得受监控和跟踪,你能够应用虚构专用网络 (VPN)。你的 ISP 会晓得你正在应用 VPN,但它无奈确定你正在拜访哪些网站。VPN 服务通过近程服务器路由流量,因而看起来你是从另一个地位或多个地位进行浏览。不过,VPN 提供商能够跟踪你上网的地位,因而最好找一家你能够信赖的公司来删除或锁定你的浏览流动。VPN 不会阻止来自广告商的第三方 cookie,但这些 cookie 将无奈精确辨认你的地位,从而使广告跟踪器难以或不可能无效。

情谊提醒:VPN 是中立性的技术,应用 由相干单位构建并且注销备案的 VPN 不属于违法行为,而擅自搭建的则属于违法行为(即 应用非法 VPN 是守法的 );如果只是应用 VPN 连贯国内网络进行必要的工作、查阅必要信息,是不属于违法行为的;如果应用 VPN 在国内互联网 制作、复制、查阅和流传 守法信息的,则须要依法追究守法责任。

  Tor 浏览器能够真正覆盖你的在线流动。TorBrowser 是一款匿名拜访网络的的软件,用户通过 Tor 能够在因特网上进行匿名交换。为了实现匿名目标,Tor 把扩散在寰球的计算机连起来造成一个加密回路。当你通过 Tor 网络拜访互联网时,你的网络数据会通过多台电脑曲折发送,就像洋葱包裹其外围那样拆穿你的网络流动,使得跟踪流量变得艰难,你拜访的网站真的不晓得你在哪里,只晓得你的申请路由通过的最初一个服务器的大抵地位;信息传输在每一步都被加密,无从得悉你所处地位和信息传输目的地。因而 Tor Browser 也被称为洋葱浏览器,Tor 浏览器在敞开时会删除所有 cookie,然而即便 Tor 代理也不会阻止第三方广告商在你的浏览器中注入 cookie。

参考资料

  • 探讨浏览器指纹
  • 浏览器的隐衷模式,真的能齐全爱护咱们的隐衷吗?
  • Google Chrome Incognito Mode Can Still Be Detected by These Methods
  • Private Browsing Won’t Protect You From Everything

本文首发于集体博客,欢送斧正和 star。

退出移动版