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

Browser 为什么用户代理/浏览器撒谎,browser,browser-detection,browser-feature-detection,Browser,Browser Detection,Browser Feature Detection,我读过几篇关于功能检测的文章,认为它比浏览器检测更可靠,因为浏览器是谎言 我找不到任何关于他们为什么撒谎的信息。有人知道他们为什么要这样做吗 据我所知,网站管理员通过浏览器嗅探来发现浏览器的功能,并限制他们向浏览器发送的内容。如果浏览器谎称其功能,他们将从网站管理员那里获得更多信息,您可以阅读更多信息: 原因很简单: 因为网站查看用户代理字符串并对浏览器进行假设,当浏览器更新为新版本时,这些假设将无效 这几乎从网络诞生以来就一直在发生。浏览器供应商不希望他们的新版本破坏网络,所以他们调整UA字

我读过几篇关于功能检测的文章,认为它比浏览器检测更可靠,因为浏览器是谎言


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

据我所知,网站管理员通过浏览器嗅探来发现浏览器的功能,并限制他们向浏览器发送的内容。如果浏览器谎称其功能,他们将从网站管理员那里获得更多信息,您可以阅读更多信息:

原因很简单:

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

这几乎从网络诞生以来就一直在发生。浏览器供应商不希望他们的新版本破坏网络,所以他们调整UA字符串来愚弄现有网站上的代码

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

功能检测效果更好,因为当一个新的浏览器版本推出该功能时,检测将自动拾取该功能,而无需浏览器或网站所有者执行任何特殊操作


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

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


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

浏览器不会谎报其功能。但是您可以通过任何开发人员工具更改用户代理字符串。或者…用户代理字符串有太多的变体,因此不可能保持浏览器/设备组合的有效数据库及其适当的功能。如果操作系统升级了,而现在功能X突然工作了呢?这么多场景。这就是为什么特征检测是正确的选择。他们不能撒谎,只能错误地实现功能。你能提供一些信息来源吗?我的第一个来源来自Faruk Ates,Modernizer(特征检测)的创建者,他说“UA嗅探的最大问题是“UA”一部分是因为浏览器撒谎。很多。他们从Microsoft Internet Explorer 2.0发布开始撒谎,直到今天他们还在撒谎。浏览器一直在撒谎他们是谁以及他们能做什么。“没有你进一步的证明,我更倾向于相信他。