C# .NET请求浏览器将Opera标识为Chrome

C# .NET请求浏览器将Opera标识为Chrome,c#,.net,browser,request,httpbrowsercapabilities,C#,.net,Browser,Request,Httpbrowsercapabilities,因此,在我的代码中,我有: return Request.Browser.Browser + " " + Request.Browser.MajorVersion 当我使用Opera时,我有版本21,现在是最新版本33,但我的代码总是返回Chrome。它为Opera 21返回“Chrome 34”,为Opera 33返回“Chrome 46” 为什么会发生这种情况?我如何修复它?Chrome和Opera的用户代理字符串几乎完全相同。只有结局不同 我使用的是Opera版本33.0.1990.58

因此,在我的代码中,我有:

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


为什么会发生这种情况?我如何修复它?

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标识为: 在.NET4.0中

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


因此Opera将自己显示为Chrome,因为如果Opera用户代理不适合.NET所需的正则表达式,则.NET不知道有什么更好的方法。

此外,它适用于所有其他浏览器。因此,Chrome、IE、Firefox和Safari