如果AppleWebKit出现在用户代理中,是否表示它肯定是Apple设备?

问题描述

用户代理可以检测到AppleWebKit。这是一个浏览器引擎,主要用于Apple设备,但也用于BlackBerry browser,PlayStation控制台和Tizen移动操作系统。此外,您还可以在Android device list用户代理中找到AppleWebKit。

因此,AppleWebKit似乎并没有真正唯一地标识用户的设备属于苹果。

用户代理字符串的哪一部分呢?

解决方法

考虑到许多浏览器允许用户将用户代理字符串更改为所需的字符串,我会说部分可以标识设备供应商。

查看whatismybrowser.com,似乎最好的选择是查找字符串“ Mac OS X”(是的,即使在名称更改为“ OS X”和“ macOS”之后也是如此),因为它似乎包含在其中。 iPad OS和iPhone OS的用户代理字符串,但是任何非Apple设备上的浏览器也可以包含它(同样,用户经常可以根据需要更改用户代理字符串),因此您不能仅因为字符串在其中,才能100%确信它们在Apple设备上。

然后再次,有人将用户代理更改为看起来像Apple设备的东西,可能希望您认为他们在这样的设备上,所以除非您真正需要,否则您最好对他们进行幽默处理。知道他们的设备以便仅在该设备上执行某项操作-在这种情况下,您可能无论如何都不应该执行用户代理匹配,而应使用其他方法来确定当前设备的功能。

示例:

  • Mozilla / 5.0(Macintosh; Intel Mac OS X 10_15_6)AppleWebKit / 605.1.15(KHTML,如Gecko)版本/13.1.2 Safari / 605.1.15
  • Mozilla / 5.0(iPhone; CPU iPhone OS 12_2,例如Mac OS X)AppleWebKit / 605.1.15(KHTML,例如Gecko)移动设备/ 15E148
  • Mozilla / 5.0(iPad; CPU OS 12_2,例如Mac OS X)AppleWebKit / 605.1.15(KHTML,例如Gecko)移动设备/ 15E148

示例摘自:

,

主要问题是大多数用户代理字符串指示它们兼容的内容而不是它们的构成。 因此,许多没有 AppleWebKit 的浏览器仍将其报告为用户代理字符串的一部分。

几年前我写了一篇关于此的博客,您可能会感兴趣: https://techlab.bol.com/making-sense-user-agent-string/

如果您想要确定它是否为 Apple 设备的“规则”列表,那么我可以向您保证,不存在 100% 准确的列表。

我喜欢认为 my set of rules 接近;但绝不是 100%。

,

没有什么是 100% 的网络通信。

  1. 由客户端程序来定义用户代理。 (他们如何以及是否选择指定某些内容完全取决于所述程序的开发人员)
  2. 任何对编程语言有一定了解并且互联网连接正常的人都可以发出请求,并用完全任意的数据填充它。 (标头甚至可能不存在,或者可能有垃圾值)服务器程序如何处理这取决于他们。

前几天我正在监控流量,当时我对进行端口扫描的人做出了自定义响应。我发送了一个 HTTP 响应,说“用 ip 内容退出它”(因为他们在“主机”标头中指定了我的 IP,而不是网站),稍后他们发送了另一个请求,完全删除了主机标头并更改了他们的用户代理对其组织的描述。 (只是你友好的邻里网络分析人员)