@abyss-project/main 33.1.0 → 33.1.1
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tracking_utils_1 = require("../tracking.utils");
|
|
4
|
+
const CHROME_WINDOWS = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
|
|
5
|
+
const CHROME_ANDROID = 'Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36';
|
|
6
|
+
const SAFARI_IPHONE = 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Mobile/15E148 Safari/604.1';
|
|
7
|
+
const androidWithModel = (model) => `Mozilla/5.0 (Linux; Android 13; ${model}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36`;
|
|
8
|
+
const ANDROID_MODELS = [
|
|
9
|
+
'CUBOT X50',
|
|
10
|
+
'CUBOT_KINGKONG_5_Pro',
|
|
11
|
+
'Cubot_P40',
|
|
12
|
+
'Cubot P80',
|
|
13
|
+
'CUBOT_Spider',
|
|
14
|
+
'TecBot',
|
|
15
|
+
'Bot X1',
|
|
16
|
+
'Spider',
|
|
17
|
+
'Crawler Pro',
|
|
18
|
+
'Spider-M9',
|
|
19
|
+
'T-Bot 2',
|
|
20
|
+
'Mobot_A1',
|
|
21
|
+
'kidsbot',
|
|
22
|
+
'+https://example.com',
|
|
23
|
+
'Java/5 Phone',
|
|
24
|
+
'CheckPad T10',
|
|
25
|
+
'Monitor 7',
|
|
26
|
+
'ScanTab S1',
|
|
27
|
+
];
|
|
28
|
+
const CHROME_TAIL = 'AppleWebKit/537.36 (KHTML, like Gecko)';
|
|
29
|
+
const ANDROID_FORMS = [
|
|
30
|
+
[
|
|
31
|
+
'Instagram suffix',
|
|
32
|
+
(m) => `Mozilla/5.0 (Linux; Android 13; ${m} Build/XYZ; wv) ${CHROME_TAIL} Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 Instagram 311.0.0.32.118 Android (33/13; 420dpi; 1080x2220; Acme; ${m}; ${m}; mt6765; fr_FR; 541635897)`,
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
'Telegram-Android suffix',
|
|
36
|
+
(m) => `Mozilla/5.0 (Linux; Android 13; ${m} Build/XYZ; wv) ${CHROME_TAIL} Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 Telegram-Android/10.5.0 (${m}; Android 13; SDK 33; HIGH)`,
|
|
37
|
+
],
|
|
38
|
+
[
|
|
39
|
+
'Facebook FBDV suffix',
|
|
40
|
+
(m) => `Mozilla/5.0 (Linux; Android 13; ${m} Build/XYZ; wv) ${CHROME_TAIL} Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 [FBAN/FB4A;FBAV/440.0.0.31.115;FBMF/Acme;FBDV/${m};FBSV/13;]`,
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
'arm_64 prefix (Yandex)',
|
|
44
|
+
(m) => `Mozilla/5.0 (Linux; arm_64; Android 12; ${m}) ${CHROME_TAIL} Chrome/120.0.0.0 YaBrowser/23.11.1 Mobile Safari/537.36`,
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
'HarmonyOS prefix (Huawei)',
|
|
48
|
+
(m) => `Mozilla/5.0 (Linux; Android 10; HarmonyOS; ${m}; HMSCore 6.6.0.312) ${CHROME_TAIL} Chrome/99.0 HuaweiBrowser/14.0 Mobile Safari/537.36`,
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
'locale fr',
|
|
52
|
+
(m) => `Mozilla/5.0 (Linux; U; Android 10; fr; ${m} Build/XYZ) ${CHROME_TAIL} Chrome/120.0.0.0 Mobile Safari/537.36`,
|
|
53
|
+
],
|
|
54
|
+
[
|
|
55
|
+
'locale es-419',
|
|
56
|
+
(m) => `Mozilla/5.0 (Linux; U; Android 10; es-419; ${m} Build/XYZ) ${CHROME_TAIL} Chrome/120.0.0.0 Mobile Safari/537.36`,
|
|
57
|
+
],
|
|
58
|
+
[
|
|
59
|
+
'no space after the semicolon',
|
|
60
|
+
(m) => `Mozilla/5.0 (Linux; Android 13;${m}) ${CHROME_TAIL} Chrome/120.0.0.0 Mobile Safari/537.36`,
|
|
61
|
+
],
|
|
62
|
+
];
|
|
63
|
+
const ANDROID_FORM_MODELS = [
|
|
64
|
+
'TecBot',
|
|
65
|
+
'Spider-M9',
|
|
66
|
+
'Crawler Pro',
|
|
67
|
+
'Java/5 Phone',
|
|
68
|
+
'CUBOT X50',
|
|
69
|
+
'Mobot_A1',
|
|
70
|
+
'+https://example.com',
|
|
71
|
+
'Monitor 7',
|
|
72
|
+
];
|
|
73
|
+
const ROBOTS = [
|
|
74
|
+
['WhatsApp iOS', 'WhatsApp/2.23.20.0 i'],
|
|
75
|
+
['WhatsApp Android', 'WhatsApp/2.2326.4 A'],
|
|
76
|
+
['WhatsApp older build', 'WhatsApp/2.21.12.21 N'],
|
|
77
|
+
['Signal (sends the WhatsApp user agent)', 'WhatsApp/2'],
|
|
78
|
+
['Telegram', 'TelegramBot (like TwitterBot)'],
|
|
79
|
+
['Slack link expanding', 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)'],
|
|
80
|
+
['Slack bot', 'Slackbot 1.0 (+https://api.slack.com/robots)'],
|
|
81
|
+
['Slack image proxy', 'Slack-ImgProxy'],
|
|
82
|
+
['Discord', 'Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)'],
|
|
83
|
+
['Facebook', 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)'],
|
|
84
|
+
['Facebook without URL', 'facebookexternalhit/1.1'],
|
|
85
|
+
['Facebook catalog', 'facebookcatalog/1.0'],
|
|
86
|
+
['Facebook Facebot', 'Facebot'],
|
|
87
|
+
['Twitter / X', 'Twitterbot/1.0'],
|
|
88
|
+
[
|
|
89
|
+
'LinkedIn',
|
|
90
|
+
'LinkedInBot/1.0 (compatible; Mozilla/5.0; Apache-HttpClient +http://www.linkedin.com)',
|
|
91
|
+
],
|
|
92
|
+
['iMessage (Apple fake user agent)', 'facebookexternalhit/1.1 Facebot Twitterbot/1.0'],
|
|
93
|
+
[
|
|
94
|
+
'iMessage (Safari-flavoured)',
|
|
95
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15 facebookexternalhit/1.1 Facebot Twitterbot/1.0',
|
|
96
|
+
],
|
|
97
|
+
[
|
|
98
|
+
'Teams / Skype preview',
|
|
99
|
+
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 SkypeUriPreview Preview/0.5 skype-url-preview@microsoft.com',
|
|
100
|
+
],
|
|
101
|
+
[
|
|
102
|
+
'Microsoft Preview',
|
|
103
|
+
'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; MicrosoftPreview/2.0; +https://aka.ms/MicrosoftPreview) Chrome/100.0.4896.127 Safari/537.36',
|
|
104
|
+
],
|
|
105
|
+
['Pinterest', 'Pinterest/0.2 (+http://www.pinterest.com/bot.html)'],
|
|
106
|
+
['Pinterest fetcher alone', 'Pinterest/0.2'],
|
|
107
|
+
['Pinterest bot', 'Pinterestbot/1.0 (+http://www.pinterest.com/bot.html)'],
|
|
108
|
+
['Googlebot desktop', 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'],
|
|
109
|
+
[
|
|
110
|
+
'Googlebot smartphone',
|
|
111
|
+
'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
|
|
112
|
+
],
|
|
113
|
+
['Googlebot without URL', 'Googlebot/2.1'],
|
|
114
|
+
['Google AdsBot', 'AdsBot-Google (+http://www.google.com/adsbot.html)'],
|
|
115
|
+
['Google Mediapartners', 'Mediapartners-Google'],
|
|
116
|
+
[
|
|
117
|
+
'Google Read Aloud',
|
|
118
|
+
'Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)',
|
|
119
|
+
],
|
|
120
|
+
['Google Read Aloud without URL', 'Mozilla/5.0 (Linux; Android 7.0) Google-Read-Aloud'],
|
|
121
|
+
[
|
|
122
|
+
'Google Favicon',
|
|
123
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 Google Favicon',
|
|
124
|
+
],
|
|
125
|
+
['Google InspectionTool', 'Mozilla/5.0 (compatible; Google-InspectionTool/1.0)'],
|
|
126
|
+
['Bing', 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)'],
|
|
127
|
+
[
|
|
128
|
+
'Bing preview',
|
|
129
|
+
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) BingPreview/1.0b',
|
|
130
|
+
],
|
|
131
|
+
['DuckDuckGo', 'DuckDuckBot/1.1; (+http://duckduckgo.com/duckduckbot.html)'],
|
|
132
|
+
[
|
|
133
|
+
'Applebot',
|
|
134
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)',
|
|
135
|
+
],
|
|
136
|
+
['Yandex', 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)'],
|
|
137
|
+
[
|
|
138
|
+
'Baidu spider',
|
|
139
|
+
'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)',
|
|
140
|
+
],
|
|
141
|
+
[
|
|
142
|
+
'Bytespider',
|
|
143
|
+
'Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)',
|
|
144
|
+
],
|
|
145
|
+
['Ahrefs', 'Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)'],
|
|
146
|
+
['MJ12', 'Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)'],
|
|
147
|
+
['GPTBot', 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.0'],
|
|
148
|
+
[
|
|
149
|
+
'Yahoo Slurp',
|
|
150
|
+
'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)',
|
|
151
|
+
],
|
|
152
|
+
['Generic crawler word', 'Acme Crawler 2.0'],
|
|
153
|
+
['Generic spider word', 'Mozilla/5.0 (compatible; sogou web spider/4.0)'],
|
|
154
|
+
['Generic bot word', 'Bot/1.0'],
|
|
155
|
+
['Robot declared by a URL only', 'SomeFetcher/3.1 (+https://example.com/about-our-fetcher)'],
|
|
156
|
+
['Pingdom', 'Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)'],
|
|
157
|
+
['UptimeRobot', 'Mozilla/5.0+(compatible; UptimeRobot/2.0; http://www.uptimerobot.com/)'],
|
|
158
|
+
[
|
|
159
|
+
'Lighthouse',
|
|
160
|
+
'Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 Chrome-Lighthouse',
|
|
161
|
+
],
|
|
162
|
+
[
|
|
163
|
+
'Headless Chrome',
|
|
164
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.0.0 Safari/537.36',
|
|
165
|
+
],
|
|
166
|
+
[
|
|
167
|
+
'PhantomJS',
|
|
168
|
+
'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1',
|
|
169
|
+
],
|
|
170
|
+
['curl', 'curl/8.4.0'],
|
|
171
|
+
['Wget', 'Wget/1.21.4'],
|
|
172
|
+
['python-requests', 'python-requests/2.31.0'],
|
|
173
|
+
['Python urllib', 'Python-urllib/3.11'],
|
|
174
|
+
['aiohttp', 'Python/3.11 aiohttp/3.9.1'],
|
|
175
|
+
['Go', 'Go-http-client/1.1'],
|
|
176
|
+
['aiohttp alone', 'aiohttp/3.9.1'],
|
|
177
|
+
['Apache HttpClient alone', 'Apache-HttpClient/4.5.13'],
|
|
178
|
+
['http.rb alone', 'http.rb/5.1.1'],
|
|
179
|
+
['Scrapy alone', 'Scrapy/2.11.0'],
|
|
180
|
+
['Pingdom alone', 'Pingdom'],
|
|
181
|
+
['PycURL', 'PycURL/7.43.0'],
|
|
182
|
+
['libcurl', 'libcurl/7.88.1'],
|
|
183
|
+
['Guzzle', 'GuzzleHttp/7'],
|
|
184
|
+
[
|
|
185
|
+
'Google PageRenderer',
|
|
186
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120 Safari/537.36 Google-PageRenderer Google (+https://developers.google.com/+/web/snippet/)',
|
|
187
|
+
],
|
|
188
|
+
['Feed fetcher alone', 'FeedFetcher-Google'],
|
|
189
|
+
['APIs-Google alone', 'APIs-Google'],
|
|
190
|
+
['Info URL alone', 'SomeFetcher/3.1 (+http://example.com/about)'],
|
|
191
|
+
['Suffix Spider', 'FooSpider/1.0'],
|
|
192
|
+
['Suffix spider', 'Foospider/1.0'],
|
|
193
|
+
['Suffix Crawler', 'FooCrawler/1.0'],
|
|
194
|
+
['Suffix crawler', 'Foocrawler/1.0'],
|
|
195
|
+
['Suffix Bot', 'FooBot/1.0'],
|
|
196
|
+
['Suffix bot', 'Foobot/1.0'],
|
|
197
|
+
[
|
|
198
|
+
'Bytespider (Android, compatible group)',
|
|
199
|
+
'Mozilla/5.0 (Linux; Android 5.0; Nexus 5) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/)',
|
|
200
|
+
],
|
|
201
|
+
[
|
|
202
|
+
'AdsBot-Google-Mobile',
|
|
203
|
+
'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html)',
|
|
204
|
+
],
|
|
205
|
+
[
|
|
206
|
+
'Storebot-Google',
|
|
207
|
+
'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012; Storebot-Google/1.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36',
|
|
208
|
+
],
|
|
209
|
+
['axios', 'axios/1.6.2'],
|
|
210
|
+
['node-fetch v2', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'],
|
|
211
|
+
['node-fetch v3', 'node-fetch'],
|
|
212
|
+
['undici', 'undici'],
|
|
213
|
+
['okhttp', 'okhttp/4.12.0'],
|
|
214
|
+
['Java', 'Java/17.0.2'],
|
|
215
|
+
['Apache HttpClient', 'Apache-HttpClient/4.5.13 (Java/11.0.20)'],
|
|
216
|
+
['Perl', 'libwww-perl/6.72'],
|
|
217
|
+
['Postman', 'PostmanRuntime/7.36.0'],
|
|
218
|
+
['python-httpx', 'python-httpx/0.25.2'],
|
|
219
|
+
['Python httplib2', 'Python-httplib2/0.22.0'],
|
|
220
|
+
['Python websockets', 'Python/3.11 websockets/12.0'],
|
|
221
|
+
['Java 11 HttpClient', 'Java-http-client/17.0.2'],
|
|
222
|
+
['Jakarta HttpClient', 'Jakarta Commons-HttpClient/3.1'],
|
|
223
|
+
['HTTPie', 'HTTPie/3.2.2'],
|
|
224
|
+
['got', 'got (https://github.com/sindresorhus/got)'],
|
|
225
|
+
['Mastodon', 'http.rb/5.1.1 (Mastodon/4.2.1; +https://mastodon.social/)'],
|
|
226
|
+
['k6', 'k6/0.47.0 (https://k6.io/)'],
|
|
227
|
+
['Grafana k6', 'Grafana k6/0.54.0'],
|
|
228
|
+
['Checkly', 'Checkly/1.0 (https://www.checklyhq.com)'],
|
|
229
|
+
[
|
|
230
|
+
'Checkly browser format',
|
|
231
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 (Checkly, https://www.checklyhq.com)',
|
|
232
|
+
],
|
|
233
|
+
['Viber link preview', 'ViberUrlDownloader'],
|
|
234
|
+
[
|
|
235
|
+
'Yahoo Link Preview',
|
|
236
|
+
'Mozilla/5.0 (compatible; Yahoo Link Preview; https://help.yahoo.com/kb/mail/yahoo-link-preview-SLN23615.html)',
|
|
237
|
+
],
|
|
238
|
+
[
|
|
239
|
+
'Flipboard behind a browser engine',
|
|
240
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0 (FlipboardProxy/1.2; +http://flipboard.com/browserproxy)',
|
|
241
|
+
],
|
|
242
|
+
[
|
|
243
|
+
'Android without a browser engine: the whole user agent is read',
|
|
244
|
+
'Dalvik/2.1.0 (Linux; U; Android 11; Cubot X50 Build/RP1A)',
|
|
245
|
+
],
|
|
246
|
+
[
|
|
247
|
+
'more than 20 characters between the platform and the engine: not an Android browser',
|
|
248
|
+
'Mozilla/5.0 (Linux; Android 11; Cubot X50) SomeMarkerLongerThanTwentyChars AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36',
|
|
249
|
+
],
|
|
250
|
+
[
|
|
251
|
+
'compatible group in capitals',
|
|
252
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 (COMPATIBLE; acmebot/1.0)',
|
|
253
|
+
],
|
|
254
|
+
[
|
|
255
|
+
'Microsoft Office Excel client',
|
|
256
|
+
'Microsoft Office Excel/16.44.1213 (Mac OS/11.1; Desktop; en-US; AppStore; Apple/MacBookAir10,1)',
|
|
257
|
+
],
|
|
258
|
+
[
|
|
259
|
+
'Bytespider after the Android browser string',
|
|
260
|
+
'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.5267.1259 Mobile Safari/537.36; Bytespider',
|
|
261
|
+
],
|
|
262
|
+
[
|
|
263
|
+
'Bytespider with its mailbox',
|
|
264
|
+
'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.5668.1446 Mobile Safari/537.36; Bytespider;bytespider@bytedance.com',
|
|
265
|
+
],
|
|
266
|
+
[
|
|
267
|
+
'DeepCrawl behind an Android browser',
|
|
268
|
+
'Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Mobile Safari/537.36 https://deepcrawl.com/bot',
|
|
269
|
+
],
|
|
270
|
+
[
|
|
271
|
+
'Sitebulb behind an Android browser',
|
|
272
|
+
'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36 +https://sitebulb.com',
|
|
273
|
+
],
|
|
274
|
+
[
|
|
275
|
+
'Microsoft Office Word client',
|
|
276
|
+
'Microsoft Office Word/16.43.1108 (Mac OS/10.15.6; Desktop; es-MX; NonAppStore; Apple/MacBookAir8,1)',
|
|
277
|
+
],
|
|
278
|
+
[
|
|
279
|
+
'Google Stackdriver uptime check',
|
|
280
|
+
'GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)',
|
|
281
|
+
],
|
|
282
|
+
['masscan', 'masscan/1.3 (https://github.com/robertdavidgraham/masscan)'],
|
|
283
|
+
['Nmap', 'Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)'],
|
|
284
|
+
['Yahoo Mail proxy', 'YahooMailProxy; https://help.yahoo.com/kb/yahoo-mail-proxy-SLN28749.html'],
|
|
285
|
+
['crawler4j', 'crawler4j (https://crawler4j.github.io/crawler4j/)'],
|
|
286
|
+
['Scrapy', 'Scrapy/2.11.0 (+https://scrapy.org)'],
|
|
287
|
+
['Site24x7', 'Site24x7'],
|
|
288
|
+
['New Relic Pinger', 'NewRelicPinger/1.0 (123456)'],
|
|
289
|
+
['Bluesky', 'Mozilla/5.0 (compatible; Bluesky Cardyb/1.1; +mailto:support@bsky.app)'],
|
|
290
|
+
[
|
|
291
|
+
'Gmail image proxy',
|
|
292
|
+
'Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)',
|
|
293
|
+
],
|
|
294
|
+
['Office (ms-office)', 'Mozilla/4.0 (compatible; ms-office)'],
|
|
295
|
+
['Office (MSOffice)', 'MSOffice 16'],
|
|
296
|
+
['Outlook', 'Microsoft Office/16.0 (Windows NT 10.0; Microsoft Outlook 16.0.17126; Pro)'],
|
|
297
|
+
['Reddit', 'redditbot/1.0 (+http://www.reddit.com/feedback)'],
|
|
298
|
+
['Google Chat', 'Google-HangoutsBot'],
|
|
299
|
+
['Google site verification', 'Mozilla/5.0 (compatible; Google-Site-Verification/1.0)'],
|
|
300
|
+
['GoogleOther', 'GoogleOther'],
|
|
301
|
+
[
|
|
302
|
+
'Google Web Preview',
|
|
303
|
+
'Mozilla/5.0 (en-us) AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview) Chrome/27.0.1453 Safari/537.36',
|
|
304
|
+
],
|
|
305
|
+
['Google feed fetcher', 'FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)'],
|
|
306
|
+
['APIs-Google', 'APIs-Google (+https://developers.google.com/webmasters/APIs-Google.html)'],
|
|
307
|
+
];
|
|
308
|
+
const HUMANS = [
|
|
309
|
+
...ANDROID_MODELS.map((model) => [
|
|
310
|
+
`Android model "${model}"`,
|
|
311
|
+
androidWithModel(model),
|
|
312
|
+
]),
|
|
313
|
+
...ANDROID_FORMS.flatMap(([form, build]) => ANDROID_FORM_MODELS.map((model) => [
|
|
314
|
+
`Android model "${model}", ${form}`,
|
|
315
|
+
build(model),
|
|
316
|
+
])),
|
|
317
|
+
[
|
|
318
|
+
'Android model with parentheses',
|
|
319
|
+
'Mozilla/5.0 (Linux; Android 13; TecBot (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36',
|
|
320
|
+
],
|
|
321
|
+
[
|
|
322
|
+
'Telegram-Android with a Cubot model',
|
|
323
|
+
'Mozilla/5.0 (Linux; Android 13; P80 Build/XYZ; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120 Mobile Safari/537.36 Telegram-Android/10.5.0 (Cubot P80; Android 13; SDK 33; HIGH)',
|
|
324
|
+
],
|
|
325
|
+
[
|
|
326
|
+
'Android with locale and Build suffix',
|
|
327
|
+
'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Spider Tab Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
|
|
328
|
+
],
|
|
329
|
+
['Dalvik app client', 'Dalvik/2.1.0 (Linux; U; Android 13; Pixel 7 Build/TQ3A.230901.001)'],
|
|
330
|
+
[
|
|
331
|
+
'Web app appending a plain URL to a real browser user agent',
|
|
332
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 MyApp/2.0 (+https://myapp.com)',
|
|
333
|
+
],
|
|
334
|
+
[
|
|
335
|
+
'WhatsApp in-app version at the end',
|
|
336
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 WhatsApp/2.23.20.0',
|
|
337
|
+
],
|
|
338
|
+
[
|
|
339
|
+
'Pinterest in-app version at the end',
|
|
340
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7 Build/TQ3A.230901.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 Pinterest/11.40',
|
|
341
|
+
],
|
|
342
|
+
[
|
|
343
|
+
'Brave',
|
|
344
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
345
|
+
],
|
|
346
|
+
[
|
|
347
|
+
'Vivaldi',
|
|
348
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Vivaldi/6.5.3206.48',
|
|
349
|
+
],
|
|
350
|
+
[
|
|
351
|
+
'UC Browser',
|
|
352
|
+
'Mozilla/5.0 (Linux; U; Android 9; en-US; SM-A305F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.4.0.1306 Mobile Safari/537.36',
|
|
353
|
+
],
|
|
354
|
+
[
|
|
355
|
+
'Huawei Browser',
|
|
356
|
+
'Mozilla/5.0 (Linux; Android 10; HUAWEI VOG-L29; HMSCore 6.1.0.313) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.93 HuaweiBrowser/11.1.0.300 Mobile Safari/537.36',
|
|
357
|
+
],
|
|
358
|
+
[
|
|
359
|
+
'Yandex Browser',
|
|
360
|
+
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 YaBrowser/23.7.1.1140 Yowser/2.5 Safari/537.36',
|
|
361
|
+
],
|
|
362
|
+
[
|
|
363
|
+
'Firefox iOS (FxiOS)',
|
|
364
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/120.0 Mobile/15E148 Safari/605.1.15',
|
|
365
|
+
],
|
|
366
|
+
[
|
|
367
|
+
'TikTok in-app',
|
|
368
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7 Build/TQ3A.230901.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 BytedanceWebview/d8a21c6 musical_ly_2023305040 JsSdk/2.0 NetType/WIFI Channel/googleplay AppName/musical_ly app_version/30.5.4',
|
|
369
|
+
],
|
|
370
|
+
[
|
|
371
|
+
'Snapchat in-app',
|
|
372
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Snapchat/12.60.0.38 (like Safari/8617.1.17.10.9, panda)',
|
|
373
|
+
],
|
|
374
|
+
[
|
|
375
|
+
'Lower-case Android user agent',
|
|
376
|
+
'mozilla/5.0 (linux; android 6.0; cubot echo) applewebkit/537.36 (khtml, like gecko) chrome/70.0.3538.80 mobile safari/537.36',
|
|
377
|
+
],
|
|
378
|
+
[
|
|
379
|
+
'Android user agent without spaces',
|
|
380
|
+
'Mozilla/5.0(Linux; Android 7.0; Cubot A10 Build/NRD90M)AppleWebKit/537.36(KHTML, like Gecko)Chrome/64.0.3282.137MobileSafari/537.36',
|
|
381
|
+
],
|
|
382
|
+
[
|
|
383
|
+
'Android user agent with a UC marker before AppleWebKit',
|
|
384
|
+
'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; Cubot A10 Build/MocorDroid2.3.5) UC AppleWebKit/530+ (KHTML, like Gecko) Mobile Safari/530',
|
|
385
|
+
],
|
|
386
|
+
[
|
|
387
|
+
'Android user agent behind a browser prefix (TV Bro)',
|
|
388
|
+
'TV Bro/1.0 Mozilla/5.0 (Linux; Android 9; Cubot TV Build/PTO6.200304.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.93 Safari/537.36',
|
|
389
|
+
],
|
|
390
|
+
[
|
|
391
|
+
'Android user agent behind a browser prefix (MQQBrowser)',
|
|
392
|
+
'MQQBrowser/5.2/Mozilla/5.0 (Linux; Android 4.4.2; Cubot A10 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36',
|
|
393
|
+
],
|
|
394
|
+
['Chrome Windows', CHROME_WINDOWS],
|
|
395
|
+
[
|
|
396
|
+
'Chrome macOS',
|
|
397
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
398
|
+
],
|
|
399
|
+
['Chrome Android', CHROME_ANDROID],
|
|
400
|
+
[
|
|
401
|
+
'Chrome iOS',
|
|
402
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/120.0.6099.50 Mobile/15E148 Safari/604.1',
|
|
403
|
+
],
|
|
404
|
+
[
|
|
405
|
+
'Firefox Windows',
|
|
406
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0',
|
|
407
|
+
],
|
|
408
|
+
['Firefox Android', 'Mozilla/5.0 (Android 13; Mobile; rv:121.0) Gecko/121.0 Firefox/121.0'],
|
|
409
|
+
[
|
|
410
|
+
'Safari macOS',
|
|
411
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15',
|
|
412
|
+
],
|
|
413
|
+
['Safari iPhone', SAFARI_IPHONE],
|
|
414
|
+
[
|
|
415
|
+
'Edge Windows',
|
|
416
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0',
|
|
417
|
+
],
|
|
418
|
+
[
|
|
419
|
+
'Edge Android',
|
|
420
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 EdgA/120.0.0.0',
|
|
421
|
+
],
|
|
422
|
+
[
|
|
423
|
+
'Samsung Internet',
|
|
424
|
+
'Mozilla/5.0 (Linux; Android 13; SAMSUNG SM-S918B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/23.0 Chrome/115.0.0.0 Mobile Safari/537.36',
|
|
425
|
+
],
|
|
426
|
+
[
|
|
427
|
+
'Opera',
|
|
428
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/106.0.0.0',
|
|
429
|
+
],
|
|
430
|
+
[
|
|
431
|
+
'Opera Mini',
|
|
432
|
+
'Opera/9.80 (Android; Opera Mini/36.2.2254/119.132; U; id) Presto/2.12.423 Version/12.16',
|
|
433
|
+
],
|
|
434
|
+
[
|
|
435
|
+
'Xiaomi MIUI Browser',
|
|
436
|
+
'Mozilla/5.0 (Linux; U; Android 13; en-us; Redmi Note 11 Build/TKQ1.221114.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.9.0-g',
|
|
437
|
+
],
|
|
438
|
+
[
|
|
439
|
+
'DuckDuckGo browser iOS',
|
|
440
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Mobile/15E148 DuckDuckGo/7 Safari/605.1.15',
|
|
441
|
+
],
|
|
442
|
+
[
|
|
443
|
+
'Samsung Smart TV',
|
|
444
|
+
'Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.2 Chrome/63.0.3239.84 TV Safari/537.36',
|
|
445
|
+
],
|
|
446
|
+
[
|
|
447
|
+
'Android WebView',
|
|
448
|
+
'Mozilla/5.0 (Linux; Android 10; SM-G960F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36',
|
|
449
|
+
],
|
|
450
|
+
[
|
|
451
|
+
'Instagram Android',
|
|
452
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7 Build/TQ3A.230901.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 Instagram 311.0.0.32.118 Android (33/13; 420dpi; 1080x2220; Google/google; Pixel 7; panther; panther; en_US; 541635897)',
|
|
453
|
+
],
|
|
454
|
+
[
|
|
455
|
+
'Instagram iOS',
|
|
456
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/21B74 Instagram 311.0.0.31.113 (iPhone14,5; iOS 17_1; en_US; en; scale=3.00; 1170x2532; 541635897)',
|
|
457
|
+
],
|
|
458
|
+
[
|
|
459
|
+
'Facebook Android (FB_IAB)',
|
|
460
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7 Build/TQ3A.230901.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/119.0.6045.193 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/440.0.0.31.115;]',
|
|
461
|
+
],
|
|
462
|
+
[
|
|
463
|
+
'Facebook iOS (FBAN)',
|
|
464
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/21B91 [FBAN/FBIOS;FBAV/441.0.0.37.117;FBBV/543210987;FBDV/iPhone14,5;FBMD/iPhone;FBSN/iOS;FBSV/17.1.1;FBSS/3;FBID/phone;FBLC/en_US;FBOP/5]',
|
|
465
|
+
],
|
|
466
|
+
[
|
|
467
|
+
'Messenger Android',
|
|
468
|
+
'Mozilla/5.0 (Linux; Android 13; Pixel 7 Build/TQ3A.230901.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/119.0.6045.193 Mobile Safari/537.36 [FB_IAB/MESSENGER;FBAV/438.0.0.31.115;]',
|
|
469
|
+
],
|
|
470
|
+
[
|
|
471
|
+
'LinkedIn app',
|
|
472
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LinkedInApp/9.30.1234',
|
|
473
|
+
],
|
|
474
|
+
[
|
|
475
|
+
'Pinterest app iOS',
|
|
476
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Safari/604.1 [Pinterest/iOS]',
|
|
477
|
+
],
|
|
478
|
+
[
|
|
479
|
+
'Telegram Android in-app',
|
|
480
|
+
'Mozilla/5.0 (Linux; Android 12; Pixel 6 Build/SD1A.210817.036; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 Telegram-Android/10.5.0 (Google Pixel 6; Android 12; SDK 31; HIGH)',
|
|
481
|
+
],
|
|
482
|
+
[
|
|
483
|
+
'WeChat',
|
|
484
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.44(0x18002c2e) NetType/WIFI Language/en',
|
|
485
|
+
],
|
|
486
|
+
[
|
|
487
|
+
'Google app',
|
|
488
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/300.0.598994205 Mobile/15E148 Safari/604.1',
|
|
489
|
+
],
|
|
490
|
+
[
|
|
491
|
+
'Gecko/ engine with an app info URL',
|
|
492
|
+
'Mozilla/5.0 (Windows NT 10.0; rv:121.0) Gecko/20100101 Firefox/121.0 MyApp/1.0 (+https://myapp.com)',
|
|
493
|
+
],
|
|
494
|
+
[
|
|
495
|
+
'Trident/ engine with an app info URL',
|
|
496
|
+
'Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko MyApp/1.0 (+https://myapp.com)',
|
|
497
|
+
],
|
|
498
|
+
[
|
|
499
|
+
'Presto/ engine with an app info URL',
|
|
500
|
+
'Opera/9.80 (Windows NT 6.1) Presto/2.12.423 Version/12.16 MyApp/1.0 (+https://myapp.com)',
|
|
501
|
+
],
|
|
502
|
+
['unknown app', 'SomeUnknownApp/1.0'],
|
|
503
|
+
['unknown token', 'MyCompanyBrowser 4.2 (Linux)'],
|
|
504
|
+
['absent (null)', null],
|
|
505
|
+
['absent (undefined)', undefined],
|
|
506
|
+
['absent (empty string)', ''],
|
|
507
|
+
];
|
|
508
|
+
describe('detectBot', () => {
|
|
509
|
+
describe('robots', () => {
|
|
510
|
+
it.each(ROBOTS)('flags %s', (_label, userAgent) => {
|
|
511
|
+
expect((0, tracking_utils_1.detectBot)(userAgent)).toBe(true);
|
|
512
|
+
});
|
|
513
|
+
});
|
|
514
|
+
describe('humans', () => {
|
|
515
|
+
it.each(HUMANS)('does not flag %s', (_label, userAgent) => {
|
|
516
|
+
expect((0, tracking_utils_1.detectBot)(userAgent)).toBe(false);
|
|
517
|
+
});
|
|
518
|
+
});
|
|
519
|
+
});
|
|
520
|
+
//# sourceMappingURL=tracking.utils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.utils.spec.js","sourceRoot":"","sources":["../../../src/utils/tests/tracking.utils.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,26 +13,34 @@ const extractDomain = (url) => {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
exports.extractDomain = extractDomain;
|
|
16
|
+
const ANDROID_PLATFORM_PATTERN = /\(Linux;(?:[^()]|\([^()]*\))*\)(?=[^()]{0,20}AppleWebKit)/i;
|
|
17
|
+
const COMPATIBLE_GROUP_PATTERN = /\(compatible;[^()]*\)/gi;
|
|
18
|
+
const ROBOT_WORD_PATTERN = /(?:^|[^a-z0-9])(?:bot|crawler|spider)(?![a-z0-9])/i;
|
|
19
|
+
const ROBOT_SUFFIX_PATTERN = /(?:[A-Za-z0-9](?:Bot|Crawler|Spider)|[a-z0-9](?:bot|crawler|spider))(?![A-Za-z0-9])/;
|
|
20
|
+
const ROBOT_INFO_URL_PATTERN = /\+https?:\/\//;
|
|
21
|
+
const BROWSER_ENGINE_PATTERN = /AppleWebKit|Gecko\/|Trident\/|Presto\//;
|
|
22
|
+
const LEADING_FETCHER_PATTERN = /^(?:WhatsApp\/|Pinterest\/\d|Java\/\d|Python\/\d|got \(|(?:Grafana )?k6\/|masscan\/)/i;
|
|
23
|
+
const LINK_PREVIEW_PATTERN = /\b(?:facebookexternalhit|facebookcatalog|Slack-ImgProxy|SkypeUriPreview|MicrosoftPreview|ms-office|MSOffice|Microsoft Office(?: [A-Za-z]+)?\/|BingPreview|Bluesky Cardyb|YahooMailProxy|Yahoo Link Preview|GoogleImageProxy|ViberUrlDownloader|FlipboardProxy|Slurp)/i;
|
|
24
|
+
const GOOGLE_FETCHER_PATTERN = /\b(?:Google-Read-Aloud|Google-InspectionTool|Google-Site-Verification|Google-PageRenderer|GoogleOther|Google Favicon|Google Web Preview|FeedFetcher-Google|Mediapartners-Google|APIs-Google|Storebot-Google|GoogleStackdriverMonitoring|Chrome-Lighthouse)/i;
|
|
25
|
+
const AUTOMATION_PATTERN = /\b(?:HeadlessChrome|PhantomJS|Scrapy|Bytespider|crawler4j|deepcrawl\.com\/bot|sitebulb\.com|Nmap Scripting Engine|Checkly|Pingdom|Site24x7|NewRelicPinger)/i;
|
|
26
|
+
const HTTP_CLIENT_PATTERN = /\b(?:curl|libcurl|PycURL|wget|python-requests|python-urllib|python-httpx|python-httplib2|aiohttp|Go-http-client|Java-http-client|http\.rb|axios|node-fetch|undici|okhttp|Apache-HttpClient|Jakarta Commons-HttpClient|GuzzleHttp|libwww-perl|PostmanRuntime|HTTPie)(?![a-z])/i;
|
|
27
|
+
const hasGenericRobotToken = (scope, countInfoUrl) => ROBOT_WORD_PATTERN.test(scope) ||
|
|
28
|
+
ROBOT_SUFFIX_PATTERN.test(scope) ||
|
|
29
|
+
(countInfoUrl && ROBOT_INFO_URL_PATTERN.test(scope));
|
|
16
30
|
const detectBot = (userAgent) => {
|
|
17
31
|
if (!userAgent)
|
|
18
32
|
return false;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/monitor/i,
|
|
31
|
-
/headless/i,
|
|
32
|
-
/phantom/i,
|
|
33
|
-
/selenium/i,
|
|
34
|
-
];
|
|
35
|
-
return botPatterns.some((pattern) => pattern.test(userAgent));
|
|
33
|
+
const platform = ANDROID_PLATFORM_PATTERN.exec(userAgent);
|
|
34
|
+
const isAndroidBrowser = platform !== null && /Android/i.test(platform[0]);
|
|
35
|
+
const genericRobot = isAndroidBrowser
|
|
36
|
+
? hasGenericRobotToken((userAgent.match(COMPATIBLE_GROUP_PATTERN) ?? []).join(' '), true)
|
|
37
|
+
: hasGenericRobotToken(userAgent, !BROWSER_ENGINE_PATTERN.test(userAgent));
|
|
38
|
+
return (genericRobot ||
|
|
39
|
+
LEADING_FETCHER_PATTERN.test(userAgent) ||
|
|
40
|
+
LINK_PREVIEW_PATTERN.test(userAgent) ||
|
|
41
|
+
GOOGLE_FETCHER_PATTERN.test(userAgent) ||
|
|
42
|
+
AUTOMATION_PATTERN.test(userAgent) ||
|
|
43
|
+
HTTP_CLIENT_PATTERN.test(userAgent));
|
|
36
44
|
};
|
|
37
45
|
exports.detectBot = detectBot;
|
|
38
46
|
const extractUTMParams = (searchParams) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking.utils.js","sourceRoot":"","sources":["../../src/utils/tracking.utils.ts"],"names":[],"mappings":";;;AAKO,MAAM,aAAa,GAAG,CAAC,GAA8B,EAAiB,EAAE;IAC7E,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB;
|
|
1
|
+
{"version":3,"file":"tracking.utils.js","sourceRoot":"","sources":["../../src/utils/tracking.utils.ts"],"names":[],"mappings":"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"}
|