Telegram Web, preconfigured for usage in I2P.
http://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
1.8 KiB
95 lines
1.8 KiB
10 years ago
|
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);
|
||
|
|