Skip to content

Commit

Permalink
updated 将引擎合并到浏览器信息中
Browse files Browse the repository at this point in the history
  • Loading branch information
mumuy committed Jul 31, 2024
1 parent b240cde commit eaab1c5
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 61 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ var browser = require("browser-tool");
// 解析User-Agent
let info = browser.parse('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0');

// 获取浏览器详细信息 - 指定字段:'browser','engine','system','device','gpu','network','battery','screen','language','timezone'
// 获取浏览器详细信息 - 指定字段:'browser','system','device','gpu','network','battery','screen','language','timezone'
let networkInfo = await browser.getInfo(['network']);

// 获取浏览器详细信息 - 全部字段
Expand Down
2 changes: 1 addition & 1 deletion dist/browser.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/browser.min.mjs

Large diffs are not rendered by default.

5 changes: 1 addition & 4 deletions src/browser.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import browserLoader from './module/browser-loader.js';
import engineLoader from './module/engine-loader.js';
import systemLoader from './module/system-loader.js';
import deviceLoader from './module/device-loader.js';
import gpuLoader from './module/gpu-loader.js';
Expand All @@ -14,19 +13,17 @@ export default {
let data = {};
[
browserLoader,
engineLoader,
systemLoader,
deviceLoader,
].forEach(loader=>{
data = Object.assign(data,loader.parse(ua));
});
return data;
},
async getInfo(list = ['browser','engine','system','device','gpu','network','battery','screen','language','timezone']){
async getInfo(list = ['browser','system','device','gpu','network','battery','screen','language','timezone']){
let data = {};
let loaderList = [
browserLoader,
engineLoader,
systemLoader,
deviceLoader,
gpuLoader,
Expand Down
37 changes: 34 additions & 3 deletions src/module/browser-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,17 @@ import _YisouSpider from './browser/YisouSpider.js';
import _YodaoBot from './browser/YodaoBot.js';
import _YandexBot from './browser/YandexBot.js';

import _WebKit from './engine/WebKit.js';
import _Trident from './engine/Trident.js';
import _Gecko from './engine/Gecko.js';
import _Servo from './engine/Servo.js';
import _Presto from './engine/Presto.js';
import _KHTML from './engine/KHTML.js';

import userAgent from './runtime/userAgent.js';

let loaderList = [_Safari, _Chrome, _Edge, _IE, _Firefox, _Firefox_Focus, _Chromium, _Opera, _Opera_GX, _Vivaldi, _Yandex, _Brave, _Arora, _Lunascape, _QupZilla, _Coc_Coc, _Kindle, _Iceweasel, _Konqueror, _Iceape, _SeaMonkey, _Epiphany, _Huawei, _OPPO, _Vivo, _Xiaomi, _Meizu, _OnePlus, _Samsung, _360, _360EE, _360SE, _360EE_macOS, _360AI, _360AI_macOS, _360ENT, _UC, _QQBrowser, _QQ, _Baidu, _Maxthon, _Sogou, _Liebao, _2345Explorer, _115Browser, _TheWorld, _Quark, _Qiyu, _Lenovo, _Wechat, _WechatWork, _Taobao, _Alipay, _Weibo, _Douban, _Suning, _iQIYI, _DingTalk, _Douyin, _Toutiao, _Googlebot, _Baiduspider, _Sogouspider, _Bingbot, _360Spider, _Bytespider, _YisouSpider, _YodaoBot, _YandexBot];
loaderList.forEach(item=>{
let browserList = [_Safari, _Chrome, _Edge, _IE, _Firefox, _Firefox_Focus, _Chromium, _Opera, _Opera_GX, _Vivaldi, _Yandex, _Brave, _Arora, _Lunascape, _QupZilla, _Coc_Coc, _Kindle, _Iceweasel, _Konqueror, _Iceape, _SeaMonkey, _Epiphany, _Huawei, _OPPO, _Vivo, _Xiaomi, _Meizu, _OnePlus, _Samsung, _360, _360EE, _360SE, _360EE_macOS, _360AI, _360AI_macOS, _360ENT, _UC, _QQBrowser, _QQ, _Baidu, _Maxthon, _Sogou, _Liebao, _2345Explorer, _115Browser, _TheWorld, _Quark, _Qiyu, _Lenovo, _Wechat, _WechatWork, _Taobao, _Alipay, _Weibo, _Douban, _Suning, _iQIYI, _DingTalk, _Douyin, _Toutiao, _Googlebot, _Baiduspider, _Sogouspider, _Bingbot, _360Spider, _Bytespider, _YisouSpider, _YodaoBot, _YandexBot];
browserList.forEach(item=>{
if(!item.is){
item.is = async function(){
return item.parse().is;
Expand All @@ -85,17 +92,33 @@ loaderList.forEach(item=>{
}
});

let engineList = [_WebKit, _Trident, _Gecko, _Servo, _Presto, _KHTML];
engineList.forEach(item=>{
if(!item.is){
item.is = async function(){
return item.parse().is;
};
}
});

export default {
name:'browser',
parse(ua = userAgent){
let browser = '';
let browserVersion = '';
loaderList.forEach(function(item){
browserList.forEach(function(item){
if(item.parse(ua).is){
browser = item.name;
browserVersion = item.parse(ua).version;
}
});

let engine = '';
engineList.forEach(function(item){
if(item.parse(ua).is){
engine = item.name;
}
});

// 修正
if(browser == 'Chrome'&&ua.match(/\S+Browser/)){
Expand All @@ -107,13 +130,19 @@ export default {
if(!browserVersion){
browserVersion = ua.match(/Version\/([\d.]+)/)?.[1]||'';
}
if (_Edge.parse(ua).is) {
engine = parseInt(_Edge.parse(ua).version)>75?'Blink':'EdgeHTML';
} else if (_Chrome.parse(ua).is&&parseInt(_Chrome.parse(ua).version) > 27) {
engine = 'Blink';
}

let isWebview = ua.includes('; wv)');
let isRobot = ['Googlebot', 'Baiduspider', 'Sogouspider', 'Bingbot', '360Spider', 'Bytespider', 'YandexBot'].includes(browser);

return {
browser,
browserVersion,
engine,
isWebview,
isRobot
};
Expand All @@ -122,6 +151,7 @@ export default {
let {
browser,
browserVersion,
engine,
isWebview,
isRobot
} = this.parse();
Expand All @@ -147,6 +177,7 @@ export default {
return {
browser,
browserVersion,
engine,
isWebview,
isRobot,
userAgent:ua
Expand Down
6 changes: 3 additions & 3 deletions src/module/device-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import _Tablet from './device/Tablet.js';

import userAgent from './runtime/userAgent.js';

let loaderList = [_Mobile,_Tablet];
loaderList.forEach(item=>{
let deviceList = [_Mobile,_Tablet];
deviceList.forEach(item=>{
if(!item.is){
item.is = async function(){
return item.parse().is;
Expand All @@ -16,7 +16,7 @@ export default {
name:'device',
parse(ua = userAgent){
let device = 'Desktop';
loaderList.forEach(function(item){
deviceList.forEach(function(item){
if(item.parse(ua).is){
device = item.name;
}
Expand Down
45 changes: 0 additions & 45 deletions src/module/engine-loader.js

This file was deleted.

6 changes: 3 additions & 3 deletions src/module/system-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ import _WebOS from './system/WebOS.js';
import userAgent from './runtime/userAgent.js';
import globalThis from './runtime/globalThis.js';

let loaderList = [_Windows, _Linux, _macOS, _Android, _HarmonyOS, _Ubuntu, _FreeBSD, _Debian, _iOS, _Windows_Phone, _BlackBerry, _MeeGo, _Symbian, _Chrome_OS, _WebOS];
loaderList.forEach(item=>{
let systemList = [_Windows, _Linux, _macOS, _Android, _HarmonyOS, _Ubuntu, _FreeBSD, _Debian, _iOS, _Windows_Phone, _BlackBerry, _MeeGo, _Symbian, _Chrome_OS, _WebOS];
systemList.forEach(item=>{
if(!item.is){
item.is = async function(){
return item.parse().is;
Expand All @@ -36,7 +36,7 @@ export default {
parse(ua = userAgent){
let system = '';
let systemVersion = '';
loaderList.forEach(function(item){
systemList.forEach(function(item){
if(item.parse(ua).is){
system = item.name;
systemVersion = item.parse(ua).version;
Expand Down

0 comments on commit eaab1c5

Please sign in to comment.