我一直在搞乱 Brave 浏览器(https://www.brave.com/),我无法弄清楚如何判断用户是否正在使用 Brave 。我使用一个简单的文档来输出用户代理:
<script>document.write(navigator.userAgent);</script>
&#13;
我得到了:
在我的情况下,这对我没有任何帮助。有谁知道如何确定在PHP或JavaScript中使用 Brave 的人?谢谢!Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 49.0.2623.108 Safari / 537.36
答案 0 :(得分:11)
来自changelog:
从User Agent HTTP标头中删除Brave以减少 指纹识别。
答案 1 :(得分:11)
从2020年4月开始,您可以使用this detection method来获取有关用户是否使用Brave的布尔答案:
(navigator.brave && await navigator.brave.isBrave() || false)
答案 2 :(得分:6)
Brave与Chrome具有相同的用户代理。但是Chrome本身向 window 对象添加了很多(特定于现在的1768)chrome特定的属性。其中之一是 window.google 。因此,检测Brave非常简单(到目前为止):
const ua = window.navigator.userAgent.toLowerCase();
const isChrome = /chrome|crios/.test(ua) && ! /edge|opr\//.test(ua)
const isBrave = isChrome && ! window.google;
太勇敢了,大声笑。
答案 3 :(得分:5)
勇敢的出现在窗口对象中有一些不同的对象。我不确定这些版本在Brave版本中有多连续,但是我在window.navigator对象中注意到了两个已被屏蔽的对象:plugins和mimeTypes。由于Brave旨在成为一种隐私浏览器,因此我认为这很可能会保持空白。所以我的检查是检查那些长度。
请注意,您还需要先检查浏览器是否为台式机。似乎您无法检测到Brave Mobile浏览器;并且以下代码将使用许多移动浏览器
var agent = navigator.userAgent.toLowerCase();
var isChrome = /chrome|crios/.test(agent) && ! /edge|opr\//.test(agent);
var isBrave = isChrome && window.navigator.plugins.length === 0 && window.navigator.mimeTypes.length === 0;
if(isBrave)
console.log( isBrave );
如果您在DuckDuckGo中搜索[我的用户代理人],他们将返回Brave。如果打开附件的JS文件,则会发现可以检测Brave的精心设计的浏览器。
答案 4 :(得分:3)
如其他答案所指出的那样,勇敢者没有自己的User-Agent。但是,您可以轻松地对其进行指纹识别,以区别于Google Chrome。当前版本0.23.19具有至少40个独特的特性,可以与其他浏览器区分开。我在this article中对此进行了更详细的介绍。但是,这是一个荒谬的解决方案。请只输入ask Brave to restore their own User-Agent字符串。
答案 5 :(得分:3)
有一种方法可以检查用户是否在没有任何api调用的情况下使用勇敢。 我创建了以下函数,如果该函数勇敢,则返回false或True
function isBrave() {
if (window.navigator.brave != undefined) {
if (window.navigator.brave.isBrave.name == "isBrave") {
return true;
} else {
return false;
}
} else {
return false;
}
}
document.getElementById("ans").innerHTML = isBrave();
Is this Brave? <span id="ans"></span>
答案 6 :(得分:2)
2020年。更新的解决方案:
Chrome现在向窗口对象 googletag 添加了一个新键,而原来的键是 google
现在这是工作代码:
const ua = window.navigator.userAgent.toLowerCase();
const isChrome = /chrome|crios/.test(ua) && ! /edge|opr\//.test(ua)
const isBrave = isChrome && ! window.googletag;
答案 7 :(得分:1)
Kohjah Breese的解决方案无法在Android上检测到“勇敢”(例如,Chrome被检测为“勇敢”)。但是就像他说的那样:“如果您在DuckDuckGo中搜索[我的用户代理人],他们将返回Brave。“然后,您可以使用Duckduckgo的API来了解他们的浏览器是否为Brave:
var request = new XMLHttpRequest()
request.open('GET', 'https://api.duckduckgo.com/?q=useragent&format=json', true)
request.onload = function () {
var data = JSON.parse(this.response)
var isBrave = data['Answer'].includes('Brave');
if(isBrave){
console.log( isBrave );
}
}
request.send()
答案 8 :(得分:1)
Brave具有类Brave
,该类在页面加载时创建并作为navigator.brave
添加到导航器中。它有一种返回承诺的方法:Brave.prototype.isBrave()
使用这三个,您可以为勇敢的浏览器创建一个支票(类似这样):
var isBrave = false;
if(window.Brave&&navigator.brave&&navigator.brave.isBrave){
isBrave = 'probable';//or some other value, as you wish
navigator.brave.isBrave().then(function(r){
if(r)isBrave = true;
});
}