3

所以在我的代码中我有:

return Request.Browser.Browser + " " + Request.Browser.MajorVersion

当我使用 Opera 时,我有版本 21,现在是最新版本 33,但我的代码总是返回 Chrome。它为 Opera 21 返回“Chrome 34”,为 Opera 33 返回“Chrome 46”。

为什么会发生这种情况,我该如何解决?

4

1 回答 1

1

Chrome 和 Opera 的用户代理字符串几乎完全相同。只有结局不同。

我使用的是 Opera 版本 33.0.1990.58,Chrome 版本是 46.0.2490.86。

这是我从每个人那里得到的用户代理:

Chrome 46 = Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, 像 Gecko) Chrome/46.0.2490.86 Safari/537.36

Opera 33 = Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 OPR/33.0.1990.58

在 Microsoft.NET/Framework/YOURVERSION/Config/Browsers 中,您可以看到显示 .NET 如何解析代理字符串的 XML。chrome.browser 标识为:在 .NET 4.0 中。

在同一目录中,Opera.browser 标识如下所示:/" />。

因此 Opera 将自己显示为 Chrome,因为 .NET 不知道任何更好的正弦 Opera 用户代理不适合 .NET 正在寻找的正则表达式。

于 2015-11-13T17:21:39.857 回答