pod_ident 1.1.5 → 1.1.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f7ca110dec4318a580a24ca7e374337bcfcd767af1f0536ca38809f5fc7fdaa
4
- data.tar.gz: d23d1aac3131be0895256c2c80d96b0f4bb6c62adcc4e55b14757cf322aa47b8
3
+ metadata.gz: 321a69febe252bdbac571ffef2014e9e5efc8d307340317de2ec4f04e5437051
4
+ data.tar.gz: b3821f4f00f0b5416c4a4e7002cd07e7ecd7dd2de7c30e983abfbd24d2ec92b2
5
5
  SHA512:
6
- metadata.gz: 06cfa8d32406bac6a32c1f8f50333e014588aea72426e0573c9bd3492219c6f2dc90cc4a8fa109351f1d295045a48d093876dccaebe8f67c30fb1fced2b38b2d
7
- data.tar.gz: 6a24167fb98f13501f925245819b2858968e2a44868476725fb01f97f068141325d1f20aa770e02860dde23c665e8a891aaa60c80d083b02ab4a539c877259a4
6
+ metadata.gz: 2c2ce037198b8d421f7738ee1d0af378727a297ca7e89e364ea34f183ecd49bf733f6cc51a7dcbf97fe3866056484b3f1636258e25d35e740071cbd0d7fa1c14
7
+ data.tar.gz: 405b9717ea5435cf3f753fbced23b0dff74bde2df6e2ed8a46bee041757b1798a7d395cd8c73f62d9443799ad82f459b41207e317f9160e5cc197ef03683d315
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.2.2
1
+ 3.3.6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.7]
4
+
5
+ - Update bot detection list
6
+
7
+ ## [1.1.6]
8
+
9
+ - Update bot detection list, purpose: detect `agma/*` as bot
10
+
3
11
  ## [1.1.5]
4
12
 
5
13
  - Rename `Amazon Alexa` to `Alexa`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pod_ident (1.1.4)
4
+ pod_ident (1.1.7)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -41,4 +41,4 @@ DEPENDENCIES
41
41
  rspec_junit_formatter
42
42
 
43
43
  BUNDLED WITH
44
- 2.4.14
44
+ 2.5.23
data/Rakefile CHANGED
@@ -27,7 +27,7 @@ task :update_bot_rules do
27
27
 
28
28
  def json_content
29
29
  json = File.open(BOT_JSON).read
30
- content = JSON.parse(json)
30
+ JSON.parse(json)
31
31
  end
32
32
 
33
33
  def generate_entry_yml(entry)
@@ -13,6 +13,13 @@
13
13
  test:
14
14
  userAgents:
15
15
  - userAgent: AIS VirtualListener
16
+ - app: ma Podcast (agma) Bot
17
+ match:
18
+ regex: "^agma/"
19
+ platform: bot
20
+ test:
21
+ userAgents:
22
+ - userAgent: agma/1.0
16
23
  - app: AhrefsBot
17
24
  match:
18
25
  regex: AhrefsBot/
@@ -40,6 +47,13 @@
40
47
  test:
41
48
  userAgents:
42
49
  - userAgent: Alignabot 1.0 (https://www.alignable.com/)
50
+ - app: All Ears
51
+ match:
52
+ regex: "^AllEars/"
53
+ platform: bot
54
+ test:
55
+ userAgents:
56
+ - userAgent: AllEars/1.0; (+www.allears.ai)
43
57
  - app: Amazon Music Podcasts Bot
44
58
  match:
45
59
  regex: "^Amazon Music Podcast"
@@ -51,14 +65,14 @@
51
65
  test:
52
66
  userAgents:
53
67
  - userAgent: AnchorImport/1.0
54
- - app: Apache HTTPClient
68
+ - app: Apple Notes share extension
55
69
  match:
56
- regex: "^Apache\\-HttpClient"
70
+ regex: "^com.apple.(mobilenotes.SharingExtension|Notes.SharingExtension)/"
57
71
  platform: bot
58
72
  test:
59
73
  userAgents:
60
- - userAgent: Apache-HttpClient/5.1.4 (Java/1.8.0_144)
61
- - userAgent: Apache-HttpClient/5.1.4 (Java/1.8.0_91)
74
+ - userAgent: com.apple.mobilenotes.SharingExtension/2511 CFNetwork/1494.0.7 Darwin/23.4.0
75
+ - userAgent: com.apple.Notes.SharingExtension/2812 CFNetwork/1494.0.7 Darwin/23.4.0
62
76
  - app: Apple Podcasts (Watch)
63
77
  match:
64
78
  regex: "^atc/|\\(null\\) watchOS/"
@@ -143,6 +157,13 @@
143
157
  test:
144
158
  userAgents:
145
159
  - userAgent: bbot/0.1
160
+ - app: Beacon Podcast Sync
161
+ match:
162
+ regex: "^Beacon/\\d"
163
+ platform: bot
164
+ test:
165
+ userAgents:
166
+ - userAgent: Beacon/1.0 Podcast Sync +https://getbeacons.com/
146
167
  - app: British Library
147
168
  match:
148
169
  regex: "^bl\\.uk_ldfc_bot"
@@ -157,6 +178,13 @@
157
178
  test:
158
179
  userAgents:
159
180
  - userAgent: Blubrry Migration Service
181
+ - app: Bullhorn Crawler
182
+ match:
183
+ regex: "^BullhornCrawler/"
184
+ platform: bot
185
+ test:
186
+ userAgents:
187
+ - userAgent: BullhornCrawler/unknown-version(+http://bullhorn.fm/)
160
188
  - app: Buzzsprout Importer
161
189
  match:
162
190
  regex: "^Buzzsprout Importer"
@@ -164,6 +192,14 @@
164
192
  test:
165
193
  userAgents:
166
194
  - userAgent: Buzzsprout Importer
195
+ - app: Bytespider.*bytedance
196
+ match:
197
+ regex: Bytespider
198
+ platform: bot
199
+ test:
200
+ userAgents:
201
+ - userAgent: Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like
202
+ Gecko) Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)
167
203
  - app: CastFeedValidator
168
204
  match:
169
205
  regex: "^CastFeedValidator/"
@@ -187,6 +223,14 @@
187
223
  match:
188
224
  regex: "^clark-crawler2"
189
225
  platform: bot
226
+ - app: Claudebot
227
+ match:
228
+ regex: ClaudeBot/
229
+ platform: bot
230
+ test:
231
+ userAgents:
232
+ - userAgent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0;
233
+ +claudebot@anthropic.com)
190
234
  - app: Critical Mention
191
235
  match:
192
236
  regex: "^Podcast-CriticalMention/"
@@ -229,6 +273,13 @@
229
273
  test:
230
274
  userAgents:
