如何判断用户是否使用Brave作为浏览器?

时间:2016-04-09 22:25:22

标签: javascript php html

我一直在搞乱 Brave 浏览器(https://www.brave.com/),我无法弄清楚如何判断用户是否正在使用 Brave 。我使用一个简单的文档来输出用户代理:



<script>document.write(navigator.userAgent);</script>
&#13;
&#13;
&#13;

我得到了:

  

Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 49.0.2623.108 Safari / 537.36

在我的情况下,这对我没有任何帮助。有谁知道如何确定在PHP或JavaScript中使用 Brave 的人?谢谢!

9 个答案:

答案 0 :(得分:11)

&#34;勇敢&#34;在0.9版本中删除了用户代理。

来自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;
    });
}