如何检测Facebook应用内置浏览器 Bowser无法识别时可用什么工具
识别失效原因
Facebook、Messenger的内置浏览器是基于系统原生浏览器内核封装的WebView容器:Android端底层复用Chromium内核,iOS端底层复用Safari内核,因此User-Agent字段默认会携带Chrome、Safari的原生标识。Bowser这类通用浏览器检测工具的默认规则仅会匹配内核对应的基础浏览器类型,不会识别上层Facebook容器的专属特征,因此会出现误判为Chrome的情况。
准确识别方案
- 自主实现检测逻辑(最可控,准确率最高)
Facebook全系列内置浏览器的User-Agent都会携带独有的FBAN、FBAV、FB_IAB特征字段,仅需匹配对应字段即可完成识别,兼容Android、iOS全平台,代码示例:
// 判断是否为Facebook系列应用内置浏览器(包含Facebook主应用、Messenger) function checkIsFacebookInApp() { const userAgent = window.navigator.userAgent; return /FBAN|FBAV|FB_IAB/.test(userAgent); } // 单独判断是否为Messenger内置浏览器 function checkIsMessengerInApp() { const userAgent = window.navigator.userAgent; return /FBAN\/Messenger/.test(userAgent); }
- 使用专项检测npm包
目前有多个成熟的专项检测包可直接使用,比如is-facebook-app、ua-parser-js的Facebook扩展规则集,这类工具已经内置了全平台的特征匹配规则,开箱即用,识别精度远高于Bowser这类通用检测工具的默认配置。
内容的提问来源于stack exchange,提问作者Pinky Promise
相关产品推荐
相关产品推荐