231
275
  - userAgent: Mozilla/5.0 (compatible; Daum/4.1; +http://cs.daum.net/faq/15/4118.html?faqId=28966)
276
+ - app: Deepcast Podcast Sync
277
+ match:
278
+ regex: "^DeepCast/\\d.*Sync"
279
+ platform: bot
280
+ test:
281
+ userAgents:
282
+ - userAgent: DeepCast/4.3.0 Podcast Sync (+https://deepcast.fm)
232
283
  - app: Deezer Podcasters
233
284
  match:
234
285
  regex: "^Deezer Podcasters/1\\.0"
@@ -352,7 +403,7 @@
352
403
  platform: bot
353
404
  - app: Googlebot
354
405
  match:
355
- regex: Googlebot/|Googlebot-Video/|Googlebot-Image/|^Feedfetcher-Google|google-xrawler
406
+ regex: Googlebot/|Googlebot-Video/|Googlebot-Image/|^Feedfetcher-Google|google-xrawler|^Googlebot-News|^Google-Safety$
356
407
  platform: bot
357
408
  test:
358
409
  userAgents:
@@ -363,6 +414,8 @@
363
414
  - userAgent: Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 1 subscribers;
364
415
  feed-id=4653447469100830145)
365
416
  - userAgent: google-xrawler
417
+ - userAgent: Googlebot-News Audio
418
+ - userAgent: Google-Safety
366
419
  - app: Gumball
367
420
  match:
368
421
  regex: "^Gumball"
@@ -372,7 +425,7 @@
372
425
  - userAgent: Gumball.fm Analytics Prefix Checker
373
426
  - app: Headliner
374
427
  match:
375
- regex: Headliner/
428
+ regex: "^Headliner/.*\\+https://headliner\\.app$"
376
429
  platform: bot
377
430
  test:
378
431
  userAgents:
@@ -392,6 +445,22 @@
392
445
  userAgents:
393
446
  - userAgent: Mozilla/5.0 (compatible; special_archiver; Archive-It; http://archive-it.org/files/site-owners-special.html)
394
447
  - userAgent: ia_archiver-web.archive.org
448
+ - app: iOS share menu
449
+ match:
450
+ regex: "^SharingUIService/"
451
+ platform: bot
452
+ test:
453
+ userAgents:
454
+ - userAgent: SharingUIService/1 CFNetwork/1467.1 Darwin/23.0.0
455
+ - userAgent: SharingUIService/1 CFNetwork/1490.0.4 Darwin/23.2.0
456
+ - app: IPFS Podcasting Node
457
+ match:
458
+ regex: "^IPFS Podcasting Node/"
459
+ platform: bot
460
+ test:
461
+ userAgents:
462
+ - userAgent: IPFS Podcasting Node/0.6n (+https://ipfspodcasting.net)
463
+ - userAgent: IPFS Podcasting Node/0.7p,u,s (+https://ipfspodcasting.net)
395
464
  - app: Jaunt
396
465
  match:
397
466
  regex: "^Jaunt/"
@@ -403,6 +472,13 @@
403
472
  match:
404
473
  regex: INA dlweb
405
474
  platform: bot
475
+ - app: Library and Archives Canada
476
+ match:
477
+ regex: LAC_IAHarvester/
478
+ platform: bot
479
+ test:
480
+ userAgents:
481
+ - userAgent: Mozilla/5.0 (compatible; LAC_IAHarvester/3.3.0; +https://library-archives.canada.ca/eng/services/government-canada/web-social-media-preservation-program/Pages/web-archive.aspx)
406
482
  - app: Libsyn
407
483
  match:
408
484
  regex: "^Libsyn4"
@@ -421,6 +497,13 @@
421
497
  match:
422
498
  regex: LivelapBot
423
499
  platform: bot
500
+ - app: ListenNotes
501
+ match:
502
+ regex: "^ListenNotes/3\\.0 \\("
503
+ platform: bot
504
+ test:
505
+ userAgents:
506
+ - userAgent: ListenNotes/3.0 (id=c1ef144e30174bf6ba1fedf9174ed908; +https://www.listennotes.com/about/)
424
507
  - app: LTX71
425
508
  match:
426
509
  regex: "^ltx71 "
@@ -428,6 +511,14 @@
428
511
  test:
429
512
  userAgents:
430
513
  - userAgent: ltx71 - (http://ltx71.com/)
514
+ - app: MacOS share menu
515
+ match:
516
+ regex: "^ShareSheetUI/"
517
+ platform: bot
518
+ test:
519
+ userAgents:
520
+ - userAgent: ShareSheetUI/1 CFNetwork/1399.4 Darwin/22.1.0
521
+ - userAgent: ShareSheetUI/1 CFNetwork/1474 Darwin/23.0.0
431
522
  - app: MauiBot
432
523
  match:
433
524
  regex: "^MauiBot"
@@ -442,6 +533,13 @@
442
533
  test:
443
534
  userAgents:
444
535
  - userAgent: http.rb/5.0.4 (Mastodon/3.5.3; +https://mastodon.xyz/) Bot
536
+ - app: Metacast Crawler
537
+ match:
538
+ regex: "^Metacast/.* Crawler"
539
+ platform: bot
540
+ test:
541
+ userAgents:
542
+ - userAgent: Metacast/1.0 Crawler +https://metacast.app
445
543
  - app: Microsoft Bingbot
446
544
  match:
447
545
  regex: "(BingPreview/|adidxbot/|[bB]ingbot/)"
@@ -526,6 +624,16 @@
526
624
  test:
527
625
  userAgents:
528
626
  - userAgent: op3-fetcher/1.0 (https://op3.dev)
627
+ - app: OpenAI GPTBot
628
+ match:
629
+ regex: GPTBot/
630
+ platform: bot
631
+ test:
632
+ userAgents:
633
+ - userAgent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2;
634
+ +https://openai.com/gptbot)
635
+ - userAgent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.0;
636
+ +https://openai.com/gptbot)
529
637
  - app: Overcast feed parser
530
638
  match:
531
639
  regex: "^Overcast/1\\.0 Podcast Sync"
@@ -533,6 +641,8 @@
533
641
  test:
534
642
  userAgents:
535
643
  - userAgent: Overcast/1.0 Podcast Sync
644
+ - userAgent: Overcast/1.0 Podcast Sync (+http://overcast.fm/)
645
+ - userAgent: Overcast/1.0 Podcast Sync (1 subscribers; feed-id=1234567; +http://overcast.fm/)
536
646
  - app: Pandora RSS crawler
537
647
  match:
538
648
  regex: "^PandoraRSSCrawler"
@@ -591,6 +701,20 @@
591
701
  test:
592
702
  userAgents:
593
703
  - userAgent: Podcast%20Archiver/3000000003 CFNetwork/1406.0.4 Darwin/22.4.0
704
+ - app: Podcast Archiver (janw)
705
+ match:
706
+ regex: "^podcast-archiver/v\\d"
707
+ platform: bot
708
+ test:
709
+ userAgents:
710
+ - userAgent: podcast-archiver/v1.7.1 (https://github.com/janw/podcast-archiver)
711
+ - app: Podcastics
712
+ match:
713
+ regex: "^Podcastics$"
714
+ platform: bot
715
+ test:
716
+ userAgents:
717
+ - userAgent: Podcastics
594
718
  - app: PodCloud
595
719
  match:
596
720
  regex: podCloud
@@ -637,6 +761,13 @@
637
761
  test:
638
762
  userAgents:
639
763
  - userAgent: Podio/1.0
764
+ - app: Podmon Bot
765
+ match:
766
+ regex: "^Podmonbot/"
767
+ platform: bot
768
+ test:
769
+ userAgents:
770
+ - userAgent: Podmonbot/1.0
640
771
  - app: Podnews
641
772
  match:
642
773
  regex: PodnewsBot
@@ -645,6 +776,28 @@
645
776
  match:
646
777
  regex: "(podnods-crawler|podnods)"
647
778
  platform: bot
779
+ - app: Podplay Podcast Sync
780
+ match:
781
+ regex: "^Podplay-Podcast-Sync/"
782
+ platform: bot
783
+ test:
784
+ userAgents:
785
+ - userAgent: Podplay-Podcast-Sync/1.0 (+https://podplay.com/articles/contact)
786
+ - app: Podroll Analyzer
787
+ match:
788
+ regex: "^pdrl\\.fm "
789
+ platform: bot
790
+ test:
791
+ userAgents:
792
+ - userAgent: pdrl.fm Analyzer / 1.0.0
793
+ - app: Podscan Bot
794
+ match:
795
+ regex: "^PodscanBot/"
796
+ platform: bot
797
+ test:
798
+ userAgents:
799
+ - userAgent: PodscanBot/1.1.0 Ubuntu/22.04 (Linux) +https://podscan.fm
800
+ - userAgent: PodscanBot/1.1.0 Ubuntu/22.04 (Linux) Podscan.fm
648
801
  - app: Podscribe
649
802
  match:
650
803
  regex: "(^Adswizz-podscribe/|^Podscribe/)"
@@ -653,6 +806,15 @@
653
806
  userAgents:
654
807
  - userAgent: Adswizz-podscribe/1.0
655
808
  - userAgent: Podscribe/1.1
809
+ - app: PodUptime
810
+ match:
811
+ regex: "(PodUptime|PodUptimeBot)/\\d"
812
+ platform: bot
813
+ test:
814
+ userAgents:
815
+ - userAgent: Mozilla/5.0 (compatible; PodUptime/1.0; +https://poduptime.com)
816
+ - userAgent: Mozilla/5.0 (compatible; PodUptimeBot/1.0; +https://poduptime.com;
817
+ rid:5c02fc9b-2660-4d3e-a352-de1a1aabdc0a)
656
818
  - app: Podverse Feed Parser
657
819
  match:
658
820
  regex: "^Podverse/Feed Parser"
@@ -697,6 +859,13 @@
697
859
  test:
698
860
  userAgents:
699
861
  - userAgent: z0-qiniu-imgstg-spider-1.0
862
+ - app: Radioline Stream Monitoring
863
+ match:
864
+ regex: "^Radioline Stream Monitoring"
865
+ platform: bot
866
+ test:
867
+ userAgents:
868
+ - userAgent: Radioline Stream Monitoring (tech@radioline.co)
700
869
  - app: RedCircle
701
870
  match:
702
871
  regex: RedCircle
@@ -704,6 +873,13 @@
704
873
  test:
705
874
  userAgents:
706
875
  - userAgent: RedCircle
876
+ - app: Rephonic
877
+ match:
878
+ regex: "^Rephonic/\\d"
879
+ platform: bot
880
+ test:
881
+ userAgents:
882
+ - userAgent: Rephonic/1.0
707
883
  - app: Ridder Bot
708
884
  match:
709
885
  regex: " RidderBot/"
@@ -784,6 +960,13 @@
784
960
  match:
785
961
  regex: "^SoundOn/[\\d.]+\\s+\\(bot"
786
962
  platform: bot
963
+ - app: Speechmatics ASR
964
+ match:
965
+ regex: "^Speechmatics-API/"
966
+ platform: bot
967
+ test:
968
+ userAgents:
969
+ - userAgent: Speechmatics-API/2.0
787
970
  - app: Spotify cache service
788
971
  match:
789
972
  regex: "^Spotify/1\\.0$"
@@ -810,6 +993,13 @@
810
993
  userAgents:
811
994
  - userAgent: SupportingCast/1.0
812
995
  - userAgent: SupportingCast
996
+ - app: Taddy Podcast API
997
+ match:
998
+ regex: "^Taddy Podcast API "
999
+ platform: bot
1000
+ test:
1001
+ userAgents:
1002
+ - userAgent: Taddy Podcast API (https://taddy.org/developers)
813
1003
  - app: Timpi search crawler
814
1004
  match:
815
1005
  regex: Timpibot/
@@ -824,10 +1014,31 @@
824
1014
  test:
825
1015
  userAgents:
826
1016
  - userAgent: Tiny Tiny RSS/22.12-c30b24d09 (Unsupported) (https://tt-rss.org/)
1017
+ - app: Transistor
1018
+ match:
1019
+ regex: "^Transistor\\.fm/"
1020
+ platform: bot
1021
+ test:
1022
+ userAgents:
1023
+ - userAgent: Transistor.fm/1.0
827
1024
  - app: Trendsmap Resolver
828
1025
  match:
829
1026
  regex: TrendsmapResolver/
830
1027
  platform: bot
1028
+ - app: Triton Digital Podcast Sync
1029
+ match:
1030
+ regex: "^Triton Digital Podcast Sync$"
1031
+ platform: bot
1032
+ test:
1033
+ userAgents:
1034
+ - userAgent: Triton Digital Podcast Sync
1035
+ - app: TurnitinBot
1036
+ match:
1037
+ regex: "^Turnitin \\("
1038
+ platform: bot
1039
+ test:
1040
+ userAgents:
1041
+ - userAgent: Turnitin (https://bit.ly/2UvnfoQ)
831
1042
  - app: Twingly Bot
832
1043
  match:
833
1044
  regex: Twingly Recon;
@@ -851,6 +1062,13 @@
851
1062
  userAgents:
852
1063
  - userAgent: UCast/1.0 Podcast Sync (1 subscribers; feed-id=aHR0cHM6Ly9mZWVkcy5idXp6c3Byb3V0LmNvbS8yMDg0OTQucnNzEAEBAD32-0242-42AC-8583-21E9BAD8C544;
853
1064
  +http://www.ucastapp.com/)
1065
+ - app: UptimeRobot
1066
+ match:
1067
+ regex: UptimeRobot/\d
1068
+ platform: bot
1069
+ test:
1070
+ userAgents:
1071
+ - userAgent: Mozilla/5.0+(compatible; UptimeRobot/2.0; http://www.uptimerobot.com/)
854
1072
  - app: TelegramBot
855
1073
  match:
856
1074
  regex: "^TelegramBot "
@@ -1,4 +1,12 @@
1
1
  ---
2
+ - app: Apache HTTPClient
3
+ match:
4
+ regex: "^Apache\\-HttpClient"
5
+ platform: bot
6
+ test:
7
+ userAgents:
8
+ - userAgent: Apache-HttpClient/5.1.4 (Java/1.8.0_144)
9
+ - userAgent: Apache-HttpClient/5.1.4 (Java/1.8.0_91)
2
10
  - app: curl
3
11
  match:
4
12
  regex: "^Faraday"
@@ -1,3 +1,3 @@
1
1
  # DO NOT EDIT THIS FILE - it gets automatically generated by running "bin/parse-rules"
2
2
 
3
- BOTS_RULES = [{:app=>"AAABot - unknown bot", :match=>{"regex"=>"AAABot"}, :platform=>"bot"}, {:app=>"Adswizz", :match=>{"regex"=>"^AIS VirtualListener"}, :platform=>"bot"}, {:app=>"AhrefsBot", :match=>{"regex"=>"AhrefsBot/"}, :platform=>"bot"}, {:app=>"AirableBot", :match=>{"regex"=>"AirableBot-Podcast/"}, :platform=>"bot"}, {:app=>"Alexa Flash Briefing cache", :match=>{"regex"=>"^AmazonNewsContentService"}, :platform=>"bot"}, {:app=>"AlignaBot", :match=>{"regex"=>"^Alignabot"}, :platform=>"bot"}, {:app=>"Amazon Music Podcasts Bot", :match=>{"regex"=>"^Amazon Music Podcast"}, :platform=>"bot"}, {:app=>"Anchor Importer", :match=>{"regex"=>"AnchorImport"}, :platform=>"bot"}, {:app=>"Apache HTTPClient", :match=>{"regex"=>"^Apache\\-HttpClient"}, :platform=>"bot"}, {:app=>"Apple Podcasts (Watch)", :match=>{"regex"=>"^atc/|\\(null\\) watchOS/"}, :platform=>"bot"}, {:app=>"Apple Podcasts automated checks", :match=>{"regex"=>"(iTMS|itunesstored|itms)"}, :platform=>"bot"}, {:app=>"Applebot", :match=>{"regex"=>"^Applebot/"}, :platform=>"bot"}, {:app=>"Archive.org", :match=>{"regex"=>"archive\\.org_bot"}, :platform=>"bot"}, {:app=>"atheerfm", :match=>{"regex"=>"^atheerfm/"}, :platform=>"bot"}, {:app=>"Audiomack", :match=>{"regex"=>"^Audiomack Podcast Processor/"}, :platform=>"bot"}, {:app=>"AudioWave feed parser", :match=>{"regex"=>"^AudioWaveBot/1\\.0"}, :platform=>"bot"}, {:app=>"AwarioSmartBot", :match=>{"regex"=>"^AwarioSmartBot/"}, :platform=>"bot"}, {:app=>"Babbar", :match=>{"regex"=>"Barkrowler/"}, :platform=>"bot"}, {:app=>"Baidu", :match=>{"regex"=>"\\(ce\\.baidu\\.com"}, :platform=>"bot"}, {:app=>"bbot", :match=>{"regex"=>"^bbot/"}, :platform=>"bot"}, {:app=>"British Library", :match=>{"regex"=>"^bl\\.uk_ldfc_bot"}, :platform=>"bot"}, {:app=>"Blubrry Migration Service", :match=>{"regex"=>"^Blubrry Migration Service"}, :platform=>"bot"}, {:app=>"Buzzsprout Importer", :match=>{"regex"=>"^Buzzsprout Importer"}, :platform=>"bot"}, {:app=>"CastFeedValidator", :match=>{"regex"=>"^CastFeedValidator/"}, :platform=>"bot"}, {:app=>"Castopod", :match=>{"regex"=>"Castopod/\\d"}, :platform=>"bot"}, {:app=>"Chartable", :match=>{"regex"=>"^Trackable/"}, :platform=>"bot"}, {:app=>"Clark-Crawler, unknown", :match=>{"regex"=>"^clark-crawler2"}, :platform=>"bot"}, {:app=>"Critical Mention", :match=>{"regex"=>"^Podcast-CriticalMention/"}, :platform=>"bot"}, {:app=>"curl", :match=>{"regex"=>"^curl|^libcurl/|^PycURL/| curl/"}, :platform=>"bot"}, {:app=>"DataforSEO", :match=>{"regex"=>"DataForSeoBot/"}, :platform=>"bot"}, {:app=>"Datagnion Bot", :match=>{"regex"=>"^datagnionbot"}, :platform=>"bot"}, {:app=>"dataprovider.com", :match=>{"regex"=>"Dataprovider\\.com"}, :platform=>"bot"}, {:app=>"Daum", :match=>{"regex"=>"http://cs\\.daum\\.net"}, :platform=>"bot"}, {:app=>"Deezer Podcasters", :match=>{"regex"=>"^Deezer Podcasters/1\\.0"}, :platform=>"bot"}, {:app=>"Digg", :match=>{"regex"=>"^Digg "}, :platform=>"bot"}, {:app=>"dorada", :match=>{"regex"=>"support@dorada\\.co\\.uk"}, :platform=>"bot"}, {:app=>"DotBot", :match=>{"regex"=>"DotBot"}, :platform=>"bot"}, {:app=>"Downcast Bot", :match=>{"regex"=>"downcast feed consumer/"}, :platform=>"bot"}, {:app=>"DuckDuckBot", :match=>{"regex"=>"DuckDuckBot"}, :platform=>"bot"}, {:app=>"F-Secure Riddler", :match=>{"regex"=>"^Riddler "}, :platform=>"bot"}, {:app=>"Facebook Bot", :match=>{"regex"=>"FacebookBot|f?acebookexternalhit/?|^podcastbot$|Facebot|facebookexternalua|^facebookplatform/"}, :platform=>"bot"}, {:app=>"Feedly", :match=>{"regex"=>"^Feedly/"}, :platform=>"bot"}, {:app=>"Feedspot Fetcher", :match=>{"regex"=>"https://www\\.feedspot\\.com/fs/fetcher"}, :platform=>"bot"}, {:app=>"FlexGet", :match=>{"regex"=>"^FlexGet/"}, :platform=>"bot"}, {:app=>"Flipboard Proxy", :match=>{"regex"=>"FlipboardProxy/"}, :platform=>"bot"}, {:app=>"Fyyd", :match=>{"regex"=>"^fyyd-poll"}, :platform=>"bot"}, {:app=>"Go Storage Gateway V1", :match=>{"regex"=>"^storagegw-v1-go$"}, :platform=>"bot"}, {:app=>"Goodpods Bot", :match=>{"regex"=>"Goodpods/\\d+\\.\\d+"}, :platform=>"bot"}, {:app=>"Google Adsense Bot", :match=>{"regex"=>"Mediapartners-Google"}, :platform=>"bot"}, {:app=>"Google AdsBot", :match=>{"regex"=>"AdsBot-Google"}, :platform=>"bot"}, {:app=>"Google Podcasts Manager", :match=>{"regex"=>"Google-Podcast"}, :platform=>"bot"}, {:app=>"Googlebot", :match=>{"regex"=>"Googlebot/|Googlebot-Video/|Googlebot-Image/|^Feedfetcher-Google|google-xrawler"}, :platform=>"bot"}, {:app=>"Gumball", :match=>{"regex"=>"^Gumball"}, :platform=>"bot"}, {:app=>"Headliner", :match=>{"regex"=>"Headliner/"}, :platform=>"bot"}, {:app=>"HubSpot Crawler", :match=>{"regex"=>"HubSpot Crawler"}, :platform=>"bot"}, {:app=>"Internet Archive", :match=>{"regex"=>"Archive-It;|web\\.archive\\.org"}, :platform=>"bot"}, {:app=>"Jaunt", :match=>{"regex"=>"^Jaunt/"}, :platform=>"bot"}, {:app=>"l'Institut national de l'audiovisuel", :match=>{"regex"=>"INA dlweb"}, :platform=>"bot"}, {:app=>"Libsyn", :match=>{"regex"=>"^Libsyn4"}, :platform=>"bot"}, {:app=>"libwww-perl", :match=>{"regex"=>"^libwww-perl| libwww-perl"}, :platform=>"bot"}, {:app=>"Livelap Crawler", :match=>{"regex"=>"LivelapBot"}, :platform=>"bot"}, {:app=>"LTX71", :match=>{"regex"=>"^ltx71 "}, :platform=>"bot"}, {:app=>"MauiBot", :match=>{"regex"=>"^MauiBot"}, :platform=>"bot"}, {:app=>"Mastodon Bot", :match=>{"regex"=>"rb/.*Mastodon/"}, :platform=>"bot"}, {:app=>"Microsoft Bingbot", :match=>{"regex"=>"(BingPreview/|adidxbot/|[bB]ingbot/)"}, :platform=>"bot"}, {:app=>"Microsoft Office", :match=>{"regex"=>"ms-office; MSOffice"}, :platform=>"bot"}, {:app=>"Mixcloud Podcast Importer", :match=>{"regex"=>"^MixcloudPodcastImporter/"}, :platform=>"bot"}, {:app=>"MJ12bot", :match=>{"regex"=>".*MJ12bot"}, :platform=>"bot"}, {:app=>"Mozilla Bot", :match=>{"regex"=>"^'?Mozilla(/5\\.0(\\.\\.\\.)?)?$|^\\(Mozilla/5\\.0\\)$"}, :platform=>"bot"}, {:app=>"MSN Bot", :match=>{"regex"=>"^msnbot/"}, :platform=>"bot"}, {:app=>"Neevabot", :match=>{"regex"=>".*Neevabot"}, :platform=>"bot"}, {:app=>"Netcraft Survey Agent", :match=>{"regex"=>" NetcraftSurveyAgent/"}, :platform=>"bot"}, {:app=>"Newspaper", :match=>{"regex"=>"^newspaper/\\d"}, :platform=>"bot"}, {:app=>"OgScrper", :match=>{"regex"=>"OgScrper"}, :platform=>"bot"}, {:app=>"OkDownload", :match=>{"regex"=>"^OkDownload/"}, :platform=>"bot"}, {:app=>"OP3 Fetcher", :match=>{"regex"=>"^op3-fetcher/"}, :platform=>"bot"}, {:app=>"Overcast feed parser", :match=>{"regex"=>"^Overcast/1\\.0 Podcast Sync"}, :platform=>"bot"}, {:app=>"Pandora RSS crawler", :match=>{"regex"=>"^PandoraRSSCrawler"}, :platform=>"bot"}, {:app=>"PaperLi", :match=>{"regex"=>"PaperLiBot/"}, :platform=>"bot"}, {:app=>"PetalBot", :match=>{"regex"=>"PetalBot"}, :platform=>"bot"}, {:app=>"Pingdom", :match=>{"regex"=>"^Pingdom"}, :platform=>"bot"}, {:app=>"PlayerFM Podcast Sync", :match=>{"regex"=>"PlayerFM/.* Podcast Sync"}, :platform=>"bot"}, {:app=>"Podbean Importer", :match=>{"regex"=>"^Podbean Importer"}, :platform=>"bot"}, {:app=>"Podcastindex.org", :match=>{"regex"=>"^Podcastindex\\.org/"}, :platform=>"bot"}, {:app=>"Podcast de facto Standard", :match=>{"regex"=>"^PodcastStandard/"}, :platform=>"bot"}, {:app=>"Podcast Archiver", :match=>{"regex"=>"^Podcast%20Archiver/"}, :platform=>"bot"}, {:app=>"PodCloud", :match=>{"regex"=>"podCloud"}, :platform=>"bot"}, {:app=>"Podcorn", :match=>{"regex"=>"Podcorn/"}, :platform=>"bot"}, {:app=>"PodderBot", :match=>{"regex"=>"PodderBot/"}, :platform=>"bot"}, {:app=>"Podfollow", :match=>{"regex"=>"podfollowbot/"}, :platform=>"bot"}, {:app=>"Podgrab", :match=>{"regex"=>"^Podgrab$"}, :platform=>"bot"}, {:app=>"Podhound", :match=>{"regex"=>"PodhoundBeta"}, :platform=>"bot"}, {:app=>"Podio Bot", :match=>{"regex"=>"^Podio/"}, :platform=>"bot"}, {:app=>"Podnews", :match=>{"regex"=>"PodnewsBot"}, :platform=>"bot"}, {:app=>"Podnods Bot", :match=>{"regex"=>"(podnods-crawler|podnods)"}, :platform=>"bot"}, {:app=>"Podscribe", :match=>{"regex"=>"(^Adswizz-podscribe/|^Podscribe/)"}, :platform=>"bot"}, {:app=>"Podverse Feed Parser", :match=>{"regex"=>"^Podverse/Feed Parser"}, :platform=>"bot"}, {:app=>"PodvineBot", :match=>{"regex"=>"^PodvineBot/"}, :platform=>"bot"}, {:app=>"PostRank Bot", :match=>{"regex"=>"^PostRank/"}, :platform=>"bot"}, {:app=>"PodwatchPro", :match=>{"regex"=>"Podwatch-Pro Crawler"}, :platform=>"bot"}, {:app=>"Puppeteer", :match=>{"regex"=>" HeadlessChrome/\\d"}, :platform=>"bot"}, {:app=>"python-requests", :match=>{"regex"=>"python-requests"}, :platform=>"bot"}, {:app=>"Qiniu spider", :match=>{"regex"=>"qiniu.*spider"}, :platform=>"bot"}, {:app=>"RedCircle", :match=>{"regex"=>"RedCircle"}, :platform=>"bot"}, {:app=>"Ridder Bot", :match=>{"regex"=>" RidderBot/"}, :platform=>"bot"}, {:app=>"RSS to Telegram", :match=>{"regex"=>"^RSStT"}, :platform=>"bot"}, {:app=>"RSSRadio", :match=>{"regex"=>"^RSSRadio \\("}, :platform=>"bot"}, {:app=>"Ruby Mechanize", :match=>{"regex"=>"^Mechanize|[ -]Mechanize/"}, :platform=>"bot"}, {:app=>"Screaming Frog SEO Spider", :match=>{"regex"=>"^Screaming Frog "}, :platform=>"bot"}, {:app=>"SearchAtlas.com SEO Crawler", :match=>{"regex"=>"^SearchAtlas.*Crawler"}, :platform=>"bot"}, {:app=>"SEMrushBot", :match=>{"regex"=>"SemrushBot/|^SEMrushBot$"}, :platform=>"bot"}, {:app=>"Serendeputy", :match=>{"regex"=>"SerendeputyBot/"}, :platform=>"bot"}, {:app=>"Simplecast", :match=>{"regex"=>"^Simplecast$"}, :platform=>"bot"}, {:app=>"Slack Bot", :match=>{"regex"=>"^Slackbot 1\\.0"}, :platform=>"bot"}, {:app=>"Snapchat Bot", :match=>{"regex"=>"://developers\\.snap\\.com/robots"}, :platform=>"bot"}, {:app=>"SoundOn Bot", :match=>{"regex"=>"^SoundOn/[\\d.]+\\s+\\(bot"}, :platform=>"bot"}, {:app=>"Spotify cache service", :match=>{"regex"=>"^Spotify/1\\.0$"}, :platform=>"bot"}, {:app=>"Stitcher Bot", :match=>{"regex"=>"^StitcherBot"}, :platform=>"bot"}, {:app=>"Substack Content Fetcher", :match=>{"regex"=>"^SubstackContentFetch/"}, :platform=>"bot"}, {:app=>"SupportingCast", :match=>{"regex"=>"^SupportingCast(/.*)?$"}, :platform=>"bot"}, {:app=>"Timpi search crawler", :match=>{"regex"=>"Timpibot/"}, :platform=>"bot"}, {:app=>"Tiny Tiny RSS", :match=>{"regex"=>"^Tiny Tiny RSS/"}, :platform=>"bot"}, {:app=>"Trendsmap Resolver", :match=>{"regex"=>"TrendsmapResolver/"}, :platform=>"bot"}, {:app=>"Twingly Bot", :match=>{"regex"=>"Twingly Recon;"}, :platform=>"bot"}, {:app=>"Twitterbot", :match=>{"regex"=>"^Twitterbot"}, :platform=>"bot"}, {:app=>"Typhoeus", :match=>{"regex"=>"^Typhoeus"}, :platform=>"bot"}, {:app=>"UCast", :match=>{"regex"=>"^UCast/"}, :platform=>"bot"}, {:app=>"TelegramBot", :match=>{"regex"=>"^TelegramBot "}, :platform=>"bot"}, {:app=>"theTradeDesk Content Web Scraper", :match=>{"regex"=>"TTD-Content"}, :platform=>"bot"}, {:app=>"Veritone Engine Toolkit", :match=>{"regex"=>"^veritone/engine-toolkit"}, :platform=>"bot"}, {:app=>"Vurbl", :match=>{"regex"=>"VurblBot"}, :platform=>"bot"}, {:app=>"Wget", :match=>{"regex"=>"Wget"}, :platform=>"bot"}, {:app=>"weborama", :match=>{"regex"=>"^weborama-fetcher"}, :platform=>"bot"}, {:app=>"Windows Crawler", :match=>{"regex"=>"^ZDM/.*Windows"}, :platform=>"bot"}, {:app=>"Windows PowerShell", :match=>{"regex"=>"WindowsPowerShell/"}, :platform=>"bot"}, {:app=>"WordPress", :match=>{"regex"=>"^WordPress"}, :platform=>"bot"}, {:app=>"wsrv.nl", :match=>{"regex"=>"https?://wsrv.nl/"}, :platform=>"bot"}, {:app=>"YaCy", :match=>{"regex"=>"^yacybot"}, :platform=>"bot"}, {:app=>"Yahoo Crawler", :match=>{"regex"=>"Yahoo! Slurp"}, :platform=>"bot"}, {:app=>"YandexBot", :match=>{"regex"=>"YandexBot/"}, :platform=>"bot"}, {:app=>"Zapier", :match=>{"regex"=>"^Zapier$"}, :platform=>"bot"}, {:app=>"Zencast", :match=>{"regex"=>"^Zencastr/"}, :platform=>"bot"}].freeze
3
+ BOTS_RULES = [{:app=>"AAABot - unknown bot", :match=>{"regex"=>"AAABot"}, :platform=>"bot"}, {:app=>"Adswizz", :match=>{"regex"=>"^AIS VirtualListener"}, :platform=>"bot"}, {:app=>"ma Podcast (agma) Bot", :match=>{"regex"=>"^agma/"}, :platform=>"bot"}, {:app=>"AhrefsBot", :match=>{"regex"=>"AhrefsBot/"}, :platform=>"bot"}, {:app=>"AirableBot", :match=>{"regex"=>"AirableBot-Podcast/"}, :platform=>"bot"}, {:app=>"Alexa Flash Briefing cache", :match=>{"regex"=>"^AmazonNewsContentService"}, :platform=>"bot"}, {:app=>"AlignaBot", :match=>{"regex"=>"^Alignabot"}, :platform=>"bot"}, {:app=>"All Ears", :match=>{"regex"=>"^AllEars/"}, :platform=>"bot"}, {:app=>"Amazon Music Podcasts Bot", :match=>{"regex"=>"^Amazon Music Podcast"}, :platform=>"bot"}, {:app=>"Anchor Importer", :match=>{"regex"=>"AnchorImport"}, :platform=>"bot"}, {:app=>"Apple Notes share extension", :match=>{"regex"=>"^com.apple.(mobilenotes.SharingExtension|Notes.SharingExtension)/"}, :platform=>"bot"}, {:app=>"Apple Podcasts (Watch)", :match=>{"regex"=>"^atc/|\\(null\\) watchOS/"}, :platform=>"bot"}, {:app=>"Apple Podcasts automated checks", :match=>{"regex"=>"(iTMS|itunesstored|itms)"}, :platform=>"bot"}, {:app=>"Applebot", :match=>{"regex"=>"^Applebot/"}, :platform=>"bot"}, {:app=>"Archive.org", :match=>{"regex"=>"archive\\.org_bot"}, :platform=>"bot"}, {:app=>"atheerfm", :match=>{"regex"=>"^atheerfm/"}, :platform=>"bot"}, {:app=>"Audiomack", :match=>{"regex"=>"^Audiomack Podcast Processor/"}, :platform=>"bot"}, {:app=>"AudioWave feed parser", :match=>{"regex"=>"^AudioWaveBot/1\\.0"}, :platform=>"bot"}, {:app=>"AwarioSmartBot", :match=>{"regex"=>"^AwarioSmartBot/"}, :platform=>"bot"}, {:app=>"Babbar", :match=>{"regex"=>"Barkrowler/"}, :platform=>"bot"}, {:app=>"Baidu", :match=>{"regex"=>"\\(ce\\.baidu\\.com"}, :platform=>"bot"}, {:app=>"bbot", :match=>{"regex"=>"^bbot/"}, :platform=>"bot"}, {:app=>"Beacon Podcast Sync", :match=>{"regex"=>"^Beacon/\\d"}, :platform=>"bot"}, {:app=>"British Library", :match=>{"regex"=>"^bl\\.uk_ldfc_bot"}, :platform=>"bot"}, {:app=>"Blubrry Migration Service", :match=>{"regex"=>"^Blubrry Migration Service"}, :platform=>"bot"}, {:app=>"Bullhorn Crawler", :match=>{"regex"=>"^BullhornCrawler/"}, :platform=>"bot"}, {:app=>"Buzzsprout Importer", :match=>{"regex"=>"^Buzzsprout Importer"}, :platform=>"bot"}, {:app=>"Bytespider.*bytedance", :match=>{"regex"=>"Bytespider"}, :platform=>"bot"}, {:app=>"CastFeedValidator", :match=>{"regex"=>"^CastFeedValidator/"}, :platform=>"bot"}, {:app=>"Castopod", :match=>{"regex"=>"Castopod/\\d"}, :platform=>"bot"}, {:app=>"Chartable", :match=>{"regex"=>"^Trackable/"}, :platform=>"bot"}, {:app=>"Clark-Crawler, unknown", :match=>{"regex"=>"^clark-crawler2"}, :platform=>"bot"}, {:app=>"Claudebot", :match=>{"regex"=>"ClaudeBot/"}, :platform=>"bot"}, {:app=>"Critical Mention", :match=>{"regex"=>"^Podcast-CriticalMention/"}, :platform=>"bot"}, {:app=>"curl", :match=>{"regex"=>"^curl|^libcurl/|^PycURL/| curl/"}, :platform=>"bot"}, {:app=>"DataforSEO", :match=>{"regex"=>"DataForSeoBot/"}, :platform=>"bot"}, {:app=>"Datagnion Bot", :match=>{"regex"=>"^datagnionbot"}, :platform=>"bot"}, {:app=>"dataprovider.com", :match=>{"regex"=>"Dataprovider\\.com"}, :platform=>"bot"}, {:app=>"Daum", :match=>{"regex"=>"http://cs\\.daum\\.net"}, :platform=>"bot"}, {:app=>"Deepcast Podcast Sync", :match=>{"regex"=>"^DeepCast/\\d.*Sync"}, :platform=>"bot"}, {:app=>"Deezer Podcasters", :match=>{"regex"=>"^Deezer Podcasters/1\\.0"}, :platform=>"bot"}, {:app=>"Digg", :match=>{"regex"=>"^Digg "}, :platform=>"bot"}, {:app=>"dorada", :match=>{"regex"=>"support@dorada\\.co\\.uk"}, :platform=>"bot"}, {:app=>"DotBot", :match=>{"regex"=>"DotBot"}, :platform=>"bot"}, {:app=>"Downcast Bot", :match=>{"regex"=>"downcast feed consumer/"}, :platform=>"bot"}, {:app=>"DuckDuckBot", :match=>{"regex"=>"DuckDuckBot"}, :platform=>"bot"}, {:app=>"F-Secure Riddler", :match=>{"regex"=>"^Riddler "}, :platform=>"bot"}, {:app=>"Facebook Bot", :match=>{"regex"=>"FacebookBot|f?acebookexternalhit/?|^podcastbot$|Facebot|facebookexternalua|^facebookplatform/"}, :platform=>"bot"}, {:app=>"Feedly", :match=>{"regex"=>"^Feedly/"}, :platform=>"bot"}, {:app=>"Feedspot Fetcher", :match=>{"regex"=>"https://www\\.feedspot\\.com/fs/fetcher"}, :platform=>"bot"}, {:app=>"FlexGet", :match=>{"regex"=>"^FlexGet/"}, :platform=>"bot"}, {:app=>"Flipboard Proxy", :match=>{"regex"=>"FlipboardProxy/"}, :platform=>"bot"}, {:app=>"Fyyd", :match=>{"regex"=>"^fyyd-poll"}, :platform=>"bot"}, {:app=>"Go Storage Gateway V1", :match=>{"regex"=>"^storagegw-v1-go$"}, :platform=>"bot"}, {:app=>"Goodpods Bot", :match=>{"regex"=>"Goodpods/\\d+\\.\\d+"}, :platform=>"bot"}, {:app=>"Google Adsense Bot", :match=>{"regex"=>"Mediapartners-Google"}, :platform=>"bot"}, {:app=>"Google AdsBot", :match=>{"regex"=>"AdsBot-Google"}, :platform=>"bot"}, {:app=>"Google Podcasts Manager", :match=>{"regex"=>"Google-Podcast"}, :platform=>"bot"}, {:app=>"Googlebot", :match=>{"regex"=>"Googlebot/|Googlebot-Video/|Googlebot-Image/|^Feedfetcher-Google|google-xrawler|^Googlebot-News|^Google-Safety$"}, :platform=>"bot"}, {:app=>"Gumball", :match=>{"regex"=>"^Gumball"}, :platform=>"bot"}, {:app=>"Headliner", :match=>{"regex"=>"^Headliner/.*\\+https://headliner\\.app$"}, :platform=>"bot"}, {:app=>"HubSpot Crawler", :match=>{"regex"=>"HubSpot Crawler"}, :platform=>"bot"}, {:app=>"Internet Archive", :match=>{"regex"=>"Archive-It;|web\\.archive\\.org"}, :platform=>"bot"}, {:app=>"iOS share menu", :match=>{"regex"=>"^SharingUIService/"}, :platform=>"bot"}, {:app=>"IPFS Podcasting Node", :match=>{"regex"=>"^IPFS Podcasting Node/"}, :platform=>"bot"}, {:app=>"Jaunt", :match=>{"regex"=>"^Jaunt/"}, :platform=>"bot"}, {:app=>"l'Institut national de l'audiovisuel", :match=>{"regex"=>"INA dlweb"}, :platform=>"bot"}, {:app=>"Library and Archives Canada", :match=>{"regex"=>"LAC_IAHarvester/"}, :platform=>"bot"}, {:app=>"Libsyn", :match=>{"regex"=>"^Libsyn4"}, :platform=>"bot"}, {:app=>"libwww-perl", :match=>{"regex"=>"^libwww-perl| libwww-perl"}, :platform=>"bot"}, {:app=>"Livelap Crawler", :match=>{"regex"=>"LivelapBot"}, :platform=>"bot"}, {:app=>"ListenNotes", :match=>{"regex"=>"^ListenNotes/3\\.0 \\("}, :platform=>"bot"}, {:app=>"LTX71", :match=>{"regex"=>"^ltx71 "}, :platform=>"bot"}, {:app=>"MacOS share menu", :match=>{"regex"=>"^ShareSheetUI/"}, :platform=>"bot"}, {:app=>"MauiBot", :match=>{"regex"=>"^MauiBot"}, :platform=>"bot"}, {:app=>"Mastodon Bot", :match=>{"regex"=>"rb/.*Mastodon/"}, :platform=>"bot"}, {:app=>"Metacast Crawler", :match=>{"regex"=>"^Metacast/.* Crawler"}, :platform=>"bot"}, {:app=>"Microsoft Bingbot", :match=>{"regex"=>"(BingPreview/|adidxbot/|[bB]ingbot/)"}, :platform=>"bot"}, {:app=>"Microsoft Office", :match=>{"regex"=>"ms-office; MSOffice"}, :platform=>"bot"}, {:app=>"Mixcloud Podcast Importer", :match=>{"regex"=>"^MixcloudPodcastImporter/"}, :platform=>"bot"}, {:app=>"MJ12bot", :match=>{"regex"=>".*MJ12bot"}, :platform=>"bot"}, {:app=>"Mozilla Bot", :match=>{"regex"=>"^'?Mozilla(/5\\.0(\\.\\.\\.)?)?$|^\\(Mozilla/5\\.0\\)$"}, :platform=>"bot"}, {:app=>"MSN Bot", :match=>{"regex"=>"^msnbot/"}, :platform=>"bot"}, {:app=>"Neevabot", :match=>{"regex"=>".*Neevabot"}, :platform=>"bot"}, {:app=>"Netcraft Survey Agent", :match=>{"regex"=>" NetcraftSurveyAgent/"}, :platform=>"bot"}, {:app=>"Newspaper", :match=>{"regex"=>"^newspaper/\\d"}, :platform=>"bot"}, {:app=>"OgScrper", :match=>{"regex"=>"OgScrper"}, :platform=>"bot"}, {:app=>"OkDownload", :match=>{"regex"=>"^OkDownload/"}, :platform=>"bot"}, {:app=>"OP3 Fetcher", :match=>{"regex"=>"^op3-fetcher/"}, :platform=>"bot"}, {:app=>"OpenAI GPTBot", :match=>{"regex"=>"GPTBot/"}, :platform=>"bot"}, {:app=>"Overcast feed parser", :match=>{"regex"=>"^Overcast/1\\.0 Podcast Sync"}, :platform=>"bot"}, {:app=>"Pandora RSS crawler", :match=>{"regex"=>"^PandoraRSSCrawler"}, :platform=>"bot"}, {:app=>"PaperLi", :match=>{"regex"=>"PaperLiBot/"}, :platform=>"bot"}, {:app=>"PetalBot", :match=>{"regex"=>"PetalBot"}, :platform=>"bot"}, {:app=>"Pingdom", :match=>{"regex"=>"^Pingdom"}, :platform=>"bot"}, {:app=>"PlayerFM Podcast Sync", :match=>{"regex"=>"PlayerFM/.* Podcast Sync"}, :platform=>"bot"}, {:app=>"Podbean Importer", :match=>{"regex"=>"^Podbean Importer"}, :platform=>"bot"}, {:app=>"Podcastindex.org", :match=>{"regex"=>"^Podcastindex\\.org/"}, :platform=>"bot"}, {:app=>"Podcast de facto Standard", :match=>{"regex"=>"^PodcastStandard/"}, :platform=>"bot"}, {:app=>"Podcast Archiver", :match=>{"regex"=>"^Podcast%20Archiver/"}, :platform=>"bot"}, {:app=>"Podcast Archiver (janw)", :match=>{"regex"=>"^podcast-archiver/v\\d"}, :platform=>"bot"}, {:app=>"Podcastics", :match=>{"regex"=>"^Podcastics$"}, :platform=>"bot"}, {:app=>"PodCloud", :match=>{"regex"=>"podCloud"}, :platform=>"bot"}, {:app=>"Podcorn", :match=>{"regex"=>"Podcorn/"}, :platform=>"bot"}, {:app=>"PodderBot", :match=>{"regex"=>"PodderBot/"}, :platform=>"bot"}, {:app=>"Podfollow", :match=>{"regex"=>"podfollowbot/"}, :platform=>"bot"}, {:app=>"Podgrab", :match=>{"regex"=>"^Podgrab$"}, :platform=>"bot"}, {:app=>"Podhound", :match=>{"regex"=>"PodhoundBeta"}, :platform=>"bot"}, {:app=>"Podio Bot", :match=>{"regex"=>"^Podio/"}, :platform=>"bot"}, {:app=>"Podmon Bot", :match=>{"regex"=>"^Podmonbot/"}, :platform=>"bot"}, {:app=>"Podnews", :match=>{"regex"=>"PodnewsBot"}, :platform=>"bot"}, {:app=>"Podnods Bot", :match=>{"regex"=>"(podnods-crawler|podnods)"}, :platform=>"bot"}, {:app=>"Podplay Podcast Sync", :match=>{"regex"=>"^Podplay-Podcast-Sync/"}, :platform=>"bot"}, {:app=>"Podroll Analyzer", :match=>{"regex"=>"^pdrl\\.fm "}, :platform=>"bot"}, {:app=>"Podscan Bot", :match=>{"regex"=>"^PodscanBot/"}, :platform=>"bot"}, {:app=>"Podscribe", :match=>{"regex"=>"(^Adswizz-podscribe/|^Podscribe/)"}, :platform=>"bot"}, {:app=>"PodUptime", :match=>{"regex"=>"(PodUptime|PodUptimeBot)/\\d"}, :platform=>"bot"}, {:app=>"Podverse Feed Parser", :match=>{"regex"=>"^Podverse/Feed Parser"}, :platform=>"bot"}, {:app=>"PodvineBot", :match=>{"regex"=>"^PodvineBot/"}, :platform=>"bot"}, {:app=>"PostRank Bot", :match=>{"regex"=>"^PostRank/"}, :platform=>"bot"}, {:app=>"PodwatchPro", :match=>{"regex"=>"Podwatch-Pro Crawler"}, :platform=>"bot"}, {:app=>"Puppeteer", :match=>{"regex"=>" HeadlessChrome/\\d"}, :platform=>"bot"}, {:app=>"python-requests", :match=>{"regex"=>"python-requests"}, :platform=>"bot"}, {:app=>"Qiniu spider", :match=>{"regex"=>"qiniu.*spider"}, :platform=>"bot"}, {:app=>"Radioline Stream Monitoring", :match=>{"regex"=>"^Radioline Stream Monitoring"}, :platform=>"bot"}, {:app=>"RedCircle", :match=>{"regex"=>"RedCircle"}, :platform=>"bot"}, {:app=>"Rephonic", :match=>{"regex"=>"^Rephonic/\\d"}, :platform=>"bot"}, {:app=>"Ridder Bot", :match=>{"regex"=>" RidderBot/"}, :platform=>"bot"}, {:app=>"RSS to Telegram", :match=>{"regex"=>"^RSStT"}, :platform=>"bot"}, {:app=>"RSSRadio", :match=>{"regex"=>"^RSSRadio \\("}, :platform=>"bot"}, {:app=>"Ruby Mechanize", :match=>{"regex"=>"^Mechanize|[ -]Mechanize/"}, :platform=>"bot"}, {:app=>"Screaming Frog SEO Spider", :match=>{"regex"=>"^Screaming Frog "}, :platform=>"bot"}, {:app=>"SearchAtlas.com SEO Crawler", :match=>{"regex"=>"^SearchAtlas.*Crawler"}, :platform=>"bot"}, {:app=>"SEMrushBot", :match=>{"regex"=>"SemrushBot/|^SEMrushBot$"}, :platform=>"bot"}, {:app=>"Serendeputy", :match=>{"regex"=>"SerendeputyBot/"}, :platform=>"bot"}, {:app=>"Simplecast", :match=>{"regex"=>"^Simplecast$"}, :platform=>"bot"}, {:app=>"Slack Bot", :match=>{"regex"=>"^Slackbot 1\\.0"}, :platform=>"bot"}, {:app=>"Snapchat Bot", :match=>{"regex"=>"://developers\\.snap\\.com/robots"}, :platform=>"bot"}, {:app=>"SoundOn Bot", :match=>{"regex"=>"^SoundOn/[\\d.]+\\s+\\(bot"}, :platform=>"bot"}, {:app=>"Speechmatics ASR", :match=>{"regex"=>"^Speechmatics-API/"}, :platform=>"bot"}, {:app=>"Spotify cache service", :match=>{"regex"=>"^Spotify/1\\.0$"}, :platform=>"bot"}, {:app=>"Stitcher Bot", :match=>{"regex"=>"^StitcherBot"}, :platform=>"bot"}, {:app=>"Substack Content Fetcher", :match=>{"regex"=>"^SubstackContentFetch/"}, :platform=>"bot"}, {:app=>"SupportingCast", :match=>{"regex"=>"^SupportingCast(/.*)?$"}, :platform=>"bot"}, {:app=>"Taddy Podcast API", :match=>{"regex"=>"^Taddy Podcast API "}, :platform=>"bot"}, {:app=>"Timpi search crawler", :match=>{"regex"=>"Timpibot/"}, :platform=>"bot"}, {:app=>"Tiny Tiny RSS", :match=>{"regex"=>"^Tiny Tiny RSS/"}, :platform=>"bot"}, {:app=>"Transistor", :match=>{"regex"=>"^Transistor\\.fm/"}, :platform=>"bot"}, {:app=>"Trendsmap Resolver", :match=>{"regex"=>"TrendsmapResolver/"}, :platform=>"bot"}, {:app=>"Triton Digital Podcast Sync", :match=>{"regex"=>"^Triton Digital Podcast Sync$"}, :platform=>"bot"}, {:app=>"TurnitinBot", :match=>{"regex"=>"^Turnitin \\("}, :platform=>"bot"}, {:app=>"Twingly Bot", :match=>{"regex"=>"Twingly Recon;"}, :platform=>"bot"}, {:app=>"Twitterbot", :match=>{"regex"=>"^Twitterbot"}, :platform=>"bot"}, {:app=>"Typhoeus", :match=>{"regex"=>"^Typhoeus"}, :platform=>"bot"}, {:app=>"UCast", :match=>{"regex"=>"^UCast/"}, :platform=>"bot"}, {:app=>"UptimeRobot", :match=>{"regex"=>"UptimeRobot/\\d"}, :platform=>"bot"}, {:app=>"TelegramBot", :match=>{"regex"=>"^TelegramBot "}, :platform=>"bot"}, {:app=>"theTradeDesk Content Web Scraper", :match=>{"regex"=>"TTD-Content"}, :platform=>"bot"}, {:app=>"Veritone Engine Toolkit", :match=>{"regex"=>"^veritone/engine-toolkit"}, :platform=>"bot"}, {:app=>"Vurbl", :match=>{"regex"=>"VurblBot"}, :platform=>"bot"}, {:app=>"Wget", :match=>{"regex"=>"Wget"}, :platform=>"bot"}, {:app=>"weborama", :match=>{"regex"=>"^weborama-fetcher"}, :platform=>"bot"}, {:app=>"Windows Crawler", :match=>{"regex"=>"^ZDM/.*Windows"}, :platform=>"bot"}, {:app=>"Windows PowerShell", :match=>{"regex"=>"WindowsPowerShell/"}, :platform=>"bot"}, {:app=>"WordPress", :match=>{"regex"=>"^WordPress"}, :platform=>"bot"}, {:app=>"wsrv.nl", :match=>{"regex"=>"https?://wsrv.nl/"}, :platform=>"bot"}, {:app=>"YaCy", :match=>{"regex"=>"^yacybot"}, :platform=>"bot"}, {:app=>"Yahoo Crawler", :match=>{"regex"=>"Yahoo! Slurp"}, :platform=>"bot"}, {:app=>"YandexBot", :match=>{"regex"=>"YandexBot/"}, :platform=>"bot"}, {:app=>"Zapier", :match=>{"regex"=>"^Zapier$"}, :platform=>"bot"}, {:app=>"Zencast", :match=>{"regex"=>"^Zencastr/"}, :platform=>"bot"}].freeze
@@ -1,3 +1,3 @@
1
1
  # DO NOT EDIT THIS FILE - it gets automatically generated by running "bin/parse-rules"
2
2
 
3
- CUSTOM_BOTS_RULES = [{:app=>"curl", :match=>{"regex"=>"^Faraday"}, :platform=>"bot"}, {:app=>"curl", :match=>{"regex"=>"like curl"}, :platform=>"bot"}].freeze
3
+ CUSTOM_BOTS_RULES = [{:app=>"Apache HTTPClient", :match=>{"regex"=>"^Apache\\-HttpClient"}, :platform=>"bot"}, {:app=>"curl", :match=>{"regex"=>"^Faraday"}, :platform=>"bot"}, {:app=>"curl", :match=>{"regex"=>"like curl"}, :platform=>"bot"}].freeze
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PodIdent
4
- VERSION = '1.1.5'
4
+ VERSION = '1.1.7'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pod_ident
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Podigee GmbH
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-11 00:00:00.000000000 Z
11
+ date: 2024-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
137
  requirements: []
138
- rubygems_version: 3.5.4
138
+ rubygems_version: 3.5.22
139
139
  signing_key:
140
140
  specification_version: 4
141
141
  summary: Identifies podcast client user agents