This repository was archived by the owner on Oct 25, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
/
Copy pathua_handler.js
94 lines (76 loc) · 1.76 KB
/
ua_handler.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
var fs = require('fs'), path = require('path');
var uaList = fs.readFileSync(path.join(__dirname, 'ua.txt'));
uaList = uaList.toString().split('\n');
var OSs = {};
var browsers = {};
var browserVersions = {};
var unknown = [];
var osMatch = {
ios: /iOS|iPhone OS/i,
android: /Android/i,
linux: /Linux/i,
win: /Windows/i,
osx: /Mac|OS X/i,
blackberry: /BlackBerry|BB10/i,
series60: /Series 60|Series60/i,
series40: /Series 40|Series40/i,
j2me: /J2ME|MIDP/i
};
var browserMatch = {
opera: /opera/i,
ie: /msie|trident\//i,
chrome: /chrome/i,
chromium: /chromium/i,
safari: /safari|AppleWebKit/i,
firefox: /firefox/i,
blackberry: /BlackBerry/i
};
var featureMatch = {
ipad: /ipad/i,
opera_mobile: /opera mini|opera mobi/i,
opera_mini: /opera mini/i,
blackberry: /blackberry/i
};
uaList.forEach(function (uaName) {
var os = 'unknown';
for (var curOs in osMatch) {
if (uaName.match(osMatch[curOs])) {
os = curOs;
break;
}
}
var browser = 'unknown';
for (var curBrowser in browserMatch) {
if (uaName.match(browserMatch[curBrowser])) {
browser = curBrowser;
break;
}
}
var version = (
uaName.match(/MSIE ([\d.]+)/) ||
uaName.match( /.+(?:me|ox|on|rv|it|era|opr|ie)[\/: ]([\d.]+)/) ||
[0,'0']
)[1];
if (!OSs[os]) {
OSs[os] = 1;
} else {
OSs[os]++;
}
if (!browsers[os + ' ' + browser]) {
browsers[os + ' ' + browser] = 1;
} else {
browsers[os + ' ' + browser]++;
}
if (os == 'unknown' || browser == 'unknown') {
unknown.push(uaName);
}
if (!browserVersions[os + ' ' + browser + ' ' + version]) {
browserVersions[os + ' ' + browser + ' ' + version] = 1;
} else {
browserVersions[os + ' ' + browser + ' ' + version]++;
}
})
console.log(OSs);
console.log(browsers);
console.log(browserVersions);
// console.log(unknown);