.NET请求浏览器将Opera识别为Chrome

时间:2015-10-27 15:03:03

标签: c# .net browser request httpbrowsercapabilities

所以在我的代码中我有:

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

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

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

1 个答案:

答案 0 :(得分: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,与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正在寻找的正则表达式。