【问题标题】:How to Identify the client browser from .Net如何从 .Net 识别客户端浏览器
【发布时间】:2016-02-23 08:31:03
【问题描述】:

谁能从下面的用户代理告诉我客户端使用的是什么浏览器?如果可以的话,你能告诉我你是怎么想出来的吗?我正在尝试从 .Net 中识别客户端浏览器,但似乎没有防弹的方法。我认为下面的代码应该足以获取客户端浏览器名称,但 .Net 团队的回答指出该方法无法保证。

用户代理: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 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 文件夹下 Edge 的 UA 字符串。 Feedback

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

边缘: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 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, like Gecko) Chrome/46.0.2490.86 Safari/537.36

【问题讨论】:

  • 另外 3 个用户代理(全部来自 OS X):Firefox:Mozilla/5.0(Macintosh;Intel Mac OS X 10.9;rv:42.0)Gecko/20100101 Firefox/42.0 Chrome: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2557.0 Safari/537.36 Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/537.86.2
  • 嗯,很有趣,但 Google 和 MS 似乎有 Safari/537.36 在我和你的示例中使用不同操作系统的 UA。这一定是愚蠢的部分:-D;到目前为止,最诚实的浏览器似乎是 Firefox 和 Safari。谷歌不公平,微软试图复制谷歌:(
  • 我认为微软是第一个复制的:quora.com/…

标签: c# .net browser


【解决方案1】:

那很可能是 Edge:

Edge/12.10240

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

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

针对 cme​​ts 中的问题进行了更新

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

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

【讨论】:

  • 感谢您的链接。问题是你怎么知道来自 UA 的浏览器是什么,因为 UA 声明了可能的 5 种选择。我们需要寻找哪些关键信息?
  • 现在用更多细节更新我的答案。
  • 再次感谢您的回复,“Windows NT 10.0”是客户端的操作系统平台,不能帮助识别浏览器,但它提供了操作系统平台的线索。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 2018-01-19
    • 2019-05-10
    • 2022-01-13
    • 2022-06-27
    • 2011-01-27
    • 2013-02-14
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多