【问题标题】:Operating System from User-Agent HTTP Header [closed]来自用户代理 HTTP 标头的操作系统 [关闭]
【发布时间】:2010-09-18 16:48:33
【问题描述】:

在映射用户代理 HTTP 标头字符串 --> 操作系统的任何地方是否有一个好的、最新的列表?

【问题讨论】:

  • 自从问了这个问题,就跑题了(求第三方资源)。它不应该重新打开。

标签: http-headers user-agent


【解决方案1】:

这是一个快速列表...如果我错过了您感兴趣的一个,请告诉我。

http://www.geekpedia.com/code47_Detect-operating-system-from-user-agent-string.html:

// 将用户代理字符串与操作系统匹配
Windows 3.11 => Win16,
Windows 95 => (Windows 95)|(Win95)|(Windows_95),
Windows 98 => (Windows 98)|(Win98),
Windows 2000 => (Windows NT 5.0)|(Windows 2000),
Windows XP => (Windows NT 5.1)|(Windows XP),
Windows Server 2003 => (Windows NT 5.2),
Windows Vista => (Windows NT 6.0),
Windows 7 => (Windows NT 6.1),
Windows 8 => (Windows NT 6.2),
Windows 10 => (Windows NT 10.0),
Windows NT 4.0 => (Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT),
Windows ME => Windows ME,
Open BSD => OpenBSD,
Sun OS => SunOS,
Linux => (Linux)|(X11),
Mac OS => (Mac_PowerPC)|(Macintosh),
QNX => QNX,
BeOS => BeOS,
OS/2 => OS/2,
Bot=>(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)

【讨论】:

【解决方案2】:

你用什么语言开发?如果您想对用户代理字符串进行数据挖掘,这将对您可用的内容产生巨大影响。

Nescio 的回复提供了一个很好的列表。我列表中 PHP 下的第二个链接也包含基本相同的信息,这些信息非常简单,您应该能够将其翻译成任何语言。

请记住,将用户代理用于任何事情都会遇到很多问题。除非您愿意将一部分开发时间用于监控访问您站点的用户代理并执行持续维护,否则您应该尽量避免完全这样做。无论您需要检测操作系统的用例是什么,每个平台中的每个操作系统都可能在很短的时间内发生巨大的变化,因此请务必注意这一点,并注意如何以及为什么进行操作系统检测。

详细说明风险:在桌面上,每 6 周 (Chrome OS)、6 个月 (Ubuntu)、1 年 (Mac OS) 或 2-3 年 (Windows) 可能会出现一个新的操作系统版本。然后,您还需要考虑为手机、平板电脑、游戏机、clocks 等发布的操作系统,这些操作系统可能具有更频繁的发布周期和不可预测的市场份额变化。只需看看黑莓、Palm OS、Web OS、iOS、Android、Windows Mobile 和 Windows Phone 在过去几年中市场份额的变化等等。

除非操作系统是您网站的依赖项,例如,如果您正在为应用程序创建有针对性的“下载”页面(这本身可能会出现问题),那么使用feature detection 几乎总是更好,这将使您无需不断维护浏览器或操作系统检测代码,就可以让您的开发适应未来发展。

【讨论】:

  • 非常有用的链接。谢谢!我正在使用 ASP.NET,但没有注意到 HttpBrowserCapabilities。这当然有帮助。
  • @Pacerier 看来作者已经停止支持了,根据这个页面:apptools.com/phptools/browser 幸运的是,有人在他停止的地方继续他的工作并进行了一些改进。
【解决方案3】:

值得牢记的是,用户代理标头很容易被伪造。我不会在任何重要的事情上依赖它。

【讨论】:

  • 您不能将其用作安全检查,否则就可以了。用户很少会调整他们的用户代理字符串,如果他们这样做,我不介意我的软件是否会失败。
  • “如果他们这样做,我不介意我的软件对他们来说是否失败”:所以你是那个!
  • 我同意弗兰克的观点,要正确检测而不用担心人们会弄乱 UA,这已经够难的了。
【解决方案4】:

进行 UA 嗅探几乎总是一个坏主意。你根本不能依赖它。

如果您想向客户端发送特定于其环境的响应,您可能应该区分内容类型或编码的差异。这些是rock-solid specified

【讨论】:

  • 我认为 UA 嗅探在一定程度上很好,它可以让您以公平的方式检测主要/显而易见的事情,但是您需要其他东西来支持它。
  • 你能在你的链接上解释更多吗?关于确定操作系统的坚如磐石的特定方法的想法?
  • 2020 年的示例:我正在使用用户代理字符串来检测用户是否正在运行 Windows 7,如果是,我关于升级到 Linux 的博文将相应地调整其文本。
【解决方案5】:

浏览器中的用户代理不是我可以依赖的任何东西,我们都将它用于统计,但我们知道它们并非 100% 准确。

我使用 firefox 并经常在一些不喜欢它的网站上欺骗 IE,我的常规 UA 是:

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) 
Gecko/2008101315 Ubuntu/8.10 (intrepid) Firefox/3.0.3 

我有时会使用 Firefox 扩展将其更改为:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MS-RTC LM 8; 
.NET CLR 2.0.50727; .NET CLR 1.1.4322)

当您查看它时,您需要解析不同的部分,操作系统是括号之间的分号分隔值的第三部分。

【讨论】:

  • 如果我想帮用户一个忙,向他们展示与他们的操作系统最相关的信息(例如 Windows 的 .exe 下载或 Mac 的 .dmg),他们会撒谎我关于他们的操作系统,那是他们的问题,不是我的。
【解决方案6】:

我在找同样的东西,然后找到:
http://www.useragentstring.com

很棒,但非常详尽:您可能需要重新考虑您需要列表的项目,因为这个项目可以“透视事物”。

只是想分享给未来研究这个的人。

【讨论】:

    【解决方案7】:

    现在我可以从http://user-agent-string.info 推荐数据库。您可以识别 User-Agent 以及操作系统(如果可用)。

    我正在开发 Java 库 UADetector 并每月合并一个新版本的数据库(也称为 UAS 文件),以 XML 和 INI 格式提供。因此,根据我的经验,我可以说这些数据是最新的。通常的更新间隔是 5 到 10 天。

    【讨论】:

    猜你喜欢
    • 2011-06-03
    • 2021-04-28
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2011-12-27
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多