@sswroom/sswr 1.6.6 → 1.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Changelog +10 -0
- package/kml.d.ts +1 -0
- package/package.json +1 -1
- package/text.d.ts +2 -1
- package/text.js +20 -1
- package/web.d.ts +87 -0
- package/web.js +646 -0
package/Changelog
CHANGED
package/kml.d.ts
CHANGED
package/package.json
CHANGED
package/text.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export function arrayToNumbers(arr: string[]): number[];
|
|
|
24
24
|
export function toHex8(v: number): string;
|
|
25
25
|
export function toHex16(v: number): string;
|
|
26
26
|
export function toHex32(v: number): string;
|
|
27
|
-
export function u8Arr2Hex(buff: Uint8Array, byteSep
|
|
27
|
+
export function u8Arr2Hex(buff: Uint8Array, byteSep?: string | null, rowSep?: string | null): string;
|
|
28
28
|
export function splitLines(txt: string): string[];
|
|
29
29
|
export function isEmailAddress(s: string): boolean;
|
|
30
30
|
export function toUTF32Length(s: string): number;
|
|
@@ -33,6 +33,7 @@ export function charIsAlphaNumeric(s: string, index: number): boolean;
|
|
|
33
33
|
export function charIsDigit(s: string, index: number): boolean;
|
|
34
34
|
export function charIsUpperCase(s: string, index: number): boolean;
|
|
35
35
|
export function charIsLowerCase(s: string, index: number): boolean;
|
|
36
|
+
export function replaceAll(s: string, replaceFrom: string, replaceTo: string): string;
|
|
36
37
|
export function getEncList(): TextBinEnc[];
|
|
37
38
|
|
|
38
39
|
export class TextBinEnc
|
package/text.js
CHANGED
|
@@ -321,7 +321,7 @@ export function isEmailAddress(s)
|
|
|
321
321
|
{
|
|
322
322
|
|
|
323
323
|
}
|
|
324
|
-
if (c == '_')
|
|
324
|
+
else if (c == '_')
|
|
325
325
|
{
|
|
326
326
|
if (atPos != -1)
|
|
327
327
|
{
|
|
@@ -538,6 +538,25 @@ export function charIsLowerCase(s, index)
|
|
|
538
538
|
return false;
|
|
539
539
|
}
|
|
540
540
|
|
|
541
|
+
/**
|
|
542
|
+
* @param {string} s
|
|
543
|
+
* @param {string} replaceFrom
|
|
544
|
+
* @param {string} replaceTo
|
|
545
|
+
*/
|
|
546
|
+
export function replaceAll(s, replaceFrom, replaceTo)
|
|
547
|
+
{
|
|
548
|
+
let i = 0;
|
|
549
|
+
let j;
|
|
550
|
+
while (true)
|
|
551
|
+
{
|
|
552
|
+
j = s.indexOf(replaceFrom, i);
|
|
553
|
+
if (j < 0)
|
|
554
|
+
return s;
|
|
555
|
+
s = s.substring(0, j) + replaceTo + s.substring(j + replaceFrom.length);
|
|
556
|
+
i = j + replaceTo.length;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
541
560
|
export function getEncList()
|
|
542
561
|
{
|
|
543
562
|
let ret = [];
|
package/web.d.ts
CHANGED
|
@@ -12,6 +12,91 @@ declare class ImageInfo
|
|
|
12
12
|
height: number;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
export enum OSType
|
|
16
|
+
{
|
|
17
|
+
Unknown,
|
|
18
|
+
WindowsNT,
|
|
19
|
+
WindowsCE,
|
|
20
|
+
WindowsSvr,
|
|
21
|
+
Linux_X86_64,
|
|
22
|
+
Android,
|
|
23
|
+
iPad,
|
|
24
|
+
iPhone,
|
|
25
|
+
Darwin,
|
|
26
|
+
MacOS,
|
|
27
|
+
WindowsNT64,
|
|
28
|
+
ChromeOS,
|
|
29
|
+
Linux_i686,
|
|
30
|
+
Netcast
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export enum BrowserType
|
|
34
|
+
{
|
|
35
|
+
Unknown,
|
|
36
|
+
IE,
|
|
37
|
+
Firefox,
|
|
38
|
+
Chrome,
|
|
39
|
+
Safari,
|
|
40
|
+
UCBrowser,
|
|
41
|
+
CFNetwork,
|
|
42
|
+
SogouWeb,
|
|
43
|
+
Baidu,
|
|
44
|
+
Semrush,
|
|
45
|
+
Dalvik,
|
|
46
|
+
Indy,
|
|
47
|
+
GoogleBots,
|
|
48
|
+
AndroidWV,
|
|
49
|
+
Samsung,
|
|
50
|
+
WestWind,
|
|
51
|
+
Yandex,
|
|
52
|
+
Bing,
|
|
53
|
+
Masscan,
|
|
54
|
+
PyRequests,
|
|
55
|
+
Zgrab,
|
|
56
|
+
Edge,
|
|
57
|
+
PyURLLib,
|
|
58
|
+
GoogleBotD,
|
|
59
|
+
DotNet,
|
|
60
|
+
WinDiag,
|
|
61
|
+
SSWR,
|
|
62
|
+
SmartTV,
|
|
63
|
+
BlexBot,
|
|
64
|
+
SogouPic,
|
|
65
|
+
Nutch,
|
|
66
|
+
Yisou,
|
|
67
|
+
Wget,
|
|
68
|
+
Scrapy,
|
|
69
|
+
GoHTTP,
|
|
70
|
+
WinHTTP,
|
|
71
|
+
NLPProject,
|
|
72
|
+
ApacheHTTP,
|
|
73
|
+
BannerDet,
|
|
74
|
+
NetcraftWeb,
|
|
75
|
+
NetcraftAG,
|
|
76
|
+
AhrefsBot,
|
|
77
|
+
Mj12Bot,
|
|
78
|
+
NetSysRes,
|
|
79
|
+
Whatsapp,
|
|
80
|
+
Curl,
|
|
81
|
+
GSA,
|
|
82
|
+
Facebook,
|
|
83
|
+
Netseen,
|
|
84
|
+
MSNBot,
|
|
85
|
+
LibwwwPerl,
|
|
86
|
+
HuaweiBrowser,
|
|
87
|
+
Opera,
|
|
88
|
+
MiBrowser
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare class BrowserInfo
|
|
92
|
+
{
|
|
93
|
+
os: OSType;
|
|
94
|
+
osVer?: string;
|
|
95
|
+
browser: BrowserType;
|
|
96
|
+
browserVer?: string;
|
|
97
|
+
devName?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
15
100
|
export function getRequestURLBase(): string;
|
|
16
101
|
export function getParameterByName(name: string): string | null;
|
|
17
102
|
export function loadJSON(url: string, onResultFunc: Function): void;
|
|
@@ -28,6 +113,8 @@ export function getCacheSize(name: string): Promise<number>;
|
|
|
28
113
|
export function getInputOrSelectElement(id: string): HTMLInputElement|HTMLSelectElement;
|
|
29
114
|
export function getInputElement(id: string): HTMLInputElement;
|
|
30
115
|
export function getSelectElement(id: string): HTMLSelectElement;
|
|
116
|
+
export function getBrowserInfo(): Promise<BrowserInfo>;
|
|
117
|
+
export function parseUserAgent(userAgent: string): BrowserInfo;
|
|
31
118
|
|
|
32
119
|
declare class DialogButton
|
|
33
120
|
{
|
package/web.js
CHANGED
|
@@ -1,6 +1,80 @@
|
|
|
1
1
|
import * as data from "./data.js";
|
|
2
2
|
import * as text from "./text.js";
|
|
3
3
|
|
|
4
|
+
export const OSType = {
|
|
5
|
+
Unknown: "Unknown",
|
|
6
|
+
WindowsNT: "WindowsNT",
|
|
7
|
+
WindowsCE: "WindowsCE",
|
|
8
|
+
WindowsSvr: "WindowsSvr",
|
|
9
|
+
Linux_X86_64: "Linux_X86_64",
|
|
10
|
+
Android: "Android",
|
|
11
|
+
iPad: "iPad",
|
|
12
|
+
iPhone: "iPhone",
|
|
13
|
+
Darwin: "Darwin",
|
|
14
|
+
MacOS: "MacOS",
|
|
15
|
+
WindowsNT64: "WindowsNT64",
|
|
16
|
+
ChromeOS: "ChromeOS",
|
|
17
|
+
Linux_i686: "Linux_i686",
|
|
18
|
+
Netcast: "Netcast"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const BrowserType = {
|
|
22
|
+
Unknown: "Unknown",
|
|
23
|
+
IE: "IE",
|
|
24
|
+
Firefox: "Firefox",
|
|
25
|
+
Chrome: "Chrome",
|
|
26
|
+
Safari: "Safari",
|
|
27
|
+
UCBrowser: "UCBrowser",
|
|
28
|
+
CFNetwork: "CFNetwork",
|
|
29
|
+
SogouWeb: "SogouWeb",
|
|
30
|
+
Baidu: "Baidu",
|
|
31
|
+
Semrush: "Semrush",
|
|
32
|
+
Dalvik: "Dalvik",
|
|
33
|
+
Indy: "Indy",
|
|
34
|
+
GoogleBots: "GoogleBots",
|
|
35
|
+
AndroidWV: "AndroidWV",
|
|
36
|
+
Samsung: "Samsung",
|
|
37
|
+
WestWind: "WestWind",
|
|
38
|
+
Yandex: "Yandex",
|
|
39
|
+
Bing: "Bing",
|
|
40
|
+
Masscan: "Masscan",
|
|
41
|
+
PyRequests: "PyRequests",
|
|
42
|
+
Zgrab: "Zgrab",
|
|
43
|
+
Edge: "Edge",
|
|
44
|
+
PyURLLib: "PyURLLib",
|
|
45
|
+
GoogleBotD: "GoogleBotD",
|
|
46
|
+
DotNet: "DotNet",
|
|
47
|
+
WinDiag: "WinDiag",
|
|
48
|
+
SSWR: "SSWR",
|
|
49
|
+
SmartTV: "SmartTV",
|
|
50
|
+
BlexBot: "BlexBot",
|
|
51
|
+
SogouPic: "SogouPic",
|
|
52
|
+
Nutch: "Nutch",
|
|
53
|
+
Yisou: "Yisou",
|
|
54
|
+
Wget: "Wget",
|
|
55
|
+
Scrapy: "Scrapy",
|
|
56
|
+
GoHTTP: "GoHTTP",
|
|
57
|
+
WinHTTP: "WinHTTP",
|
|
58
|
+
NLPProject: "NLPProject",
|
|
59
|
+
ApacheHTTP: "ApacheHTTP",
|
|
60
|
+
BannerDet: "BannerDet",
|
|
61
|
+
NetcraftWeb: "NetcraftWeb",
|
|
62
|
+
NetcraftAG: "NetcraftAG",
|
|
63
|
+
AhrefsBot: "AhrefsBot",
|
|
64
|
+
Mj12Bot: "Mj12Bot",
|
|
65
|
+
NetSysRes: "NetSysRes",
|
|
66
|
+
Whatsapp: "Whatsapp",
|
|
67
|
+
Curl: "Curl",
|
|
68
|
+
GSA: "GSA",
|
|
69
|
+
Facebook: "Facebook",
|
|
70
|
+
Netseen: "Netseen",
|
|
71
|
+
MSNBot: "MSNBot",
|
|
72
|
+
LibwwwPerl: "LibwwwPerl",
|
|
73
|
+
HuaweiBrowser: "HuaweiBrowser",
|
|
74
|
+
Opera: "Opera",
|
|
75
|
+
MiBrowser: "MiBrowser"
|
|
76
|
+
}
|
|
77
|
+
|
|
4
78
|
export function getRequestURLBase()
|
|
5
79
|
{
|
|
6
80
|
let url = document.location.href;
|
|
@@ -892,6 +966,578 @@ export function getSelectElement(id)
|
|
|
892
966
|
throw new Error("Element with id \""+id+"\" is not a select");
|
|
893
967
|
}
|
|
894
968
|
|
|
969
|
+
/**
|
|
970
|
+
* @returns {Promise<{os: String,osVer?:string,browser: String,browserVer?: string,devName?:string}>}
|
|
971
|
+
*/
|
|
972
|
+
export async function getBrowserInfo()
|
|
973
|
+
{
|
|
974
|
+
let ret = parseUserAgent(navigator.userAgent);
|
|
975
|
+
// @ts-ignore
|
|
976
|
+
if (navigator.userAgentData)
|
|
977
|
+
{
|
|
978
|
+
// @ts-ignore
|
|
979
|
+
let data = await navigator.userAgentData.getHighEntropyValues(['fullVersionList', 'platformVersion', 'model']);
|
|
980
|
+
if (data.platformVersion)
|
|
981
|
+
ret.osVer = data.platformVersion;
|
|
982
|
+
if (data.model)
|
|
983
|
+
ret.devName = data.model;
|
|
984
|
+
if (data.fullVersionList)
|
|
985
|
+
{
|
|
986
|
+
ret.browserVer = data.fullVersionList[data.fullVersionList.length - 1].version;
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
return ret;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
/**
|
|
993
|
+
* @param {string} userAgent
|
|
994
|
+
* @returns {{os: String;osVer?: string;browser: String;browserVer?: string;devName?: string;}}
|
|
995
|
+
*/
|
|
996
|
+
export function parseUserAgent(userAgent)
|
|
997
|
+
{
|
|
998
|
+
let ent = {os: OSType.Unknown, browser: BrowserType.Unknown};
|
|
999
|
+
let i;
|
|
1000
|
+
if (userAgent == "Microsoft Windows Network Diagnostics")
|
|
1001
|
+
{
|
|
1002
|
+
ent.browser = BrowserType.WinDiag;
|
|
1003
|
+
return ent;
|
|
1004
|
+
}
|
|
1005
|
+
else if (userAgent.startsWith("West Wind Internet Protocols "))
|
|
1006
|
+
{
|
|
1007
|
+
ent.browser = BrowserType.WestWind;
|
|
1008
|
+
ent.browserVer = userAgent.substring(29);
|
|
1009
|
+
return ent;
|
|
1010
|
+
}
|
|
1011
|
+
else if (userAgent.startsWith("Sogou web spider/"))
|
|
1012
|
+
{
|
|
1013
|
+
ent.browser = BrowserType.SogouWeb;
|
|
1014
|
+
i = userAgent.indexOf('(');
|
|
1015
|
+
if (i >= 0)
|
|
1016
|
+
{
|
|
1017
|
+
ent.browserVer = userAgent.substring(17, i);
|
|
1018
|
+
}
|
|
1019
|
+
else
|
|
1020
|
+
{
|
|
1021
|
+
ent.browserVer = userAgent.substring(17);
|
|
1022
|
+
}
|
|
1023
|
+
return ent;
|
|
1024
|
+
}
|
|
1025
|
+
else if (userAgent.startsWith("Sogou Pic Spider/"))
|
|
1026
|
+
{
|
|
1027
|
+
ent.browser = BrowserType.SogouPic;
|
|
1028
|
+
i = userAgent.indexOf('(');
|
|
1029
|
+
if (i >= 0)
|
|
1030
|
+
{
|
|
1031
|
+
ent.browserVer = ent.userAgent.substring(17, i);
|
|
1032
|
+
}
|
|
1033
|
+
else
|
|
1034
|
+
{
|
|
1035
|
+
ent.browserVer = ent.userAgent.substring(17);
|
|
1036
|
+
}
|
|
1037
|
+
return ent;
|
|
1038
|
+
}
|
|
1039
|
+
else if (userAgent == "Nutch Master Test/Dolphin-0.1-Beta")
|
|
1040
|
+
{
|
|
1041
|
+
ent.browser = BrowserType.Nutch;
|
|
1042
|
+
ent.browserVer = "0.1";
|
|
1043
|
+
return ent;
|
|
1044
|
+
}
|
|
1045
|
+
else if (userAgent == "YisouSpider")
|
|
1046
|
+
{
|
|
1047
|
+
ent.browser = BrowserType.Yisou;
|
|
1048
|
+
return ent;
|
|
1049
|
+
}
|
|
1050
|
+
else if (userAgent.startsWith("HTTP Banner Detection"))
|
|
1051
|
+
{
|
|
1052
|
+
ent.browser = BrowserType.BannerDet;
|
|
1053
|
+
return ent;
|
|
1054
|
+
}
|
|
1055
|
+
else if (userAgent.startsWith("NetSystemsResearch "))
|
|
1056
|
+
{
|
|
1057
|
+
ent.browser = BrowserType.NetSysRes;
|
|
1058
|
+
return ent;
|
|
1059
|
+
}
|
|
1060
|
+
if (userAgent.startsWith("\"") && userAgent.endsWith("\""))
|
|
1061
|
+
{
|
|
1062
|
+
userAgent.substring(1, userAgent.length - 1);
|
|
1063
|
+
}
|
|
1064
|
+
userAgent = userAgent.trim();
|
|
1065
|
+
if (userAgent == "nlpproject.info research")
|
|
1066
|
+
{
|
|
1067
|
+
ent.browser = BrowserType.NLPProject;
|
|
1068
|
+
return ent;
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
let strs = [];
|
|
1072
|
+
let bst = false;
|
|
1073
|
+
let j;
|
|
1074
|
+
let c;
|
|
1075
|
+
j = 0;
|
|
1076
|
+
i = 0;
|
|
1077
|
+
while (i < userAgent.length)
|
|
1078
|
+
{
|
|
1079
|
+
c = userAgent.charAt(i);
|
|
1080
|
+
if (c == ' ' && !bst)
|
|
1081
|
+
{
|
|
1082
|
+
strs.push(userAgent.substring(j, i));
|
|
1083
|
+
j = i + 1;
|
|
1084
|
+
}
|
|
1085
|
+
else if (c == ')' && bst)
|
|
1086
|
+
{
|
|
1087
|
+
bst = false;
|
|
1088
|
+
}
|
|
1089
|
+
else if (c == '(')
|
|
1090
|
+
{
|
|
1091
|
+
bst = true;
|
|
1092
|
+
}
|
|
1093
|
+
i++;
|
|
1094
|
+
}
|
|
1095
|
+
if (j < userAgent.length)
|
|
1096
|
+
{
|
|
1097
|
+
strs.push(userAgent.substring(j));
|
|
1098
|
+
}
|
|
1099
|
+
i = 0;
|
|
1100
|
+
while (i < strs.length)
|
|
1101
|
+
{
|
|
1102
|
+
if (strs[i].charAt(0) == '(')
|
|
1103
|
+
{
|
|
1104
|
+
let charCnt = strs[i].length;
|
|
1105
|
+
if (strs[i].endsWith(')'))
|
|
1106
|
+
{
|
|
1107
|
+
strs[i] = strs[i].substring(0, strs[i].length - 1);
|
|
1108
|
+
}
|
|
1109
|
+
let strs2 = strs[i].substring(1).split(";");
|
|
1110
|
+
j = 0;
|
|
1111
|
+
let lastIsAndroid = false;
|
|
1112
|
+
while (j < strs2.length)
|
|
1113
|
+
{
|
|
1114
|
+
strs2[j] = strs2[j].trim();
|
|
1115
|
+
if (strs2[j].startsWith("MSIE "))
|
|
1116
|
+
{
|
|
1117
|
+
ent.browser = BrowserType.IE;
|
|
1118
|
+
ent.browserVer = strs2[j].substring(5);
|
|
1119
|
+
}
|
|
1120
|
+
else if (strs2[j].startsWith("Windows NT "))
|
|
1121
|
+
{
|
|
1122
|
+
ent.os = OSType.WindowsNT;
|
|
1123
|
+
ent.osVer = strs2[j].substring(11);
|
|
1124
|
+
}
|
|
1125
|
+
else if (strs2[j] == "WOW64")
|
|
1126
|
+
{
|
|
1127
|
+
if (ent.os == OSType.WindowsNT)
|
|
1128
|
+
{
|
|
1129
|
+
ent.os = OSType.WindowsNT64;
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
else if (strs2[j] == "Win64")
|
|
1133
|
+
{
|
|
1134
|
+
if (ent.os == OSType.WindowsNT)
|
|
1135
|
+
{
|
|
1136
|
+
ent.os = OSType.WindowsNT64;
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
else if (strs2[j] == "iPad")
|
|
1140
|
+
{
|
|
1141
|
+
ent.os = OSType.iPad;
|
|
1142
|
+
}
|
|
1143
|
+
else if (ent.os == OSType.Unknown && strs2[j] == "Linux i686")
|
|
1144
|
+
{
|
|
1145
|
+
ent.os = OSType.Linux_i686;
|
|
1146
|
+
}
|
|
1147
|
+
else if (ent.os == OSType.Unknown && strs2[j] == "Linux x86_64")
|
|
1148
|
+
{
|
|
1149
|
+
ent.os = OSType.Linux_X86_64;
|
|
1150
|
+
}
|
|
1151
|
+
else if (strs2[j] == "Android")
|
|
1152
|
+
{
|
|
1153
|
+
ent.os = OSType.Android;
|
|
1154
|
+
}
|
|
1155
|
+
else if (strs2[j] == "wv")
|
|
1156
|
+
{
|
|
1157
|
+
if (ent.os == OSType.Android)
|
|
1158
|
+
{
|
|
1159
|
+
ent.browser = BrowserType.AndroidWV;
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1162
|
+
else if (strs2[j].startsWith("Android "))
|
|
1163
|
+
{
|
|
1164
|
+
ent.os = OSType.Android;
|
|
1165
|
+
ent.osVer = strs2[j].substring(8);
|
|
1166
|
+
lastIsAndroid = true;
|
|
1167
|
+
}
|
|
1168
|
+
else if (strs2[j].startsWith("CrOS "))
|
|
1169
|
+
{
|
|
1170
|
+
ent.os = OSType.ChromeOS;
|
|
1171
|
+
let k = strs2[j].indexOf(' ', 5);
|
|
1172
|
+
ent.osVer = strs2[j].substring(k + 1);
|
|
1173
|
+
}
|
|
1174
|
+
else if (ent.os == OSType.iPad && strs2[j] == "U")
|
|
1175
|
+
{
|
|
1176
|
+
ent.os = OSType.Android;
|
|
1177
|
+
}
|
|
1178
|
+
else if (strs2[j] == "iPhone")
|
|
1179
|
+
{
|
|
1180
|
+
ent.os = OSType.iPhone;
|
|
1181
|
+
}
|
|
1182
|
+
else if (strs2[j] == "Macintosh")
|
|
1183
|
+
{
|
|
1184
|
+
ent.os = OSType.MacOS;
|
|
1185
|
+
}
|
|
1186
|
+
else if ((ent.os == OSType.iPad || ent.os == OSType.iPhone) && strs2[j].startsWith("CPU OS "))
|
|
1187
|
+
{
|
|
1188
|
+
let k = strs2[j].indexOf(' ', 7);
|
|
1189
|
+
if (k >= 0)
|
|
1190
|
+
{
|
|
1191
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1192
|
+
}
|
|
1193
|
+
strs2[j] = text.replaceAll(strs2[j], '_', '.');
|
|
1194
|
+
ent.osVer = strs2[j].substring(7);
|
|
1195
|
+
}
|
|
1196
|
+
else if (ent.os == OSType.iPhone && strs2[j].startsWith("CPU iPhone OS "))
|
|
1197
|
+
{
|
|
1198
|
+
let k = strs2[j].indexOf(' ', 14);
|
|
1199
|
+
if (k >= 0)
|
|
1200
|
+
{
|
|
1201
|
+
strs2[j].substring(0, k);
|
|
1202
|
+
}
|
|
1203
|
+
k = strs2[j].indexOf(" like Mac OS");
|
|
1204
|
+
if (k >= 0)
|
|
1205
|
+
{
|
|
1206
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1207
|
+
}
|
|
1208
|
+
strs2[j] = text.replaceAll(strs2[j], '_', '.');
|
|
1209
|
+
ent.osVer = strs2[j].substring(14);
|
|
1210
|
+
}
|
|
1211
|
+
else if (ent.os == OSType.MacOS && strs2[j].startsWith("Intel Mac OS X "))
|
|
1212
|
+
{
|
|
1213
|
+
let k = strs2[j].indexOf(' ', 15);
|
|
1214
|
+
if (k >= 0)
|
|
1215
|
+
{
|
|
1216
|
+
strs2[j].substring(0, k);
|
|
1217
|
+
}
|
|
1218
|
+
strs2[j] = text.replaceAll(strs2[j], '_', '.');
|
|
1219
|
+
ent.osVer = strs2[j].substring(15);
|
|
1220
|
+
}
|
|
1221
|
+
else if (strs2[j] == "Trident/7.0")
|
|
1222
|
+
{
|
|
1223
|
+
ent.browser = BrowserType.IE;
|
|
1224
|
+
ent.browserVer = "11.0";
|
|
1225
|
+
}
|
|
1226
|
+
else if (strs2[j] == "JuziBrowser") //JuziBrowser
|
|
1227
|
+
{
|
|
1228
|
+
}
|
|
1229
|
+
else if (strs2[j] == "SE 2.X MetaSr 1.0") //Sugou Browser
|
|
1230
|
+
{
|
|
1231
|
+
}
|
|
1232
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j] == "Indy Library")
|
|
1233
|
+
{
|
|
1234
|
+
ent.browser = BrowserType.Indy;
|
|
1235
|
+
}
|
|
1236
|
+
else if (strs2[j].startsWith("Googlebot/"))
|
|
1237
|
+
{
|
|
1238
|
+
if (ent.os == OSType.Android)
|
|
1239
|
+
{
|
|
1240
|
+
ent.browser = BrowserType.GoogleBots;
|
|
1241
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1242
|
+
}
|
|
1243
|
+
else if (ent.os == OSType.Unknown)
|
|
1244
|
+
{
|
|
1245
|
+
ent.browser = BrowserType.GoogleBotD;
|
|
1246
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("Baiduspider-render/"))
|
|
1250
|
+
{
|
|
1251
|
+
ent.browser = BrowserType.Baidu;
|
|
1252
|
+
ent.browserVer = strs2[j].substring(19);
|
|
1253
|
+
}
|
|
1254
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("SemrushBot/"))
|
|
1255
|
+
{
|
|
1256
|
+
ent.browser = BrowserType.Semrush;
|
|
1257
|
+
ent.browserVer = strs2[j].substring(11);
|
|
1258
|
+
}
|
|
1259
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("YandexBot/"))
|
|
1260
|
+
{
|
|
1261
|
+
ent.browser = BrowserType.Yandex;
|
|
1262
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1263
|
+
}
|
|
1264
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("BLEXBot/"))
|
|
1265
|
+
{
|
|
1266
|
+
ent.browser = BrowserType.BlexBot;
|
|
1267
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1268
|
+
}
|
|
1269
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("bingbot/"))
|
|
1270
|
+
{
|
|
1271
|
+
ent.browser = BrowserType.Bing;
|
|
1272
|
+
ent.browserVer = strs2[j].substring(8);
|
|
1273
|
+
}
|
|
1274
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.IE) && strs2[j].startsWith("MS Web Services Client Protocol "))
|
|
1275
|
+
{
|
|
1276
|
+
ent.browser = BrowserType.DotNet;
|
|
1277
|
+
ent.browserVer = strs2[j].substring(32);
|
|
1278
|
+
}
|
|
1279
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("WinHttp.WinHttpRequest."))
|
|
1280
|
+
{
|
|
1281
|
+
ent.browser = BrowserType.WinHTTP;
|
|
1282
|
+
ent.browserVer = strs2[j].substring(23);
|
|
1283
|
+
}
|
|
1284
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("NetcraftSurveyAgent/"))
|
|
1285
|
+
{
|
|
1286
|
+
ent.browser = BrowserType.NetcraftAG;
|
|
1287
|
+
ent.browserVer = strs2[j].substring(20);
|
|
1288
|
+
}
|
|
1289
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("AhrefsBot/"))
|
|
1290
|
+
{
|
|
1291
|
+
ent.browser = BrowserType.AhrefsBot;
|
|
1292
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1293
|
+
}
|
|
1294
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("MJ12bot/"))
|
|
1295
|
+
{
|
|
1296
|
+
ent.browser = BrowserType.Mj12Bot;
|
|
1297
|
+
if (strs2[j].charAt(8) == 'v')
|
|
1298
|
+
{
|
|
1299
|
+
ent.browserVer = strs2[j].substring(9);
|
|
1300
|
+
}
|
|
1301
|
+
else
|
|
1302
|
+
{
|
|
1303
|
+
ent.browserVer = strs2[j].substring(8);
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j] == "Netcraft Web Server Survey")
|
|
1307
|
+
{
|
|
1308
|
+
ent.browser = BrowserType.NetcraftWeb;
|
|
1309
|
+
}
|
|
1310
|
+
else if (strs2[j] == "Mobile")
|
|
1311
|
+
{
|
|
1312
|
+
}
|
|
1313
|
+
else if (strs2[j] == "rv:")
|
|
1314
|
+
{
|
|
1315
|
+
}
|
|
1316
|
+
else if (lastIsAndroid)
|
|
1317
|
+
{
|
|
1318
|
+
let k = strs2[j].indexOf(" Build/");
|
|
1319
|
+
if (k >= 0)
|
|
1320
|
+
{
|
|
1321
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
k = strs2[j].indexOf(" MIUI/");
|
|
1325
|
+
if (k >= 0)
|
|
1326
|
+
{
|
|
1327
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1328
|
+
}
|
|
1329
|
+
if (strs2[j].startsWith("SAMSUNG SM-"))
|
|
1330
|
+
{
|
|
1331
|
+
ent.devName = strs2[j].substring(8);
|
|
1332
|
+
}
|
|
1333
|
+
else if (strs2[j].startsWith("HUAWEI "))
|
|
1334
|
+
{
|
|
1335
|
+
ent.devName = strs2[j].substring(7);
|
|
1336
|
+
}
|
|
1337
|
+
else if (strs2[j] == "K")
|
|
1338
|
+
{
|
|
1339
|
+
}
|
|
1340
|
+
else
|
|
1341
|
+
{
|
|
1342
|
+
ent.devName = strs2[j];
|
|
1343
|
+
}
|
|
1344
|
+
lastIsAndroid = false;
|
|
1345
|
+
}
|
|
1346
|
+
j++;
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Firefox/"))
|
|
1350
|
+
{
|
|
1351
|
+
ent.browser = BrowserType.Firefox;
|
|
1352
|
+
ent.browserVer = strs[i].substring(8);
|
|
1353
|
+
}
|
|
1354
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("SamsungBrowser/"))
|
|
1355
|
+
{
|
|
1356
|
+
ent.browser = BrowserType.Samsung;
|
|
1357
|
+
ent.browserVer = strs[i].substring(15);
|
|
1358
|
+
}
|
|
1359
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("GSA/"))
|
|
1360
|
+
{
|
|
1361
|
+
ent.browser = BrowserType.GSA;
|
|
1362
|
+
ent.browserVer = strs[i].substring(4);
|
|
1363
|
+
}
|
|
1364
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("OPT/"))
|
|
1365
|
+
{
|
|
1366
|
+
ent.browser = BrowserType.Opera;
|
|
1367
|
+
ent.browserVer = strs[i].substring(4);
|
|
1368
|
+
}
|
|
1369
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("CriOS/"))
|
|
1370
|
+
{
|
|
1371
|
+
ent.browser = BrowserType.Chrome;
|
|
1372
|
+
ent.browserVer = strs[i].substring(6);
|
|
1373
|
+
}
|
|
1374
|
+
else if (strs[i].startsWith("Chrome/"))
|
|
1375
|
+
{
|
|
1376
|
+
if (ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari)
|
|
1377
|
+
{
|
|
1378
|
+
ent.browser = BrowserType.Chrome;
|
|
1379
|
+
ent.browserVer = strs[i].substring(7);
|
|
1380
|
+
}
|
|
1381
|
+
else if (ent.browser == BrowserType.AndroidWV)
|
|
1382
|
+
{
|
|
1383
|
+
ent.browserVer = strs[i].substring(7);
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edge/"))
|
|
1387
|
+
{
|
|
1388
|
+
ent.browser = BrowserType.Edge;
|
|
1389
|
+
ent.browserVer = strs[i].substring(5);
|
|
1390
|
+
}
|
|
1391
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edg/"))
|
|
1392
|
+
{
|
|
1393
|
+
ent.browser = BrowserType.Edge;
|
|
1394
|
+
ent.browserVer = strs[i].substring(4);
|
|
1395
|
+
}
|
|
1396
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("EdgiOS/"))
|
|
1397
|
+
{
|
|
1398
|
+
ent.browser = BrowserType.Edge;
|
|
1399
|
+
ent.browserVer = strs[i].substring(7);
|
|
1400
|
+
}
|
|
1401
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("HuaweiBrowser/"))
|
|
1402
|
+
{
|
|
1403
|
+
ent.browser = BrowserType.HuaweiBrowser;
|
|
1404
|
+
ent.browserVer = strs[i].substring(14);
|
|
1405
|
+
}
|
|
1406
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("XiaoMi/MiuiBrowser/"))
|
|
1407
|
+
{
|
|
1408
|
+
ent.browser = BrowserType.MiBrowser;
|
|
1409
|
+
ent.browserVer = strs[i].substring(19);
|
|
1410
|
+
}
|
|
1411
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Safari/"))
|
|
1412
|
+
{
|
|
1413
|
+
ent.browser = BrowserType.Safari;
|
|
1414
|
+
ent.browserVer = strs[i].substring(7);
|
|
1415
|
+
}
|
|
1416
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("UCBrowser/"))
|
|
1417
|
+
{
|
|
1418
|
+
ent.browser = BrowserType.UCBrowser;
|
|
1419
|
+
ent.browserVer = strs[i].substring(10);
|
|
1420
|
+
}
|
|
1421
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("baidu.sogo.uc.UCBrowser/"))
|
|
1422
|
+
{
|
|
1423
|
+
ent.browser = BrowserType.UCBrowser;
|
|
1424
|
+
ent.browserVer = strs[i].substring(24);
|
|
1425
|
+
}
|
|
1426
|
+
else if (strs[i].startsWith("UBrowser/"))
|
|
1427
|
+
{
|
|
1428
|
+
}
|
|
1429
|
+
else if (strs[i].startsWith("baiduboxapp/"))
|
|
1430
|
+
{
|
|
1431
|
+
}
|
|
1432
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Dalvik/"))
|
|
1433
|
+
{
|
|
1434
|
+
ent.browser = BrowserType.Dalvik;
|
|
1435
|
+
ent.browserVer = strs[i].substring(7);
|
|
1436
|
+
}
|
|
1437
|
+
else if (ent.os == OSType.Unknown && strs[i].startsWith("Darwin/"))
|
|
1438
|
+
{
|
|
1439
|
+
ent.os = OSType.Darwin;
|
|
1440
|
+
ent.osVer = strs[i].substring(7);
|
|
1441
|
+
}
|
|
1442
|
+
else if (ent.os == OSType.Unknown && strs[i].startsWith("SmartTV/"))
|
|
1443
|
+
{
|
|
1444
|
+
ent.os = OSType.Netcast;
|
|
1445
|
+
ent.osVer = strs[i].substring(8);
|
|
1446
|
+
}
|
|
1447
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("CFNetwork/"))
|
|
1448
|
+
{
|
|
1449
|
+
ent.browser = BrowserType.CFNetwork;
|
|
1450
|
+
ent.browserVer = strs[i].substring(10);
|
|
1451
|
+
}
|
|
1452
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Version/"))
|
|
1453
|
+
{
|
|
1454
|
+
ent.browser = BrowserType.Safari;
|
|
1455
|
+
ent.browserVer = strs[i].substring(8);
|
|
1456
|
+
}
|
|
1457
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("masscan/"))
|
|
1458
|
+
{
|
|
1459
|
+
ent.browser = BrowserType.Masscan;
|
|
1460
|
+
ent.browserVer = strs[i].substring(8);
|
|
1461
|
+
}
|
|
1462
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("zgrab/"))
|
|
1463
|
+
{
|
|
1464
|
+
ent.browser = BrowserType.Zgrab;
|
|
1465
|
+
ent.browserVer = strs[i].substring(6);
|
|
1466
|
+
}
|
|
1467
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("python-requests/"))
|
|
1468
|
+
{
|
|
1469
|
+
ent.browser = BrowserType.PyRequests;
|
|
1470
|
+
ent.browserVer = strs[i].substring(16);
|
|
1471
|
+
}
|
|
1472
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Python-urllib/"))
|
|
1473
|
+
{
|
|
1474
|
+
ent.browser = BrowserType.PyURLLib;
|
|
1475
|
+
ent.browserVer = strs[i].substring(14);
|
|
1476
|
+
}
|
|
1477
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Wget/"))
|
|
1478
|
+
{
|
|
1479
|
+
ent.browser = BrowserType.Wget;
|
|
1480
|
+
ent.browserVer = strs[i].substring(5);
|
|
1481
|
+
}
|
|
1482
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Scrapy/"))
|
|
1483
|
+
{
|
|
1484
|
+
ent.browser = BrowserType.Scrapy;
|
|
1485
|
+
ent.browserVer = strs[i].substring(7);
|
|
1486
|
+
}
|
|
1487
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Go-http-client/"))
|
|
1488
|
+
{
|
|
1489
|
+
ent.browser = BrowserType.GoHTTP;
|
|
1490
|
+
ent.browserVer = strs[i].substring(15);
|
|
1491
|
+
}
|
|
1492
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Apache-HttpClient/"))
|
|
1493
|
+
{
|
|
1494
|
+
ent.browser = BrowserType.ApacheHTTP;
|
|
1495
|
+
ent.browserVer = strs[i].substring(18);
|
|
1496
|
+
}
|
|
1497
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("WhatsApp/"))
|
|
1498
|
+
{
|
|
1499
|
+
ent.browser = BrowserType.Whatsapp;
|
|
1500
|
+
ent.browserVer = strs[i].substring(9);
|
|
1501
|
+
}
|
|
1502
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("curl/"))
|
|
1503
|
+
{
|
|
1504
|
+
ent.browser = BrowserType.Curl;
|
|
1505
|
+
ent.browserVer = strs[i].substring(5);
|
|
1506
|
+
}
|
|
1507
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("sswr/"))
|
|
1508
|
+
{
|
|
1509
|
+
ent.browser = BrowserType.SSWR;
|
|
1510
|
+
ent.browserVer = strs[i].substring(5);
|
|
1511
|
+
}
|
|
1512
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("facebookexternalhit/"))
|
|
1513
|
+
{
|
|
1514
|
+
ent.browser = BrowserType.Facebook;
|
|
1515
|
+
ent.browserVer = strs[i].substring(20);
|
|
1516
|
+
}
|
|
1517
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("NetSeen/"))
|
|
1518
|
+
{
|
|
1519
|
+
ent.browser = BrowserType.Netseen;
|
|
1520
|
+
ent.browserVer = strs[i].substring(8);
|
|
1521
|
+
}
|
|
1522
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("msnbot/"))
|
|
1523
|
+
{
|
|
1524
|
+
ent.browser = BrowserType.MSNBot;
|
|
1525
|
+
ent.browserVer = strs[i].substring(7);
|
|
1526
|
+
}
|
|
1527
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("libwww-perl/"))
|
|
1528
|
+
{
|
|
1529
|
+
ent.browser = BrowserType.LibwwwPerl;
|
|
1530
|
+
ent.browserVer = strs[i].substring(12);
|
|
1531
|
+
}
|
|
1532
|
+
else if (strs[i] == "LBBROWSER")
|
|
1533
|
+
{
|
|
1534
|
+
}
|
|
1535
|
+
i++;
|
|
1536
|
+
}
|
|
1537
|
+
return ent;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
|
|
895
1541
|
export class Dialog
|
|
896
1542
|
{
|
|
897
1543
|
/**
|