如何从.Net

时间:2015-11-20 18:34:01

标签: c# .net browser

任何人都可以通过下面的用户代理告诉我客户端使用的浏览器是什么?如果可以的话,你能不能告诉我你是怎么想出来的?我试图从.Net识别客户端浏览器,似乎没有防弹方式。我认为下面的代码应该足以获得客户端浏览器名称,但.Net团队的答案表明该方法不受保证。

用户代理: Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 42.0.2311.135 Safari / 537.36 Edge / 12.10240

C#

var req = HttpContext.Current.Request;
var browserName = req.Browser.Browser;

.Net小组回答

  

感谢您的反馈。 BrowserCap是一项遗留功能,但我们没有   不断更新它,除非我们发现asp.net功能   由此引起的破碎。如果您真的希望您的应用识别Edge   作为Edge(不是chrome),那么你可以添加自己的浏览器文件来匹配   app_browsers文件夹下的UA字符串Edge。   Feedback

更新*: 以下是来自三个浏览器的UA字符串,这些字符串可能表明最后一条信息可能是指标,但不适用于Chrome。正如您所见,Chrome在UA末尾显示Safari / 537.36,因此不能作为指标。此外,系统上没有安装Safari,为什么谷歌和微软试图愚弄我们?我想问他们这个问题;如果信息是欺骗我们的话,用户代理的目的是什么。让我们把它从标题中完全取出(通过互联网传输的字节数更少)。如果这是standards而不是尊重它们或完全摆脱它们。如果由于缺乏信息而做出错误的假设,请纠正我。

边: Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 42.0.2311.135 Safari / 537.36 Edge / 12.10240

火狐: Mozilla / 5.0(Windows NT 10.0; WOW64; rv:42.0)Gecko / 20100101 Firefox / 42.0

铬: Mozilla / 5.0(Windows NT 10.0; WOW64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 46.0.2490.86 Safari / 537.36

2 个答案:

答案 0 :(得分:1)

极有可能是Edge:

Edge/12.10240

http://www.geekwire.com/2015/the-challenge-of-tracking-microsofts-new-edge-browser-in-google-analytics/

请记住,HTTP客户端可以设置其用户代理字符串,并且大多数人都说它们是Mozilla

针对评论中的问题进行了更新

我认为确定客户端使用的浏览器没有完美的答案。我从经验中了解到,大多数浏览器声称自己是Mozilla,而且根据一些实验,OS X上的Chrome和Safari都提到AppleWebKit。我最初的猜测是它是Safari,但在发布了这个效果的答案后,我注意到浏览器声称自己是Chrome Safari,最后注意到Edge。根据芝麻街调试学校(其中一件事与其他事情不一样)我在Edge上搜索并找到上面的链接。另一个提示:它是用户代理字符串中的最后一项。建议:获取一台机器并运行一堆浏览器以查看您的网络日志显示的内容。

另一个可能有用的细节:(Windows NT 10.0; Win64; x64)稍微缩小了选择 - 浏览器似乎对这些数据一般是真实的,所以告诉我它可能不是Safari,因为我不认为Apple在Windows上提供它更多。

答案 1 :(得分:0)

使用请求对象来检索浏览器详细信息等等。 Request.Browser.Browser =返回正在使用的浏览器的名称 Request.Browser.IsMobileDevice =如果请求来自移动设备,则返回true