@adwait12345/telemetry-core 0.1.0 → 0.1.2

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/dist/index.js CHANGED
@@ -20,10 +20,22 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ ACCESSIBILITY_BOTS: () => ACCESSIBILITY_BOTS,
24
+ ADVERTISING_BOTS: () => ADVERTISING_BOTS,
25
+ AI_ASSISTANT_BOTS: () => AI_ASSISTANT_BOTS,
23
26
  AI_BOTS: () => AI_BOTS,
24
27
  ALL_BOTS: () => ALL_BOTS,
28
+ ANALYTICS_BOTS: () => ANALYTICS_BOTS,
29
+ ECOMMERCE_BOTS: () => ECOMMERCE_BOTS,
30
+ FEED_BOTS: () => FEED_BOTS,
25
31
  GENERIC_BOTS: () => GENERIC_BOTS,
32
+ MONITOR_BOTS: () => MONITOR_BOTS,
33
+ PREVIEW_BOTS: () => PREVIEW_BOTS,
26
34
  SEARCH_BOTS: () => SEARCH_BOTS,
35
+ SEO_BOTS: () => SEO_BOTS,
36
+ SOCIAL_BOTS: () => SOCIAL_BOTS,
37
+ VERIFICATION_BOTS: () => VERIFICATION_BOTS,
38
+ WEBHOOK_BOTS: () => WEBHOOK_BOTS,
27
39
  detectBot: () => detectBot,
28
40
  extractAutomationHeaders: () => extractAutomationHeaders,
29
41
  sendToTelemetry: () => sendToTelemetry
@@ -37,27 +49,18 @@ var AI_BOTS = [
37
49
  category: "ai-crawler",
38
50
  pattern: /GPTBot/i,
39
51
  verifiable: true
40
- // https://openai.com/gptbot
41
52
  },
42
53
  {
43
54
  name: "ClaudeBot",
44
55
  category: "ai-crawler",
45
56
  pattern: /ClaudeBot|anthropic-ai/i,
46
57
  verifiable: true
47
- // Anthropic publishes IP ranges
48
58
  },
49
59
  {
50
60
  name: "Google-Extended",
51
61
  category: "ai-crawler",
52
62
  pattern: /Google-Extended/i,
53
63
  verifiable: true
54
- // Gemini/Bard training crawler
55
- },
56
- {
57
- name: "PerplexityBot",
58
- category: "ai-crawler",
59
- pattern: /PerplexityBot/i,
60
- verifiable: false
61
64
  },
