Do Not Track Me!

简介: 近几年,随着互联网的飞速发展,人们对个人隐私的关注度也越来越高。今天就让我通过「Do Not Track API」带你看看,我们日常使用率超高的浏览器,是如何做隐私保护的。

原文作者:UC 国际研发 罗浩

前言

近几年,随着互联网的飞速发展,人们对个人隐私的关注度也越来越高。今天就让我通过「Do Not Track API」带你看看,我们日常使用率超高的浏览器,是如何做隐私保护的。

Do Not Track API 顾名思义就是有一个接口,可以设置不对用户行为进行跟踪。我们或许第一反应是:是不是只要做了相关设置,什么 Cookie 之类的数据就不记录了呢?

不是的,Do Not Track API 不是浏览器的隐私模式,虽然也是和用户隐私有密切关系,但还是有明显区别的,且听我慢慢道来。

Do Not Track 的历史

说到 Do not track(简称 DNT),最早对其进行支持的是 IE9 浏览器,在 2010 年的时候,IE 居然占了先机,这有些出乎意料,然后 2011 年 Firefox 火狐浏览器支持,2012 年 Chrome 浏览器也加入支持。可见,在很早的时候,浏览器基本就已经支持了 Do not track 设置。

会不会很奇怪?这个 API 出现足足有 8 年多了,似乎就没见人提及过,估计 90% 的前端就不知道浏览器还有这个东西。为什么呢?我们继续看。

浏览器开启 “不追踪”

默认情况下,浏览器是不开启 Do not track,也就是没有禁止不跟踪,需要我们自己手动开启。例如在 Chrome 浏览器下,我们可以设置-高级,然后 “随浏览流量一起发送 ‘不跟踪’ 请求”,如下截图示意:

image.png

Chrome 发送“不跟踪”请求

点击开关按钮,我们会看到下面的提示(随着浏览器变化,提示文案可能会有调整):

image.png

Chrome 浏览器不跟踪的提示

文字版如下:

如果您启用了“不跟踪”,即意味着您的浏览流量中将会包含一个请求。所造成的任何影响均取决于网站是否回应该请求以及如何解读该请求。例如:某些网站在收到该请求后,可能会向您展示广告(这些广告并不是根据您访问过的其他网站展示的)。许多网站仍会出于一些目的收集并使用您的浏览数据,例如,为了提高安全性,为了提供相关内容、服务、广告和推荐内容,以及为了生成报告统计信息。

是不是看不懂说的是什么?我用中文再次翻译下就是:

如果你启用了 “不跟踪”,则向服务器发送的请求我们都会带一个 “Do Not Track” 的请求头,至于会对你浏览页面有什么影响,要看这个网站对这个请求怎么处理。有些网站比较重视用户的隐私,发的广告就是随机的,不会出现在淘宝查了一下丧葬用品,然后满屏棺材广告的情况(典型基于用户隐私投放的广告)。当然,有些网站还是会出于一些冠冕堂皇的理由收集你的浏览数据,什么理由呢,比方说为了提供更好服务,为了你账户更安全等。

如果我们说得再直白一点就是:

尊敬的用户啊,如果你启用了 “不跟踪”,我们浏览器呢,会仁至义尽,给网站服务器、客户端都发送用户不希望被跟踪的信息。至于你访问的这个网站是否尊重你的设置,我们就无能为力了!

至此,我们可以明白,为什么 8 年多了,Do Not Track 无人问津。因为这玩意是否有效果完全就靠互联网公司是否自觉!

考虑到在中国,那更是变本加厉,啥用户隐私啊,且先不说绝大多数网站的管理者,产品,甚至开发不知道浏览器有 “不跟踪”,就算知道有这么个东西,且用户也会去设置,大家也一定会选择无视。中国的互联网对隐私那真是一点都不上心,前有 “李彦宏称中国用户愿用隐私换便利”,后有 “美团点评会显示你的好友在哪儿里点过餐,住过什么酒店”,什么 “Do Not Track”,根本就是聋子的耳朵——摆设,在中国,有和没有有区别吗?没有用,不在意,自然就无人关心。

不过,从近些年诸多事件网民的言论来看,隐私这件事情已经越来越关注,一定会在哪天摆在台面上成为很重要的议题进行发酵的!因此,如果网站能在隐私这件事情上做得能让用户明显感觉到尊重,则这个网站的影响力,公司的口碑说不定会爆炸式增长。网上不是有句话吗?不是我厉害,同行衬托的好。

端开发可以做些什么

浏览器在前端提供了 Do Not Track API,可以让前端开发人员知道用户是否开启了 Do Not Track。

这个 HTML5 API 就是 navigator.doNotTrack,IE9 和 IE10 还需要私有前缀 navigator.msDoNotTrack,然后 IE11+ 不知出于什么考虑,使用 window.doNotTrack 代替了 navigator.doNotTrack。

除了 API 名称细节差异,对于 doNotTrack 属性的返回值也存在差异,具体参见下表:

image.png

也就是,所有浏览器如果用户开启了 “不追踪”,则 API 返回值是 '1';如果没有开启,则 IE9,IE10 返回 '0',IE11+ 和 Chrome 返回 null,Firefox 浏览器返回 'unspecified'。

因此,我们可以逻辑合并,这样获知用户是否这是了 “不跟踪”:

image.png

接下来就可以付诸实际应用了。
比方说,很多搜索会有历史搜索,如果用户选择了“隐私不跟踪”,则原来现实历史搜索列表的地方可以这么提示:
“由于您选择了隐私跟踪保护,您的搜索历史我们不会记录!”

例如新浪微博的搜索历史就会长下面这样:

