2015-03-31 53 views
1

我知道浏览器最初欺骗了用户代理以便进行功能检测。但我想知道他们为什么仍然这样做。我认为用户代理欺骗在符合标准的现代时代没有一席之地;与网络初期的情况相比,基本上是网络开发者的浏览器必杀技。为什么浏览器仍然欺骗用户代理?

有人可能会说,它是为了向后兼容所有旧代码。这是唯一的原因吗?毕竟,我认为浏览器供应商会用这些旧代码来看待这些网站。这是否正在进行中,还是这些用户代理刚刚从浏览器的更困难的时代中遗忘了遗留物?

此外,目前大多数功能检测似乎都是用JavaScript完成的,这使得用户代理的功能检测用例的一部分变得无关紧要。

回答

0

因为现在我们有多种可能的用户代理,如Iphone5s,Galaxy SIII,iPad2等。因为有时需要以不同的方式处理特定规则的网站功能。

想想场景与用户的需求看起来像:

  • 该网站应该能够与客户只平板电脑聊天。
  • 在移动应该不能,因为它更小。

因此,由于我们有多个设备,我们有时必须以不同的方式处理,以便为用户提供良好的体验。

+0

这是用户代理的正常用例,而不是用户代理欺骗。欺骗的一个例子是,即使Netscape不再存在,用户代理中仍有多少浏览器仍然具有“Mozilla”。 – MJWilliams 2015-04-01 01:34:23

0

我不知道他们这样做。一些较小的浏览器用户代理可能无法被服务器识别,所以他们宣布自己是主要的浏览器之一,所以他们不会被忽视或被视为恶意,但否则,你是对的;没有必要这样做,主要的没有。

+0

他们至少在某种程度上这样做。这是我的MacBook Pro上的Chrome:Mozilla/5.0(Macintosh; Intel Mac OS X 10_9_5)AppleWebKit/537.36(KHTML,如Gecko)Chrome/41.0.2272.89 Safari/537.36'。我不明白为什么在用户代理字符串中应该有“Mozilla”或“KHTML,如Gecko”。 Chrome不是Netscape,也不是在Gecko上运行。 – MJWilliams 2015-04-01 01:35:36

+0

@MJWilliams由于Chrome使用了webkit,现在又增加了一个名为Blink的webkit分支,但webkit已经开始于基于... Gecko的KHTML。 – Rob 2015-04-01 01:42:22