You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测客户端使用的Web浏览器是否为Vivaldi?

检测Vivaldi浏览器的JavaScript实现方案

Vivaldi出于网站兼容性考虑,默认会将User-Agent字符串伪装为Chrome的UA值,因此无法通过常规的navigator.userAgent关键字匹配完成检测,可使用以下两种方案实现识别:

方案1:调用Vivaldi专属API(推荐,准确率最高)

Vivaldi浏览器会在全局navigator对象上挂载独有的vivaldi属性,是官方预留的标识特征,所有Vivaldi 1.0及以上版本均支持该属性,检测代码如下:

function checkIsVivaldi() {
  return typeof navigator !== 'undefined' && !!navigator.vivaldi;
}

该方案可以覆盖99%以上的常规使用场景,无需额外的特征校验。

方案2:多特征组合校验(备用方案)

如果遇到navigator.vivaldi被人为篡改的极端场景,可以结合Vivaldi的独有运行特征做组合判断,核心判断维度包括:

  • 内核特征为Chrome
  • 存在Vivaldi专属的插件、扩展运行标记
  • 内部API存在Vivaldi独有标识

示例代码如下:

async function checkIsVivaldiFallback() {
  // 首先排除非Chromium内核浏览器
  if (typeof navigator === 'undefined' || !navigator.userAgent.includes('Chrome')) {
    return false;
  }
  try {
    // 校验插件特征
    const hasVivaldiPlugin = Array.from(navigator.plugins).some(plugin => 
      plugin.name.includes('Vivaldi') || plugin.description.includes('Vivaldi')
    );
    // 校验扩展运行时特征,mpognobbkildjkofajifpdfhcoklimli为Vivaldi内置扩展固定ID
    const hasVivaldiRuntime = typeof chrome !== 'undefined' && 
      chrome.runtime?.id?.includes('mpognobbkildjkofajifpdfhcoklimli');
    return hasVivaldiPlugin || hasVivaldiRuntime;
  } catch (e) {
    return false;
  }
}

注意:该备用方案仅作为第一种方案的补充,不建议单独使用,特征规则可能随浏览器版本迭代发生变化。

内容的提问来源于stack exchange,提问作者Phillip Yeo Kian Yong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 19:09:03