用户代理字符串(USERAGENT)是已经消亡的网景公司在90年代开发网景浏览器和相关产品推出的技术识别方式,当浏览器加载某个网站时会将用户代理字符串信息提交给服务器,然后服务器可以根据这些字符串返回特定信息。
这些字符串包括浏览器名称及其版本、操作系统名称及其版本、操作系统架构、硬件平台 (电脑还是手机)等信息,在上世纪末到本世纪初这段时间的浏览器大战里,各家浏览器不断地增加代理字符串信息以解决潜在的兼容问题。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36
UA也可能泄露用户的隐私:
谷歌认为用户使用什么平台或者具体什么型号的智能手机都是隐私,具体浏览器版本和操作系统版本也同样隐私。
因此不应该在用户访问网站时向网站提供这些信息,为此谷歌浏览器计划逐渐将传统的用户代理字符串功能淘汰。
谷歌工程师表示在线广告早已将用户代理字符串作为追踪用户的方式之一,显然对于保护隐私信息来说是个威胁。
同时各个网站会根据特定的用户代理字符串返回不同的信息也造成兼容混乱,为解决该问题谷歌准备放弃该功能。
这项工作将从今年三月份发布的谷歌浏览器新版本中开始进行,到今年九月份时旧的用户代理字符串会被废弃掉。
阻止网站识别用户使用的系统及设备等:
按谷歌说明该公司的最终目的是阻止所有网站或服务识别用户使用的操作系统、浏览器版本、具体的设备型号等。
最终结果是谷歌浏览器只会给网站发送用户代理字符串片段,此片段不能用于识别是电脑还是手机以及其版本等。
而网站及其服务器也只能通过代理字符串片段知晓用户使用的是谷歌浏览器,而其他方面的任何信息都不再提供。
按谷歌设想这种做法有助于提供用户的隐私信息保护,同时还可避免更多网站针对不同浏览器制定不同兼容方案。
关于UA字符串的线路图:
1.从2020年3月中旬发布的Chrome v81开始,谷歌将在开发者控制台里为读取UA信息的网页显示特定警告内容。
2.从2020年6月上旬发布的Chrome v83开始,谷歌不再提供UA类的浏览器版本及具体的操作系统版本号信息等。
3.从2020年9月中旬发布的Chrome v85开始,谷歌将把UA中的操作系统设定为通用值来阻止识别电脑还是手机。
颤抖吧!各种网站和服务:
谷歌浏览器这次调整预计将会影响非常多的网站和服务,因为许多网站和服务依靠用户代理字符串返回特定信息。
说个最简单最常见的例子:有些网站不是基于HTML5开发而是有单独的电脑版和手机版,靠UA来返回特定版本。
例如当用户使用手机访问时则会自动跳转到手机版上以方便用户阅读,而这次谷歌调整会彻底毁掉这种工作方式。
再举个非常常见的例子:当使用手机访问某些APP的下载页面时,会读取UA来判断用户是iOS设备还是安卓设备。
如果是iOS设备则自动跳转到AppStore,如果是安卓设备则跳转到Google Play或者直接自动下载APK安装包等。
同理网站无法读取用户使用的操作系统和设备类型后,也无法进行跳转所以这种比较方便的解决方案也不再奏效。
影响不算特别大但需要去改:
从上面两个例子中我们可以看到许多网站服务对代理字符串依赖度非常高,无法进行读取识别可能产生各种问题。
当然使用替代方案也并不是不能解决这个问题,只是全球可能有千万级别的网站或服务都靠这种简单的工作方式。
所以当谷歌决定淘汰传统的用户代理字符串时这些网站必须去改,去重新开发替代性的解决方案来解决这个问题。
目前尚不清楚其他主流浏览器是否会跟进此事,但谷歌浏览器的市场占有率也足以让绝大多数网站开始进行调整。