【问题标题】:Why do browsers still spoof user agents?为什么浏览器仍然欺骗用户代理?
【发布时间】:2015-03-31 20:58:08
【问题描述】:

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

可能有人会说这是为了向后兼容所有旧代码。这是唯一的原因吗?经过这么长时间,我认为浏览器供应商会超越那些使用旧代码的网站。这是正在处理,还是这些用户代理只是在浏览器的艰难时期被遗忘了?

此外,如今大多数特征检测似乎都是使用 JavaScript 完成的,这使得用户代理的部分特征检测用例无关紧要。

【问题讨论】:

    标签: browser user-agent


    【解决方案1】:

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

    想想有用户需求的场景是这样的:

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

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

    【讨论】:

    • 这是用户代理的正常用例,而不是用户代理欺骗。欺骗的一个例子是有多少浏览器在用户代理中仍然有“Mozilla”,即使 Netscape 甚至不再存在。
    【解决方案2】:

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

    【讨论】:

    • 他们有,至少在某种程度上。这是我的 MacBook Pro 上的 Chrome:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36。我不明白为什么用户代理字符串中应该有“Mozilla”或“KHTML,如 Gecko”。 Chrome 不是 Netscape,也不能在 Gecko 上运行。
    • @MJWilliams 因为 Chrome 使用 webkit,现在 webkit 的一个分支称为 Blink,但 webkit 起源于基于 ... Gecko 的 KHTML。
    猜你喜欢
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2012-11-02
    • 2014-12-12
    相关资源
    最近更新 更多