Microsoft Edge 的用户代理字符串名称是啥?
Posted
技术标签:
【中文标题】Microsoft Edge 的用户代理字符串名称是啥?【英文标题】:What is the User Agent string name for Microsoft Edge?Microsoft Edge 的用户代理字符串名称是什么? 【发布时间】:2015-06-02 09:03:06 【问题描述】:我正在制作一个网站,我希望它与即将推出的 Microsoft Edge 正式发布时兼容。更具体地说,它的移动版本。有谁知道哪个字符串可以识别 Edge 移动浏览器(例如,“IE Mobile”识别 Internet Explorer 的移动版本)。
【问题讨论】:
如果您希望它兼容,请更多地关注标准而不是用户代理字符串。 Microsoft Edge 旨在处理类似于 Firefox 和 Chrome 的 Web。与往常一样,尽早并经常使用功能检测、渐进增强和跨浏览器测试。 通常在 Windows Phone 上识别 IE 的是“IEMobile”(不是“IE Mobile”;-))。尽管请注意最新的 Windows 手机(例如 Lumia 950XL)使用“Edge”并且不再具有“IEMobile”标识符 【参考方案1】:Microsoft Edge UA 字符串:
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
I detail why in this blog post.
Neowin 最近报道称,微软针对 Windows 10 的新浏览器 Spartan 使用 Chrome UA 字符串 “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0″。 这是故意的。
您还会注意到整个字符串以“Edge/12.0”结尾,而 Chrome 没有。
我应该指出,这与 Microsoft 对 IE 11 所做的做法并没有完全不同,在 Windows 8 上显示为:Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko, as在这篇文章中解释。
什么是用户代理嗅探?
Web 开发人员通常会通过 UA 嗅探来检测浏览器。 Mozilla 在他们的博客上很好地解释了这一点:
为不同的浏览器提供不同的网页或服务是 通常是个坏主意。网络意味着每个人都可以访问, 无论他们使用哪种浏览器或设备。有办法 开发您的网站,以根据 功能的可用性,而不是针对特定的浏览器。
Here’s a great article explaining the history of the User Agent.
通常,懒惰的开发人员只会嗅探 UA 字符串并根据他们认为查看者使用的浏览器禁用他们网站上的内容。 Internet Explorer 8 是开发人员常见的挫败点,因此他们会经常检查用户是否使用任何版本的 IE,并禁用功能。
The Edge team details this even deeper on their blog.
所有用户代理字符串都包含更多关于其他浏览器的信息,而不是您正在使用的实际浏览器——不仅是标记,还有“有意义的”版本号。
Internet Explorer 11 的 UA 字符串:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) 像 Gecko
Microsoft Edge UA 字符串:
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
Patrick H. Lauke 在 W3C 讨论中恰当地将 userAgent 属性描述为“不断增长的谎言包”。 (“或者更确切地说,添加足够多的旧关键字不会立即让旧的 UA 嗅探代码崩溃,同时仍试图传达一些实际有用且准确的信息的平衡行为。”)
我们建议 Web 开发人员尽可能避免 UA 嗅探;现代网络平台功能几乎都可以通过简单的方式检测到。例如,Modernizr 库是检测特征的绝佳而简单的方法。
在过去一年中,我们看到一些 UA 嗅探网站已更新以检测 Microsoft Edge……只是为其提供了旧版 IE11 代码路径。这不是最好的方法,因为 Microsoft Edge 匹配“WebKit”行为,而不是 IE11 行为(任何 Edge-WebKit 差异都是我们有兴趣修复的错误)。
根据我们的经验,Microsoft Edge 在这些网站的“WebKit”代码路径上运行得最好。此外,随着互联网在更广泛的设备上可用,请假设未知浏览器是好的 - 请不要将您的网站限制为仅在一小部分当前已知的浏览器上运行。如果您这样做,您的网站几乎肯定会在未来崩溃。
结论
通过提供 Chrome UA 字符串,我们可以解决这些开发人员正在使用的技巧,从而为用户提供最佳体验。
【讨论】:
"any Edge-WebKit differences are bugs that we’re interested in fixing
" 那为什么还要创建另一个渲染引擎呢?为什么不直接使用 WebKit?
虽然整个答案很好,但您的结论具有误导性,并没有解决问题。这个结论实际上是错误的,因为有很多特性是 Edge 不支持而其他浏览器支持的(例如 css 'object-fit'),因此最好检测 Edge 而不是 Webkit。
这是对它的解释:Edge伪装成Chrome,Chrome伪装成Safari,Safari伪装成Mozilla。而 Edge 使用 EdgeHTML 但不透露,Chrome 使用 Blink 但不透露,但 Chrome 假装使用 WebKit。而Webkit 伪装成KHTML,而KHTML 伪装成Gecko。网络上充斥着大量的混乱。
@Etai,不,尚不支持。您可以查看dev.modern.ie/platform/status 以获取此类查询的答案(例如permalink for object-fit)。 status网站的来源在GitHub上:github.com/MicrosoftEdge/Status。
有趣的是为什么 Edge 从版本 12 开始。如果它是 IE11 的后代,它应该命名为 IE12【参考方案2】:
有一个MDN article 关于使用“用户代理”进行浏览器检测以及在执行此类操作时应注意什么。
除此之外,MSDN Library 描述了“Edge”的用户代理更改。
来自 MSDN User-agent string changes 页面:
适用于 Windows 10 Mobile Insider Preview 的 Microsoft Edge 具有以下用户代理字符串:
Mozilla/5.0 (Windows Phone 10.0; android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.
【讨论】:
【参考方案3】:对于那些寻找正则表达式来检测 IE 和 Microsoft Edge 的人,我从另一个 SO answer 重新利用了一个并添加了 Edge
/(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:|\bEdge\/)(\d+)/
我让它检查 Edge,然后检查其他数字,以防他们决定迭代 Edge 版本。
编辑:要更新是,Edge 和旧 IE 版本都被认为是非常不同的浏览器。我的用例需要检测 IE 品牌浏览器以用于营销目的(如果用户使用任何 Internet Explorer/Edge 浏览器,我们想为此展示一些东西),但您可能不一定是这种情况。
【讨论】:
它们是 2 个完全不同的浏览器,字符串匹配的用例最少。 这对我来说非常好,因为我不想要任何类型的 IE。 Microsoft 将 Edge 的更高版本(基于 Chrome 的 2019-)中的 UA 字符串从Edge/<version>
更改为 Edg/<version>
(没有 e
)。【参考方案4】:
Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0
【讨论】:
【参考方案5】:目前 Web 代理不是调整您的网站的关键点,但您应该检测浏览器功能。
就此而言,您应该使用诸如Modernizr 之类的库来检查特定浏览器功能,而与使用用户的浏览器供应商或版本无关。
注意:尽管有反对意见,但每个人都应该查看other answer on this Q&A,它广泛解释了我总结的答案背后的原因,其中答案证明许多浏览器供应商不鼓励进行用户代理嗅探。这就是我自己回答背后的原因,我建议每个人都根据功能而不是特定浏览器来调整他们的网站。
【讨论】:
【参考方案6】:您忘记了 SA 需要知道浏览器类型才能向 mgmt 报告。 为了准确起见,必须清楚正在使用什么浏览器。 在干净的构建中,Edge 用户代理没有“EDGE”关键字:
Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)
【讨论】:
嗨,迈克,我正面临您所描述的问题。我有相同的用户代理字符串,你知道如何解决这个问题。我有一个与我设置相同的同事(相同的 Edge 版本到补丁版本)。他的 UA 字符串似乎很好。谢谢【参考方案7】:您可以随时通过
检查用户代理字符串-
按 F12 进入开发者工具
制表器:控制台
类型:“navigator.userAgent”+点击返回
适用于 IE、Edge、Chrome..
在 IE 和 Edge 中,您可以简单地为 Tabulator:Emulation 上的当前窗口覆盖它,字段“用户代理字符串”并选择“自定义”...
【讨论】:
【参考方案8】:您可以在https://docs.microsoft.com/en-us/microsoft-edge/web-platform/user-agent-string 找到最新的用户代理 (UA) 字符串。在撰写本文时,它是
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.74 Safari/537.36 Edg/79.0.309.43
.
很有趣,当我只接受Mozilla/5.0
时,它也对我有用。
【讨论】:
【参考方案9】:用户代理覆盖
有时,网站无法识别 Microsoft Edge UA 的更新版本。因此,该网站的一组功能可能无法正常工作。当 Microsoft 收到有关此类问题的通知时,会联系网站所有者并告知更新的 UA。
网站通常需要一些时间来更新和测试 UA 检测逻辑,以解决 Microsoft 向网站所有者报告的问题。在这些情况下,Microsoft 在我们的 Beta 和 Stable 渠道中使用 UA 覆盖列表,以最大限度地提高访问这些站点的用户的兼容性。覆盖指定 Microsoft Edge 应发送的新 UA 值,而不是特定站点的默认 UA。您可以在 Microsoft Edge 的 Beta 和 Stable 通道中导航至 edge://compat/useragent
查看当前正在应用的 UA 覆盖列表。
Go to this page for more detail about User Agent String
【讨论】:
【参考方案10】:用户代理
User-Agent request header 是一个特征字符串,可让服务器和网络对等方识别请求 user agent 的应用程序、操作系统、供应商和/或版本。
语法
User-Agent: <product> / <product-version> <comment>
网络浏览器的常用格式:
User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions>
Go to this page for more detail about User Agent String
【讨论】:
以上是关于Microsoft Edge 的用户代理字符串名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Edge 浏览器代理服务器 每次开机显示错误 如图
vue.esm.js(Microsoft IE 11 和 Microsoft Edge)中的空白页和“未知名称”错误 [关闭]
2020-05-08 只有Microsoft Edge浏览器不能上网的解决方法
如果用户的凭据已被泄露,Microsoft Edge将警告用户