浏览器“不要追踪我”隐私选项 DNT 指标全面解析
发布于 作者:苏南大叔 来源:程序如此灵动~现在的主流浏览器都支持DNT
设置,DNT
是英文Do not Track
的简写,翻译成中文就是“不要跟踪我”。在本篇文章中,苏南大叔给大家带来的就是,从编程角度如何看待这个浏览器选项。
美丽的愿景
我们必须承认一点:这个DNT
选项只是一个“美好的愿望”。是否跟踪,这个并不是浏览器说了算数的,而是你所浏览的网页的服务器端所决定的。
而你浏览网页的时候,你的基本信息(比如ip
,cookie
,浏览器ua
等等),都已经发送到了服务器端。而服务器端是否对你的“不要跟踪”的诉求,进行处理。这要看你所浏览的网站的服务器的人品和心情了。
比如,在piwik系统中,就有个选项,“是否支持客户端DNT”,这个就是上述结论的佐证。
上述情形,类似于爬虫是否识别robots.txt
一样。robots.txt
对爬虫的约束力,是靠爬虫本身来执行的。
客户端如何发送数据
以chrome
为例,我们来对这个问题进行展开讨论。看图说话,chrome
也警告大家,即使设置了这个选项,也是会有人使用你的隐私数据的。原因,不再赘述。
设置dnt
选项前后,浏览器所发送的header
头里面有如下变化。以浏览百度为例。
通过对比,我们可以看到,这个选项影响的就是header
头里面的DNT
选项。
服务器端如何处理
而苏南大叔在服务器段收到的数据如下:
以php
为例,这个数据可以在$_SERVER["HTTP_DNT"]
中读取到。这就成为,服务器端是否支持DNT
选项的唯一标准。
以piwik
/matomo
为例,在代码中,苏南大叔看到的相关的判断代码如下:
protected function isHeaderDntFound(){
return (isset($_SERVER['HTTP_X_DO_NOT_TRACK']) && $_SERVER['HTTP_X_DO_NOT_TRACK'] === '1')
|| (isset($_SERVER['HTTP_DNT']) && substr($_SERVER['HTTP_DNT'], 0, 1) === '1');
}
它的这个判断标准中,除了已经知晓的“HTTP_DNT”标准外,还有另外一个“HTTP_X_DO_NOT_TRACK”。至于后者,目前还没有检测到是哪种浏览器发出的。
firfox 和 safari
下面是firefox
和safari
浏览器的设置项截图。
ie浏览器
至于在遗忘之地的ie
浏览器,这个功能设置起来较为麻烦。(其实是非常麻烦,十分非常不好用,这里就不细讲了)。大家愿意试试的,可以看下图,自己试试。让ie
继续留在遗忘之地,不是更好嘛?
补充170715:ie10
的选项里面,有个较为简单的设置,隐藏的比较深。大家可以试试看。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。