62
65
  {
63
66
  name: "Amazonbot",
@@ -72,29 +75,27 @@ var AI_BOTS = [
72
75
  verifiable: false
73
76
  },
74
77
  {
75
- name: "Applebot",
78
+ name: "Meta-WebIndexer",
76
79
  category: "ai-crawler",
77
- pattern: /Applebot/i,
78
- verifiable: true
80
+ pattern: /meta-webindexer/i,
81
+ verifiable: false
79
82
  },
80
83
  {
81
- name: "YouBot",
84
+ name: "Applebot",
82
85
  category: "ai-crawler",
83
- pattern: /YouBot/i,
84
- verifiable: false
86
+ pattern: /Applebot/i,
87
+ verifiable: true
85
88
  },
86
89
  {
87
90
  name: "Bytespider",
88
91
  category: "ai-crawler",
89
92
  pattern: /Bytespider/i,
90
- // TikTok / ByteDance — used for AI training
91
93
  verifiable: false
92
94
  },
93
95
  {
94
96
  name: "CCBot",
95
97
  category: "ai-crawler",
96
98
  pattern: /CCBot/i,
97
- // Common Crawl — dataset used by many LLMs
98
99
  verifiable: false
99
100
  },
100
101
  {
@@ -103,12 +104,6 @@ var AI_BOTS = [
103
104
  pattern: /cohere-ai/i,
104
105
  verifiable: false
105
106
  },
106
- {
107
- name: "DuckAssistBot",
108
- category: "ai-crawler",
109
- pattern: /DuckAssistBot/i,
110
- verifiable: false
111
- },
112
107
  {
113
108
  name: "Diffbot",
114
109
  category: "ai-crawler",
@@ -132,6 +127,128 @@ var AI_BOTS = [
132
127
  category: "ai-crawler",
133
128
  pattern: /Timpibot/i,
134
129
  verifiable: false
130
+ },
131
+ {
132
+ name: "YouBot",
133
+ category: "ai-crawler",
134
+ pattern: /YouBot/i,
135
+ verifiable: false
136
+ },
137
+ {
138
+ name: "Browserbase",
139
+ category: "ai-crawler",
140
+ pattern: /browserbase/i,
141
+ verifiable: false
142
+ },
143
+ {
144
+ name: "Rovo",
145
+ category: "ai-crawler",
146
+ pattern: /\bRovo\b/i,
147
+ verifiable: false
148
+ },
149
+ {
150
+ name: "Shapbot",
151
+ category: "ai-crawler",
152
+ pattern: /Shapbot/i,
153
+ verifiable: false
154
+ },
155
+ {
156
+ name: "Kernel",
157
+ category: "ai-crawler",
158
+ pattern: /\bKernel\b.*crawler|kernel-crawler/i,
159
+ verifiable: false
160
+ },
161
+ {
162
+ name: "v0bot",
163
+ category: "ai-crawler",
164
+ pattern: /v0bot/i,
165
+ verifiable: false
166
+ }
167
+ ];
168
+ var AI_ASSISTANT_BOTS = [
169
+ {
170
+ name: "ChatGPT-User",
171
+ category: "ai-assistant",
172
+ pattern: /ChatGPT-User/i,
173
+ verifiable: true
174
+ },
175
+ {
176
+ name: "ChatGPT-Operator",
177
+ category: "ai-assistant",
178
+ pattern: /ChatGPT-Operator/i,
179
+ verifiable: true
180
+ },
181
+ {
182
+ name: "GPT-Actions",
183
+ category: "ai-assistant",
184
+ pattern: /gpt-actions/i,
185
+ verifiable: true
186
+ },
187
+ {
188
+ name: "OAI-SearchBot",
189
+ category: "ai-assistant",
190
+ pattern: /OAI-SearchBot/i,
191
+ verifiable: true
192
+ },
193
+ {
194
+ name: "Claude-User",
195
+ category: "ai-assistant",
196
+ pattern: /Claude-User/i,
197
+ verifiable: true
198
+ },
199
+ {
200
+ name: "Claude-SearchBot",
201
+ category: "ai-assistant",
202
+ pattern: /Claude-SearchBot/i,
203
+ verifiable: true
204
+ },
205
+ {
206
+ name: "PerplexityBot",
207
+ category: "ai-assistant",
208
+ pattern: /PerplexityBot/i,
209
+ verifiable: false
210
+ },
211
+ {
212
+ name: "Perplexity-User",
213
+ category: "ai-assistant",
214
+ pattern: /Perplexity-User/i,
215
+ verifiable: false
216
+ },
217
+ {
218
+ name: "DuckAssistBot",
219
+ category: "ai-assistant",
220
+ pattern: /DuckAssistBot/i,
221
+ verifiable: false
222
+ },
223
+ {
224
+ name: "Amazon-Kendra",
225
+ category: "ai-assistant",
226
+ pattern: /Amazon-Kendra/i,
227
+ verifiable: false
228
+ },
229
+ {
230
+ name: "Amazon-Q",
231
+ category: "ai-assistant",
232
+ pattern: /Amazon-Q/i,
233
+ verifiable: false
234
+ },
235
+ {
236
+ name: "Gemini-Deep-Research",
237
+ category: "ai-assistant",
238
+ pattern: /Gemini.*Deep.*Research|GeminiDeepResearch/i,
239
+ verifiable: true
240
+ },
241
+ {
242
+ name: "Google-CloudVertexBot",
243
+ category: "ai-assistant",
244
+ pattern: /Google-CloudVertexBot/i,
245
+ verifiable: true
246
+ },
247
+ {
248
+ name: "Google-Ads-Creatives",
249
+ category: "ai-assistant",
250
+ pattern: /Google-Ads-Creatives/i,
251
+ verifiable: true
135
252
  }
136
253
  ];
137
254
  var SEARCH_BOTS = [
@@ -140,20 +257,30 @@ var SEARCH_BOTS = [
140
257
  category: "search",
141
258
  pattern: /Googlebot/i,
142
259
  verifiable: true
143
- // Reverse DNS: *.googlebot.com / *.google.com
260
+ },
261
+ {
262
+ name: "GoogleOther",
263
+ category: "search",
264
+ pattern: /GoogleOther/i,
265
+ verifiable: true
266
+ },
267
+ {
268
+ name: "APIs-Google",
269
+ category: "search",
270
+ pattern: /APIs-Google/i,
271
+ verifiable: true
144
272
  },
145
273
  {
146
274
  name: "Bingbot",
147
275
  category: "search",
148
276
  pattern: /bingbot/i,
149
277
  verifiable: true
150
- // Reverse DNS: *.search.msn.com
151
278
  },
279
+ { name: "Slurp", category: "search", pattern: /Slurp/i, verifiable: false },
152
280
  {
153
- name: "Slurp",
281
+ name: "Yahoo-Slurp",
154
282
  category: "search",
155
- pattern: /Slurp/i,
156
- // Yahoo Search
283
+ pattern: /Yahoo.*Slurp/i,
157
284
  verifiable: false
158
285
  },
159
286
  {
@@ -174,52 +301,189 @@ var SEARCH_BOTS = [
174
301
  pattern: /YandexBot/i,
175
302
  verifiable: false
176
303
  },
304
+ { name: "Sogou", category: "search", pattern: /Sogou/i, verifiable: false },
305
+ { name: "Exabot", category: "search", pattern: /Exabot/i, verifiable: false },
306
+ {
307
+ name: "Algolia",
308
+ category: "search",
309
+ pattern: /Algolia.*Crawler|AlgoliaBot/i,
310
+ verifiable: false
311
+ },
312
+ {
313
+ name: "PetalBot",
314
+ category: "search",
315
+ pattern: /PetalBot/i,
316
+ verifiable: false
317
+ },
318
+ {
319
+ name: "SeekportBot",
320
+ category: "search",
321
+ pattern: /SeekportBot/i,
322
+ verifiable: false
323
+ },
324
+ {
325
+ name: "SeznamBot",
326
+ category: "search",
327
+ pattern: /SeznamBot/i,
328
+ verifiable: false
329
+ },
330
+ {
331
+ name: "QwantBot",
332
+ category: "search",
333
+ pattern: /Qwant(Bot)?/i,
334
+ verifiable: false
335
+ },
177
336
  {
178
- name: "Sogou",
337
+ name: "NaverBot",
179
338
  category: "search",
180
- pattern: /Sogou/i,
339
+ pattern: /Yeti\/|NaverBot/i,
181
340
  verifiable: false
182
341
  },
183
342
  {
184
- name: "Exabot",
343
+ name: "Adsnaver",
185
344
  category: "search",
186
- pattern: /Exabot/i,
345
+ pattern: /adsnaver/i,
346
+ verifiable: false
347
+ },
348
+ {
349
+ name: "PinterestBot",
350
+ category: "search",
351
+ pattern: /Pinterest/i,
352
+ verifiable: false
353
+ },
354
+ {
355
+ name: "Seobility",
356
+ category: "search",
357
+ pattern: /Seobility/i,
358
+ verifiable: false
359
+ },
360
+ {
361
+ name: "JobsWithGPT",
362
+ category: "search",
363
+ pattern: /JobsWithGPT/i,
187
364
  verifiable: false
188
365
  }
189
366
  ];
190
- var GENERIC_BOTS = [
191
- { name: "curl", category: "scraper", pattern: /^curl\//i, verifiable: false },
192
- { name: "wget", category: "scraper", pattern: /^Wget\//i, verifiable: false },
367
+ var SEO_BOTS = [
193
368
  {
194
- name: "python-requests",
195
- category: "scraper",
196
- pattern: /python-requests/i,
369
+ name: "AhrefsBot",
370
+ category: "seo",
371
+ pattern: /AhrefsBot/i,
197
372
  verifiable: false
198
373
  },
199
374
  {
200
- name: "Go-http-client",
201
- category: "scraper",
202
- pattern: /Go-http-client/i,
375
+ name: "AhrefsSiteAudit",
376
+ category: "seo",
377
+ pattern: /AhrefsSiteAudit/i,
203
378
  verifiable: false
204
379
  },
205
380
  {
206
- name: "axios",
207
- category: "scraper",
208
- pattern: /^axios\//i,
381
+ name: "SemrushBot",
382
+ category: "seo",
383
+ pattern: /SemrushBot|Semrush/i,
209
384
  verifiable: false
210
385
  },
211
386
  {
212
- name: "node-fetch",
213
- category: "scraper",
214
- pattern: /node-fetch/i,
387
+ name: "Semrush-SiteAudit",
388
+ category: "seo",
389
+ pattern: /semrush.*site.*audit/i,
215
390
  verifiable: false
216
391
  },
217
392
  {
218
- name: "Scrapy",
219
- category: "scraper",
220
- pattern: /Scrapy/i,
393
+ name: "DataForSeoBot",
394
+ category: "seo",
395
+ pattern: /DataForSeoBot/i,
396
+ verifiable: false
397
+ },
398
+ {
399
+ name: "Barkrowler",
400
+ category: "seo",
401
+ pattern: /Barkrowler/i,
402
+ verifiable: false
403
+ },
404
+ { name: "Lumar", category: "seo", pattern: /Lumar/i, verifiable: false },
405
+ {
406
+ name: "SE-Ranking",
407
+ category: "seo",
408
+ pattern: /seranking/i,
221
409
  verifiable: false
410
+ }
411
+ ];
412
+ var ADVERTISING_BOTS = [
413
+ {
414
+ name: "Google-AdsBot",
415
+ category: "advertising",
416
+ pattern: /AdsBot-Google/i,
417
+ verifiable: true
418
+ },
419
+ {
420
+ name: "Google-AdSense",
421
+ category: "advertising",
422
+ pattern: /Mediapartners-Google/i,
423
+ verifiable: true
222
424
  },
425
+ {
426
+ name: "Google-Display-Ads",
427
+ category: "advertising",
428
+ pattern: /Google-Display-Ads/i,
429
+ verifiable: true
430
+ },
431
+ {
432
+ name: "Google-AdWords",
433
+ category: "advertising",
434
+ pattern: /Google-Adwords-Instant/i,
435
+ verifiable: true
436
+ },
437
+ {
438
+ name: "AdIdxBot",
439
+ category: "advertising",
440
+ pattern: /adidxbot/i,
441
+ verifiable: true
442
+ },
443
+ {
444
+ name: "AdagioBot",
445
+ category: "advertising",
446
+ pattern: /Adagiobot/i,
447
+ verifiable: false
448
+ },
449
+ {
450
+ name: "Amazon-AdBot",
451
+ category: "advertising",
452
+ pattern: /Amazon-AdBot/i,
453
+ verifiable: false
454
+ },
455
+ {
456
+ name: "CriteoBot",
457
+ category: "advertising",
458
+ pattern: /CriteoBot/i,
459
+ verifiable: false
460
+ },
461
+ {
462
+ name: "Meta-ExternalAds",
463
+ category: "advertising",
464
+ pattern: /meta-externalads/i,
465
+ verifiable: false
466
+ },
467
+ {
468
+ name: "PulsePoint",
469
+ category: "advertising",
470
+ pattern: /PulsePoint/i,
471
+ verifiable: false
472
+ },
473
+ {
474
+ name: "QuantcastBot",
475
+ category: "advertising",
476
+ pattern: /QuantcastBot/i,
477
+ verifiable: false
478
+ },
479
+ {
480
+ name: "Yahoo-Ad-Monitoring",
481
+ category: "advertising",
482
+ pattern: /Yahoo.*Ad.*Monitor/i,
483
+ verifiable: false
484
+ }
485
+ ];
486
+ var MONITOR_BOTS = [
223
487
  {
224
488
  name: "UptimeRobot",
225
489
  category: "monitor",
@@ -243,11 +507,524 @@ var GENERIC_BOTS = [
243
507
  category: "monitor",
244
508
  pattern: /DatadogSynthetics/i,
245
509
  verifiable: false
510
+ },
511
+ {
512
+ name: "Better-Stack",
513
+ category: "monitor",
514
+ pattern: /Better-Stack|BetterStack/i,
515
+ verifiable: false
516
+ },
517
+ {
518
+ name: "Checkly",
519
+ category: "monitor",
520
+ pattern: /Checkly/i,
521
+ verifiable: false
522
+ },
523
+ {
524
+ name: "GTmetrix",
525
+ category: "monitor",
526
+ pattern: /GTmetrix/i,
527
+ verifiable: false
528
+ },
529
+ {
530
+ name: "HetrixTools",
531
+ category: "monitor",
532
+ pattern: /HetrixTools/i,
533
+ verifiable: false
534
+ },
535
+ {
536
+ name: "Hydrozen",
537
+ category: "monitor",
538
+ pattern: /Hydrozen/i,
539
+ verifiable: false
540
+ },
541
+ {
542
+ name: "LogicMonitor",
543
+ category: "monitor",
544
+ pattern: /LogicMonitor/i,
545
+ verifiable: false
546
+ },
547
+ {
548
+ name: "NewRelic-Minions",
549
+ category: "monitor",
550
+ pattern: /NewRelic.*Minion|Minion.*NewRelic/i,
551
+ verifiable: false
552
+ },
553
+ {
554
+ name: "OhDearBot",
555
+ category: "monitor",
556
+ pattern: /OhDearBot/i,
557
+ verifiable: false
558
+ },
559
+ {
560
+ name: "Route53-HealthCheck",
561
+ category: "monitor",
562
+ pattern: /Amazon-Route53-Health/i,
563
+ verifiable: true
564
+ },
565
+ {
566
+ name: "Sansec",
567
+ category: "monitor",
568
+ pattern: /Sansec/i,
569
+ verifiable: false
570
+ },
571
+ {
572
+ name: "Sentry-Uptime",
573
+ category: "monitor",
574
+ pattern: /Sentry.*[Uu]ptime/i,
575
+ verifiable: false
576
+ },
577
+ {
578
+ name: "Site24x7",
579
+ category: "monitor",
580
+ pattern: /Site24x7/i,
581
+ verifiable: false
582
+ },
583
+ {
584
+ name: "Google-Safety",
585
+ category: "monitor",
586
+ pattern: /Google-Safety/i,
587
+ verifiable: true
588
+ },
589
+ {
590
+ name: "Google-InspectionTool",
591
+ category: "monitor",
592
+ pattern: /Google-InspectionTool/i,
593
+ verifiable: true
594
+ },
595
+ {
596
+ name: "Brightbot",
597
+ category: "monitor",
598
+ pattern: /Brightbot/i,
599
+ verifiable: false
600
+ },
601
+ {
602
+ name: "Cookiebot",
603
+ category: "monitor",
604
+ pattern: /Cookiebot/i,
605
+ verifiable: false
606
+ },
607
+ {
608
+ name: "Dash0-Synthetic",
609
+ category: "monitor",
610
+ pattern: /Dash0/i,
611
+ verifiable: false
612
+ },
613
+ {
614
+ name: "Detectify",
615
+ category: "monitor",
616
+ pattern: /Detectify/i,
617
+ verifiable: false
618
+ },
619
+ {
620
+ name: "Marfeel-Audits",
621
+ category: "monitor",
622
+ pattern: /marfeel.*audit/i,
623
+ verifiable: false
624
+ },
625
+ {
626
+ name: "QATech",
627
+ category: "monitor",
628
+ pattern: /QATech|qatech/i,
629
+ verifiable: false
630
+ },
631
+ {
632
+ name: "Redirect-Pizza",
633
+ category: "monitor",
634
+ pattern: /redirect\.pizza/i,
635
+ verifiable: false
636
+ },
637
+ {
638
+ name: "Stably",
639
+ category: "monitor",
640
+ pattern: /Stably/i,
641
+ verifiable: false
642
+ },
643
+ {
644
+ name: "Termlybot",
645
+ category: "monitor",
646
+ pattern: /Termlybot/i,
647
+ verifiable: false
648
+ },
649
+ {
650
+ name: "Updown-io",
651
+ category: "monitor",
652
+ pattern: /updown\.io|updown-io/i,
653
+ verifiable: false
654
+ },
655
+ {
656
+ name: "VercelFlags",
657
+ category: "monitor",
658
+ pattern: /vercelflags/i,
659
+ verifiable: false
660
+ },
661
+ {
662
+ name: "VercelTracing",
663
+ category: "monitor",
664
+ pattern: /verceltracing/i,
665
+ verifiable: false
666
+ }
667
+ ];
668
+ var PREVIEW_BOTS = [
669
+ {
670
+ name: "facebookexternalhit",
671
+ category: "preview",
672
+ pattern: /facebookexternalhit/i,
673
+ verifiable: true
674
+ },
675
+ {
676
+ name: "Twitterbot",
677
+ category: "preview",
678
+ pattern: /Twitterbot/i,
679
+ verifiable: false
680
+ },
681
+ {
682
+ name: "LinkedInBot",
683
+ category: "preview",
684
+ pattern: /LinkedInBot/i,
685
+ verifiable: false
686
+ },
687
+ {
688
+ name: "iframely",
689
+ category: "preview",
690
+ pattern: /iframely/i,
691
+ verifiable: false
692
+ },
693
+ {
694
+ name: "Buffer-Preview",
695
+ category: "preview",
696
+ pattern: /Buffer.*[Bb]ot|BufferBot/i,
697
+ verifiable: false
698
+ },
699
+ {
700
+ name: "GitHub-Camo",
701
+ category: "preview",
702
+ pattern: /github-camo/i,
703
+ verifiable: true
704
+ },
705
+ {
706
+ name: "Google-Docs-Preview",
707
+ category: "preview",
708
+ pattern: /Google-Docs/i,
709
+ verifiable: true
710
+ },
711
+ {
712
+ name: "Google-Image-Proxy",
713
+ category: "preview",
714
+ pattern: /Google-Image-Proxy/i,
715
+ verifiable: true
716
+ },
717
+ {
718
+ name: "Google-PageRenderer",
719
+ category: "preview",
720
+ pattern: /Google-PageRenderer/i,
721
+ verifiable: true
722
+ },
723
+ {
724
+ name: "MicrosoftPreview",
725
+ category: "preview",
726
+ pattern: /MicrosoftPreview/i,
727
+ verifiable: true
728
+ },
729
+ {
730
+ name: "Naver-BlueNo",
731
+ category: "preview",
732
+ pattern: /naver-blueno/i,
733
+ verifiable: false
734
+ },
735
+ {
736
+ name: "Chrome-Prefetch-Proxy",
737
+ category: "preview",
738
+ pattern: /Chrome.*Prefetch.*Proxy/i,
739
+ verifiable: true
740
+ },
741
+ {
742
+ name: "Marfeel-Preview",
743
+ category: "preview",
744
+ pattern: /marfeel.*preview/i,
745
+ verifiable: false
746
+ },
747
+ {
748
+ name: "Marfeel-Flowcards",
749
+ category: "preview",
750
+ pattern: /marfeel.*flowcard/i,
751
+ verifiable: false
752
+ },
753
+ {
754
+ name: "Vemetric-Favicon",
755
+ category: "preview",
756
+ pattern: /Vemetric.*[Ff]avicon/i,
757
+ verifiable: false
758
+ },
759
+ {
760
+ name: "Vercel-Favicon",
761
+ category: "preview",
762
+ pattern: /vercel.*favicon/i,
763
+ verifiable: false
764
+ },
765
+ {
766
+ name: "Vercel-Screenshot",
767
+ category: "preview",
768
+ pattern: /vercel.*screenshot/i,
769
+ verifiable: false
770
+ },
771
+ {
772
+ name: "Vercel-Build-Container",
773
+ category: "preview",
774
+ pattern: /vercel.*build.*container/i,
775
+ verifiable: false
776
+ }
777
+ ];
778
+ var WEBHOOK_BOTS = [
779
+ {
780
+ name: "Stripe-Webhook",
781
+ category: "webhook",
782
+ pattern: /Stripe/i,
783
+ verifiable: true
784
+ },
785
+ {
786
+ name: "GitHub-Hookshot",
787
+ category: "webhook",
788
+ pattern: /GitHub-Hookshot/i,
789
+ verifiable: true
790
+ },
791
+ {
792
+ name: "PayPal-Webhook",
793
+ category: "webhook",
794
+ pattern: /PayPal/i,
795
+ verifiable: true
796
+ },
797
+ {
798
+ name: "Adyen-Webhook",
799
+ category: "webhook",
800
+ pattern: /Adyen/i,
801
+ verifiable: true
802
+ },
803
+ {
804
+ name: "Atlassian-Webhook",
805
+ category: "webhook",
806
+ pattern: /Atlassian.*Jira/i,
807
+ verifiable: true
808
+ },
809
+ {
810
+ name: "CustomerIO-Webhook",
811
+ category: "webhook",
812
+ pattern: /Customer\.io/i,
813
+ verifiable: false
814
+ },
815
+ {
816
+ name: "Facebook-Webhook",
817
+ category: "webhook",
818
+ pattern: /Facebook.*Webhook/i,
819
+ verifiable: true
820
+ },
821
+ {
822
+ name: "fal-Webhook",
823
+ category: "webhook",
824
+ pattern: /\bfal\.ai\b/i,
825
+ verifiable: false
826
+ },
827
+ {
828
+ name: "Google-AdMob",
829
+ category: "webhook",
830
+ pattern: /Google-AdMob/i,
831
+ verifiable: true
832
+ },
833
+ {
834
+ name: "Hookdeck",
835
+ category: "webhook",
836
+ pattern: /Hookdeck/i,
837
+ verifiable: false
838
+ },
839
+ {
840
+ name: "Inngest",
841
+ category: "webhook",
842
+ pattern: /Inngest/i,
843
+ verifiable: false
844
+ },
845
+ {
846
+ name: "Polar-Webhook",
847
+ category: "webhook",
848
+ pattern: /Polar.*Webhook/i,
849
+ verifiable: false
850
+ },
851
+ {
852
+ name: "QStash",
853
+ category: "webhook",
854
+ pattern: /QStash/i,
855
+ verifiable: false
856
+ },
857
+ {
858
+ name: "Razorpay-Webhook",
859
+ category: "webhook",
860
+ pattern: /Razorpay/i,
861
+ verifiable: false
862
+ },
863
+ {
864
+ name: "Sanity-Webhook",
865
+ category: "webhook",
866
+ pattern: /Sanity.*Webhook/i,
867
+ verifiable: false
868
+ },
869
+ { name: "Svix", category: "webhook", pattern: /Svix/i, verifiable: false }
870
+ ];
871
+ var FEED_BOTS = [
872
+ {
873
+ name: "Google-FeedFetcher",
874
+ category: "feed",
875
+ pattern: /FeedFetcher-Google/i,
876
+ verifiable: true
877
+ },
878
+ {
879
+ name: "Google-PublisherCenter",
880
+ category: "feed",
881
+ pattern: /Google-Publisher-Center/i,
882
+ verifiable: true
883
+ },
884
+ {
885
+ name: "Apple-Podcasts",
886
+ category: "feed",
887
+ pattern: /ApplePodcasts|Apple.*Podcasts/i,
888
+ verifiable: true
889
+ },
890
+ {
891
+ name: "Artemis",
892
+ category: "feed",
893
+ pattern: /Artemis.*[Cc]rawler/i,
894
+ verifiable: false
895
+ }
896
+ ];
897
+ var ECOMMERCE_BOTS = [
898
+ {
899
+ name: "Google-Storebot",
900
+ category: "ecommerce",
901
+ pattern: /Storebot-Google/i,
902
+ verifiable: true
903
+ },
904
+ {
905
+ name: "Channel3Bot",
906
+ category: "ecommerce",
907
+ pattern: /Channel3Bot/i,
908
+ verifiable: false
909
+ },
910
+ {
911
+ name: "GeedoProductSearch",
912
+ category: "ecommerce",
913
+ pattern: /GeedoProductSearch/i,
914
+ verifiable: false
915
+ },
916
+ {
917
+ name: "Ryebot",
918
+ category: "ecommerce",
919
+ pattern: /Ryebot/i,
920
+ verifiable: false
921
+ }
922
+ ];
923
+ var VERIFICATION_BOTS = [
924
+ {
925
+ name: "Google-SiteVerifier",
926
+ category: "verification",
927
+ pattern: /Google-Site-Verification/i,
928
+ verifiable: true
929
+ },
930
+ {
931
+ name: "Google-AssociationService",
932
+ category: "verification",
933
+ pattern: /Google-Association-Service/i,
934
+ verifiable: true
935
+ },
936
+ {
937
+ name: "Google-BusinessLink",
938
+ category: "verification",
939
+ pattern: /Google-BusinessLink/i,
940
+ verifiable: true
941
+ },
942
+ {
943
+ name: "Cybaa-Agent",
944
+ category: "verification",
945
+ pattern: /Cybaa/i,
946
+ verifiable: false
947
+ }
948
+ ];
949
+ var ANALYTICS_BOTS = [
950
+ {
951
+ name: "Chrome-Lighthouse",
952
+ category: "analytics",
953
+ pattern: /Chrome-Lighthouse/i,
954
+ verifiable: true
955
+ },
956
+ {
957
+ name: "Stripebot",
958
+ category: "analytics",
959
+ pattern: /Stripebot/i,
960
+ verifiable: true
961
+ }
962
+ ];
963
+ var SOCIAL_BOTS = [
964
+ {
965
+ name: "Marfeel-Social",
966
+ category: "social",
967
+ pattern: /marfeel.*social/i,
968
+ verifiable: false
969
+ }
970
+ ];
971
+ var ACCESSIBILITY_BOTS = [
972
+ {
973
+ name: "Google-Read-Aloud",
974
+ category: "accessibility",
975
+ pattern: /Google-Read-Aloud/i,
976
+ verifiable: true
977
+ }
978
+ ];
979
+ var GENERIC_BOTS = [
980
+ { name: "curl", category: "scraper", pattern: /^curl\//i, verifiable: false },
981
+ { name: "wget", category: "scraper", pattern: /^Wget\//i, verifiable: false },
982
+ {
983
+ name: "python-requests",
984
+ category: "scraper",
985
+ pattern: /python-requests/i,
986
+ verifiable: false
987
+ },
988
+ {
989
+ name: "Go-http-client",
990
+ category: "scraper",
991
+ pattern: /Go-http-client/i,
992
+ verifiable: false
993
+ },
994
+ {
995
+ name: "axios",
996
+ category: "scraper",
997
+ pattern: /^axios\//i,
998
+ verifiable: false
999
+ },
1000
+ {
1001
+ name: "node-fetch",
1002
+ category: "scraper",
1003
+ pattern: /node-fetch/i,
1004
+ verifiable: false
1005
+ },
1006
+ {
1007
+ name: "Scrapy",
1008
+ category: "scraper",
1009
+ pattern: /Scrapy/i,
1010
+ verifiable: false
246
1011
  }
247
1012
  ];
248
1013
  var ALL_BOTS = [
249
1014
  ...AI_BOTS,
1015
+ ...AI_ASSISTANT_BOTS,
250
1016
  ...SEARCH_BOTS,
1017
+ ...SEO_BOTS,
1018
+ ...ADVERTISING_BOTS,
1019
+ ...MONITOR_BOTS,
1020
+ ...PREVIEW_BOTS,
1021
+ ...WEBHOOK_BOTS,
1022
+ ...FEED_BOTS,
1023
+ ...ECOMMERCE_BOTS,
1024
+ ...VERIFICATION_BOTS,
1025
+ ...ANALYTICS_BOTS,
1026
+ ...SOCIAL_BOTS,
1027
+ ...ACCESSIBILITY_BOTS,
251
1028
  ...GENERIC_BOTS
252
1029
  ];
253
1030
 
@@ -337,22 +1114,26 @@ function extractAutomationHeaders(headers) {
337
1114
  // src/index.ts
338
1115
  async function sendToTelemetry(payload, config) {
339
1116
  if (!config.apiUrl) {
340
- config.apiUrl = "http://localhost:3001";
1117
+ if (config.debug) {
1118
+ console.warn("[Telemetry] No apiUrl configured \u2014 skipping telemetry send.");
1119
+ }
1120
+ return;
341
1121
  }
342
- const apiUrl = config.apiUrl || "https://telemetry.yourdomain.com";
343
- const endpoint = `${apiUrl}/v1/track/server-pageview`;
1122
+ const endpoint = `${config.apiUrl}/v1/track/server-pageview`;
344
1123
  if (config.debug) {
345
1124
  console.log(`[Telemetry] Sending payload to ${endpoint}`, payload);
346
1125
  }
1126
+ const controller = new AbortController();
1127
+ const timeout = setTimeout(() => controller.abort(), 3e3);
347
1128
  try {
348
1129
  const response = await fetch(endpoint, {
349
1130
  method: "POST",
350
1131
  headers: {
351
1132
  "Content-Type": "application/json",
352
- // The middleware passes a server secret instead of origin check
353
1133
  "Authorization": `Bearer ${config.serverSecret}`
354
1134
  },
355
- body: JSON.stringify(payload)
1135
+ body: JSON.stringify(payload),
1136
+ signal: controller.signal
356
1137
  });
357
1138
  if (!response.ok && config.debug) {
358
1139
  console.error(`[Telemetry] Failed to send payload: ${response.status} ${response.statusText}`);
@@ -361,16 +1142,34 @@ async function sendToTelemetry(payload, config) {
361
1142
  }
362
1143
  } catch (error) {
363
1144
  if (config.debug) {
364
- console.error("[Telemetry] Error sending payload:", error);
1145
+ if (error?.name === "AbortError") {
1146
+ console.error("[Telemetry] Request timed out after 3s \u2014 skipping.");
1147
+ } else {
1148
+ console.error("[Telemetry] Error sending payload:", error);
1149
+ }
365
1150
  }
1151
+ } finally {
1152
+ clearTimeout(timeout);
366
1153
  }
367
1154
  }
368
1155
  // Annotate the CommonJS export names for ESM import in node:
369
1156
  0 && (module.exports = {
1157
+ ACCESSIBILITY_BOTS,
1158
+ ADVERTISING_BOTS,
1159
+ AI_ASSISTANT_BOTS,
370
1160
  AI_BOTS,
371
1161
  ALL_BOTS,
1162
+ ANALYTICS_BOTS,
1163
+ ECOMMERCE_BOTS,
1164
+ FEED_BOTS,
372
1165
  GENERIC_BOTS,
1166
+ MONITOR_BOTS,
1167
+ PREVIEW_BOTS,
373
1168
  SEARCH_BOTS,
1169
+ SEO_BOTS,
1170
+ SOCIAL_BOTS,
1171
+ VERIFICATION_BOTS,
1172
+ WEBHOOK_BOTS,
374
1173
  detectBot,
375
1174
  extractAutomationHeaders,
376
1175
  sendToTelemetry