为什么用户代理/浏览器撒谎



我读过几篇关于特征检测的文章,它比浏览器检测更可靠,因为浏览器撒谎。

我找不到任何关于他们为什么撒谎的信息。有人知道他们这么做的原因吗?

据我所知,网站管理员会进行浏览器嗅探,以查找浏览器的功能并限制他们发送到浏览器的内容。如果浏览器谎报其功能,他们将从网站管理员那里收到更多,你可以阅读更多:

http://farukat.es/journal/2011/02/499-lest-we-forget-or-how-i-learned-whats-so-bad-about-browser-sniffing

http://webaim.org/blog/user-agent-string-history/

原因很简单:

因为网站会查看用户代理字符串并对浏览器进行假设,当浏览器更新到新版本时,这些假设将无效。

这种情况几乎从网络诞生之初就开始了。浏览器供应商不希望他们的新版本破坏网络,所以他们调整UA字符串来欺骗现有网站上的代码。

最终,如果每个人都负责任地使用UA字符串,并在新的浏览器版本出现时更新他们的网站,那么浏览器就不需要撒谎。但你必须承认,这要求很高。

功能检测效果更好,因为当一个新的浏览器版本推出该功能时,检测会自动启动,而浏览器和网站所有者都不需要做任何特殊的事情。

当然,有时功能检测并不完美——例如,如果某个功能存在,但在特定浏览器中存在错误。在这种情况下,是的,您可能希望将浏览器检测作为一种后备措施。但在大多数情况下,特征检测是一个更好的选择。

另一个更现代的原因是避免安装移动应用程序(产品所有者控制我能做什么和不能做什么。不,谢谢!)。

今天,Reddit开始阻止查看子版块,以防他们在UserAgent中检测到移动浏览器,所以我不得不更改它才能查看内容。

最新更新