image.png

隐私保护下的历史搜索

多好!一看就是尊重用户选择,注重隐私的好公司,好产品!
请尊重用户的选择,你自以为是的感受不能代表用户真正的心声。就好比小时候父母自以为是地为你好,很多时候很多的是负担!

结语

隐私本质上也是用户体验的一部分,作为前端这个与用户紧密打交道的群体,更应对其保持关注。用不用倒无所谓,但至少知道有这么个东西,至少有这方面关注的意识,那也很不错了。

目录
相关文章
|
自然语言处理 前端开发 JavaScript
最好用的 8 款 React Datepicker 时间日期选择器测评推荐
React 时间日期选择器(date-timepicker)组件,与表单、富文本、表格、拖拽等组件一样,是大家用 React 搭建项目时使用最频繁的组件之一。React DateTimePicker 除了基础选择日期时间外,还有非常多样的功能配合不同场景使用,比如 12/24小时,禁止选择某些日期,高亮某些日期,夜间模式,多语言,酒店订单的特别场景等。本文记录了我自己使用多年最好用的 8 款 React DateTimePicker 组件,每一款都经过我实际测试,推荐给大家。
2222 0
最好用的 8 款 React Datepicker 时间日期选择器测评推荐
|
数据采集 存储 分布式计算
如何在Python中处理大规模数据集,以避免内存溢出?
如何在Python中处理大规模数据集,以避免内存溢出?
656 1
|
3月前
|
人工智能 自然语言处理 安全
国内主流Agent工具功能全维度对比:从技术内核到场景落地,一篇读懂所有选择
2024年全球AI Agent市场规模达52.9亿美元,预计2030年将增长至471亿美元,亚太地区增速领先。国内Agent工具呈现“百花齐放”格局,涵盖政务、金融、电商等多场景。本文深入解析实在智能实在Agent等主流产品,在技术架构、任务规划、多模态交互、工具集成等方面进行全维度对比,结合市场反馈与行业趋势,为企业及个人用户提供科学选型指南,助力高效落地AI智能体应用。
3073 144
|
11月前
|
算法 安全 应用服务中间件
云上部署WoSign SSL“国密RSA双证书”,助力国密合规建设
我国网络安全法规体系不断完善,形成了以《网络安全法》为核心的立体化法律框架。阿里云数字证书管理服务提供国产品牌SSL证书,支持签发基于国密算法的SSL/TLS证书,助力金融、政务等行业满足“网络与通信安全”合规需求。通过部署WoSign SSL国密RSA双证书方案,实现国际和国密算法自适应兼容,确保信息系统全球通用性与安全性。2025年3月阿里云“智惠采购季”活动期间,用户可享受SSL证书优惠折扣,助力信息安全建设。
396 2
云上部署WoSign SSL“国密RSA双证书”,助力国密合规建设
|
11月前
|
SQL 分布式计算 关系型数据库
|
数据采集 自然语言处理 Serverless
GPT-Sovits文本转语音服务测评报告
本文介绍了一款基于阿里云函数计算平台部署的GPT-Sovits文本生成语音服务。该服务以其高度仿真的声音合成效果和简便的部署方式受到关注。文章详细描述了技术架构、部署流程、功能测试及性能评估等内容,展示了GPT-Sovits在语音合成领域的卓越表现和广泛的应用前景。
931 8
|
监控 jenkins 测试技术
理解并实现持续集成(CI)与持续部署(CD):加速软件开发的关键步骤
【5月更文挑战第27天】本文介绍了CI/CD在加速软件开发中的关键作用。CI(持续集成)通过频繁集成代码并自动构建测试,减少错误,提高开发速度和代码质量。实现CI需要版本控制系统(如Git)、自动化构建工具(如Jenkins)和测试框架。CD(持续部署)则进一步自动将通过测试的代码部署到生产环境,提供快速反馈,降低风险。实现CD需配置管理工具(如Ansible)、容器技术(如Docker)和云基础设施。CI与CD结合,形成高效开发流程,最佳实践包括保持主干干净、自动化所有流程、持续监控、快速回滚和持续学习。
|
小程序 数据库
一分钟教你学会小程序云开发的数据库的增删改查
本文简要介绍了小程序云开发中数据库的增删改查操作。首先展示了查询代码,通过`wx.cloud.database().collection().get()`获取数据;接着演示添加数据,强调数据字段需与数据库匹配;然后说明删除数据需基于_id,通过`doc(id).remove()`执行;最后,更新数据同样依赖_id,使用`doc(id).update()`进行修改。
563 1
|
存储 编译器 C语言
C陷阱:数组越界遍历,不报错却出现死循环?从内存解析角度看数组与局部变量之“爱恨纠葛”
在代码练习中,通常会避免数组越界访问,但如果运行了这样的代码,可能会导致未定义行为,例如死循环。当循环遍历数组时,如果下标超出数组长度,程序可能会持续停留在循环体内。这种情况的发生与数组和局部变量(如循环变量)在内存中的布局有关。在某些编译器和环境下,数组和局部变量可能在栈上相邻存储,数组越界访问可能会修改到循环变量的值,导致循环条件始终满足,从而形成死循环。理解这种情况有助于我们更好地理解和预防这类编程错误。
609 0
|
编解码 Android开发 C语言
【Android 高性能音频】AAudio 音频库 简介 ( AAudio 音频库简介 | 音频流 | 音频设备 | 共享模式 | 数据模式 )
【Android 高性能音频】AAudio 音频库 简介 ( AAudio 音频库简介 | 音频流 | 音频设备 | 共享模式 | 数据模式 )
946 0