pod_ident 1.1.5 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
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