有没有办法检测到我的网站访问者是否运行Chromium而不是Google Chrome?即使是基本的UA嗅探(我知道这是不好的做法)也足以满足我的特殊情况,但似乎Chromium和Chrome share the same UA string-这是正确的吗?有没有其他方法可以区分这两者?
有没有办法检测到我的网站访问者是否运行Chromium而不是Google Chrome?即使是基本的UA嗅探(我知道这是不好的做法)也足以满足我的特殊情况,但似乎Chromium和Chrome share the same UA string-这是正确的吗?有没有其他方法可以区分这两者?
7条答案
按热度按时间6g8kf2rb1#
注:
这不再起作用,因为现在所有基于Chrome的导航器都有所有插件。
新的Chromium版本也有PDF插件。
但他们也有Chromium插件,所以如果任何插件以“Chromium”开头,它就是Chromium:
此外,还可以使用它来标识Microsoft Chredge(又名。阿纳海姆)
gcmastyq2#
Chrome附带了内置的PDF阅读器,而Chromium没有。
你可以使用JavaScript来检测:
此方法不是100%可靠的,因为用户可以将PDF阅读器二进制文件从Chrome复制到其Chromium目录,请参阅this answer on Ask Ubuntu。
Chromium和Chrome之间几乎没有区别(当然不是在渲染或JavaScript引擎上),那么为什么你想发现区别呢?
lymnna713#
从Chromium 84开始,有一个名为User-Agent Client Hints reference的新方法
您可以检查userAgentData属性是否存在并查找品牌数据。它将返回一个类似于下面的数组。
brands将以不同的顺序包含不同的值,所以不要依赖于某个索引中出现的内容。而是检查该属性是否存在于数组中。
klsxnrf14#
以下是Paul W.的回答的变体,适用于Chromium版本42及以上:
当然,这只适用于插件没有被用户禁用的情况。
iyfjxgzm5#
这里是另一种方法,使用
SpeechSynthesis
功能。Google Chrome浏览器提供TTS语音,而Chromium浏览器(包括勇敢)不。语音可以手动安装,使用
espeak
(在linux上),但是 *Google语音 * 都以Google
开头,手动安装的语音没有。据我所知,Chrome的声音是适当的,而不是免费的。声音的集合是一个数组,其中每个声音看起来像这样:
我们只需要找到一个名字/URI以**Google...**开头的人
(在Linux上测试了Chrome,Brave,Chromium和Firefox)请有人检查Safari和Windows。谢谢
ds97pgxw6#
无法评论https://stackoverflow.com/a/68428992/14238203 Josh Answer。
在最新的Chrome和Chromium(2021年10月)上,一些解决方案对两者都返回true,所以我不得不找到一个不同的解决方案。
我把https://stackoverflow.com/a/63724166/14238203 fliptopbox代码和implemented乔希答案。
const isChrome = navigator.userAgentData.brands.some((v) => /^google/i.test(v.brand));
Josh answer的问题是,如果你在加载一个页面时尝试这个方法,getVoices()会返回空数组,直到所有的声音都被加载(页面完成加载)。
对于我的用例来说,getVoices()有点麻烦,所以我使用了用户代理提示解决方案。
zkure5ic7#
经过搜索,这是我如何能够使它的工作。您可以使用navigator.userAgentData.brands [0].brand来获取用户浏览器所属的品牌。由于并非所有浏览器(以及较旧的Google Chrome版本)都支持此对象,因此您可能需要将其 Package 在try catch中,以防止出现未处理的异常错误。