Skip to content

Commit 8f545f9

Browse files
committed
Add new browser: Dooble, Ecosia, Otter, qutebrowser, Surf
1 parent 2d26ead commit 8f545f9

File tree

4 files changed

+74
-4
lines changed

4 files changed

+74
-4
lines changed

src/enums/ua-parser-enums.d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ export const Browser: Readonly<{
3232
DAUM: "Daum";
3333
DILLO: "Dillo";
3434
DOLPHIN: "Dolphin";
35+
DOOBLE: 'Dooble',
3536
DORIS: "Doris";
3637
DRAGON: "Dragon";
3738
DUCKDUCKGO: "DuckDuckGo";
39+
ECOSIA: "Ecosia";
3840
EDGE: "Edge";
3941
EPIPHANY: "Epiphany";
4042
FACEBOOK: "Facebook";
@@ -103,6 +105,7 @@ export const Browser: Readonly<{
103105
OPERA_MOBI: "Opera Mobi";
104106
OPERA_TABLET: "Opera Tablet";
105107
OPERA_TOUCH: "Opera Touch";
108+
OTTER: "Otter";
106109
OVI: "OviBrowser";
107110
PALEMOON: "PaleMoon";
108111
PHANTOMJS: "PhantomJS";
@@ -114,6 +117,7 @@ export const Browser: Readonly<{
114117
QQ_LITE: "QQBrowserLite";
115118
QUARK: "Quark";
116119
QUPZILLA: "QupZilla";
120+
QUTEBROWSER: "qutebrowser";
117121
REKONQ: "rekonq";
118122
ROCKMELT: "Rockmelt";
119123
SAFARI: "Safari";
@@ -130,6 +134,7 @@ export const Browser: Readonly<{
130134
SNAPCHAT: "Snapchat";
131135
SOGOU_EXPLORER: "Sogou Explorer";
132136
SOGOU_MOBILE: "Sogou Mobile";
137+
SURF: "Surf";
133138
SWIFTFOX: "Swiftfox";
134139
TESLA: "Tesla";
135140
TIKTOK: "TikTok";

src/enums/ua-parser-enums.js

+5
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,11 @@ const Browser = Object.freeze({
3737
DAUM: 'Daum',
3838
DILLO: 'Dillo',
3939
DOLPHIN: 'Dolphin',
40+
DOOBLE: 'Dooble',
4041
DORIS: 'Doris',
4142
DRAGON: 'Dragon',
4243
DUCKDUCKGO: 'DuckDuckGo',
44+
ECOSIA: 'Ecosia',
4345
EDGE: 'Edge',
4446
EPIPHANY: 'Epiphany',
4547
FACEBOOK: 'Facebook',
@@ -108,6 +110,7 @@ const Browser = Object.freeze({
108110
OPERA_MOBI: 'Opera Mobi',
109111
OPERA_TABLET: 'Opera Tablet',
110112
OPERA_TOUCH: 'Opera Touch',
113+
OTTER: 'Otter',
111114
OVI: 'OviBrowser',
112115
PALEMOON: 'PaleMoon',
113116
PHANTOMJS: 'PhantomJS',
@@ -119,6 +122,7 @@ const Browser = Object.freeze({
119122
QQ_LITE: 'QQBrowserLite',
120123
QUARK: 'Quark',
121124
QUPZILLA: 'QupZilla',
125+
QUTEBROWSER: 'qutebrowser',
122126
REKONQ: 'rekonq',
123127
ROCKMELT: 'Rockmelt',
124128
SAFARI: 'Safari',
@@ -135,6 +139,7 @@ const Browser = Object.freeze({
135139
SNAPCHAT: 'Snapchat',
136140
SOGOU_EXPLORER: 'Sogou Explorer',
137141
SOGOU_MOBILE: 'Sogou Mobile',
142+
SURF: 'Surf',
138143
SWIFTFOX: 'Swiftfox',
139144
TESLA: 'Tesla',
140145
TIKTOK: 'TikTok',

src/main/ua-parser.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -353,11 +353,11 @@
353353
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
354354
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
355355

356-
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser
357-
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|lg browser)\/([-\w\.]+)/i,
356+
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble
357+
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\/([-\w\.]+)/i,
358358
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
359-
/(heytap|ovi|115)browser\/([\d\.]+)/i, // HeyTap/Ovi/115
360-
/(weibo)__([\d\.]+)/i // Weibo
359+
/(heytap|ovi|115|surf)browser\/([\d\.]+)/i, // HeyTap/Ovi/115/Surf
360+
/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i // Ecosia/Weibo
361361
], [NAME, VERSION], [
362362
/quark(?:pc)?\/([-\w\.]+)/i // Quark
363363
], [VERSION, [NAME, 'Quark']], [

test/data/ua/browser/browser-all.json

+60
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,16 @@
511511
"major" : "2"
512512
}
513513
},
514+
{
515+
"desc" : "Dooble",
516+
"ua" : "Mozilla/5.0 (X11; Haiku BePC) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.15.17 Chrome/87.0.4280.144 Safari/537.36 Dooble/2023.12.25 Dooble/2023.12.25",
517+
"expect" :
518+
{
519+
"name" : "Dooble",
520+
"version" : "2023.12.25",
521+
"major" : "2023"
522+
}
523+
},
514524
{
515525
"desc" : "Doris",
516526
"ua" : "Doris/1.15 [en] (Symbian)",
@@ -541,6 +551,26 @@
541551
"major" : "5"
542552
}
543553
},
554+
{
555+
"desc" : "Ecosia on Android",
556+
"ua" : "Mozilla/5.0 (Linux; Android 10; SM-G975U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36 (Ecosia [email protected])",
557+
"expect" :
558+
{
559+
"name" : "Ecosia",
560+
"version" : "85.0.4183.127",
561+
"major" : "85"
562+
}
563+
},
564+
{
565+
"desc" : "Ecosia on iOS",
566+
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 (Ecosia [email protected])",
567+
"expect" :
568+
{
569+
"name" : "Ecosia",
570+
"version" : "3.0.1.533",
571+
"major" : "3"
572+
}
573+
},
544574
{
545575
"desc" : "Epiphany",
546576
"ua" : "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7) Gecko/20040628 Epiphany/1.2.6",
@@ -1006,6 +1036,16 @@
10061036
"major" : "5"
10071037
}
10081038
},
1039+
{
1040+
"desc" : "Otter",
1041+
"ua" : "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/602.1 (KHTML, like Gecko) Otter/1.0.81",
1042+
"expect" :
1043+
{
1044+
"name" : "Otter",
1045+
"version" : "1.0.81",
1046+
"major" : "1"
1047+
}
1048+
},
10091049
{
10101050
"desc" : "PicoBrowser",
10111051
"ua" : "Mozilla/5.0 (X11; Linux x86_64; Pico Neo3 Link OS5.8.4.0 like Quest) AppleWebKit/537.36 (KHTML, like Gecko) PicoBrowser/3.3.22 Chrome/105.0.5195.68 VR Safari/537.36",
@@ -1066,6 +1106,16 @@
10661106
"major" : "9"
10671107
}
10681108
},
1109+
{
1110+
"desc" : "Surf Browser",
1111+
"ua" : "Mozilla/5.0 (Android 6.0; HUAWEI ALE-L21) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 SurfBrowser/3.0",
1112+
"expect" :
1113+
{
1114+
"name" : "Surf",
1115+
"version" : "3.0",
1116+
"major" : "3"
1117+
}
1118+
},
10691119
{
10701120
"desc" : "LG Browser",
10711121
"ua" : "Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+3D+SCREEN+TUNER; LGE; 47LA621V-ZD; 04.28.17; 0x00000001;); LG NetCast.TV-2013 /04.28.17 (LG, 47LA621V-ZD, wired)",
@@ -1628,6 +1678,16 @@
16281678
"major" : "1"
16291679
}
16301680
},
1681+
{
1682+
"desc" : "qutebrowser",
1683+
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) qutebrowser/2.4.0 QtWebEngine/5.15.6 Chrome/95.0.4628.2 Safari/537.36",
1684+
"expect" :
1685+
{
1686+
"name" : "qutebrowser",
1687+
"version" : "2.4.0",
1688+
"major" : "2"
1689+
}
1690+
},
16311691
{
16321692
"desc" : "Rekonq 2",
16331693
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) rekonq/2.2.1 Safari/537.21",

0 commit comments

Comments
 (0)