podcast_agent_parser 0.1.3 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +1 -1
  4. data/vendor/opawg/user-agents.json +1143 -131
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b17e692e81a51f6f45fe2c018821ef79db3ee894b06396d951de2d27fa1f256
4
- data.tar.gz: 94563f6e80cedc5807f6e5d0febe560fbf1a421d4995911eccbbfdd51db42bd4
3
+ metadata.gz: d96399255509f352a7ff8a5926207cf7948db054f946506f3f9bab459f91fc41
4
+ data.tar.gz: 76a0e109002166ca42d40581a7e02ddffc8f309f5d4af811ac64697a464fed8f
5
5
  SHA512:
6
- metadata.gz: c472822620f50aa3fbe27788dfbe1ea1880aa40e9f6bd9c9103dae95da6a9f8be8c2b837f93df4b498f6d42b5168a1159f5bd94d70f7d18a64a98fa78361d1a4
7
- data.tar.gz: 5f1a4126e2224db2b065d916b76c0fbced60d01b9b091c62a72be87fce4a26c3519dba25053eadfcc9155de64d385e6abec3721a1d5362a4b5dd1321995fdbf2
6
+ metadata.gz: 2da1416c7b8d9f055cf0cfaec290c4aae4397762beaafd19a4040e9d2c33be4dd122de37a3d73325c72f151986d3a2d97369c06f2bb6e5ff9394373844750f9d
7
+ data.tar.gz: 882a509ef28cd2ddaff4809af0b618f32fad2b1d9116a68a708a9be3fd0b6cf0540e7ad12a8757c3198406502fd38358c879ced1a52e4467027e24a9bc261446
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2019 Dan Benjamin
1
+ Copyright 2020 Dan Benjamin
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -5,7 +5,7 @@ The Podcast Agent Parser is a user agent parser written in Ruby, using [regex pa
5
5
  Installation:
6
6
 
7
7
  ```
8
- gem 'podcast_agent_parser', '~> 0.1.3'
8
+ gem 'podcast_agent_parser', '~> 0.1.7'
9
9
  ```
10
10
 
11
11
  Then, look up your user agents like so:
@@ -17,15 +17,33 @@
17
17
  },
18
18
  {
19
19
  "user_agents": [
20
- "^AdsBot-Google"
20
+ "AdsBot-Google"
21
21
  ],
22
- "bot": true
22
+ "app": "Google AdsBot",
23
+ "bot": true,
24
+ "info_url": "http://www.google.com/adsbot.html"
23
25
  },
24
26
  {
25
27
  "user_agents": [
26
- "AhrefsBot"
28
+ "AhrefsBot\/"
27
29
  ],
28
- "bot": true
30
+ "app": "AhrefsBot",
31
+ "bot": true,
32
+ "info_url": "http://ahrefs.com/robot/",
33
+ "examples": [
34
+ "Mozilla/5.0 (compatible; AhrefsBot/7.0; http://ahrefs.com/robot/)"
35
+ ]
36
+ },
37
+ {
38
+ "user_agents": [
39
+ "^Airr/"
40
+ ],
41
+ "app": "Airr",
42
+ "info_url": "https://www.airr.io/",
43
+ "examples": [
44
+ "Airr/3787 CFNetwork/1128.0.1 Darwin/19.6.0",
45
+ "Airr/4070 CFNetwork/1206 Darwin/20.1.0"
46
+ ]
29
47
  },
30
48
  {
31
49
  "user_agents": [
@@ -42,11 +60,61 @@
42
60
  "user_agents": [
43
61
  "^AmazonNewsContentService"
44
62
  ],
45
- "app": "Amazon Alexa Flash Briefing caching service",
63
+ "app": "Alexa Flash Briefing cache",
46
64
  "description": "A service which downloads, caches and normalises audio for the Flash Briefing service on Alexa-enabled devices",
47
65
  "os": "alexa",
48
66
  "info_url": "https://developer.amazon.com/docs/flashbriefing/flash-briefing-skill-api-feed-reference.html#performance-requirements",
49
- "developer_notes": "Stats are available within the Alexa skills dashboard",
67
+ "developer_notes": "Stats are available within the Alexa skills dashboard.",
68
+ "svg": "amazon.svg",
69
+ "bot": true
70
+ },
71
+ {
72
+ "user_agents": [
73
+ "^AmazonMusic(?!.iPhone|Android)"
74
+ ],
75
+ "examples": [
76
+ "AmazonMusic"
77
+ ],
78
+ "app": "Amazon Music Podcasts",
79
+ "description": "A music and podcasts streaming app",
80
+ "svg": "amazon.svg"
81
+ },
82
+ {
83
+ "user_agents": [
84
+ "^AmazonMusic.*iPhone"
85
+ ],
86
+ "examples": [
87
+ "AmazonMusic/9.15.2 iPhone7,2 CFNetwork/978.0.7 Darwin/18.7.0",
88
+ "AmazonMusic/9.16.1 iPhone9,1 CFNetwork/1128.0.1 Darwin/19.6.0",
89
+ "AmazonMusic/9.16.0 iPhone12,1 CFNetwork/1128.0.1 Darwin/19.6.0"
90
+ ],
91
+ "app": "Amazon Music Podcasts",
92
+ "description": "A music and podcasts streaming app",
93
+ "os": "ios",
94
+ "device": "phone",
95
+ "developer_notes": "Examples are from an Amazon contact",
96
+ "svg": "amazon.svg"
97
+ },
98
+ {
99
+ "user_agents": [
100
+ "^AmazonMusic.*Android"
101
+ ],
102
+ "examples": [
103
+ "AmazonMusic/16.17.0 Dalvik/2.1.0 (Linux; U; Android 6.0.1; vivo 1610 Build/MMB29M)"
104
+ ],
105
+ "app": "Amazon Music Podcasts",
106
+ "description": "A music and podcasts streaming app",
107
+ "os": "android",
108
+ "developer_notes": "Examples are from an Amazon contact",
109
+ "svg": "amazon.svg"
110
+ },
111
+ {
112
+ "user_agents": [
113
+ "^Amazon Music Podcast"
114
+ ],
115
+ "app": "Amazon Music Podcasts",
116
+ "description": "A music and podcasts streaming app",
117
+ "developer_notes": "Backend ingestion service",
50
118
  "svg": "amazon.svg",
51
119
  "bot": true
52
120
  },
@@ -61,12 +129,19 @@
61
129
  },
62
130
  {
63
131
  "user_agents": [
64
- "Android 5.*ford/"
132
+ "^com.audible.playersdk.player",
133
+ "^Audible,"
65
134
  ],
66
- "app": "Amazon Kindle Fire",
67
- "device": "tablet",
135
+ "app": "Audible",
68
136
  "os": "android"
69
137
  },
138
+ {
139
+ "user_agents": [
140
+ "^Audible.*Darwin"
141
+ ],
142
+ "app": "Audible",
143
+ "os": "ios"
144
+ },
70
145
  {
71
146
  "user_agents": [
72
147
  "^AndroidDownloadManager"
@@ -83,6 +158,15 @@
83
158
  "de.danoeh.antennapod/1.7.3b (Linux;Android 8.0.0) ExoPlayerLib/2.9.3"
84
159
  ],
85
160
  "info_url": "https://github.com/AntennaPod/AntennaPod",
161
+ "os": "android",
162
+ "developer_notes": "The de.danoeh version was used when streaming only, and will been phased out as of v2"
163
+ },
164
+ {
165
+ "user_agents": [
166
+ "^Anytime.+[aA]ndroid"
167
+ ],
168
+ "app": "Anytime Podcast Player",
169
+ "device": "phone",
86
170
  "os": "android"
87
171
  },
88
172
  {
@@ -95,12 +179,13 @@
95
179
  "user_agents": [
96
180
  "^AppleCoreMedia/1\\..*iPod"
97
181
  ],
98
- "app": "Apple Podcasts",
99
182
  "device": "mp3_player",
100
183
  "examples": [
101
184
  "AppleCoreMedia/1.0.0.16G114 (iPod touch; U; CPU OS 12_4_2 like Mac OS X; en_us)"
102
185
  ],
103
- "os": "ios"
186
+ "os": "ios",
187
+ "description": "AppleCoreMedia library",
188
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
104
189
  },
105
190
  {
106
191
  "user_agents": [
@@ -109,67 +194,91 @@
109
194
  "examples": [
110
195
  "AppleCoreMedia/1.0.0.19A583 (Macintosh; U; Intel Mac OS X 10_15; en_us)"
111
196
  ],
112
- "app": "Apple Podcasts",
113
197
  "device": "pc",
114
198
  "os": "macos",
115
- "description": "The Apple Podcasts app on MacOS Catalina and above",
116
- "developer_notes": "Used when progressively downloading podcasts"
199
+ "description": "AppleCoreMedia library",
200
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
117
201
  },
118
202
  {
119
203
  "user_agents": [
120
204
  "^AppleCoreMedia/1\\..*iPhone"
121
205
  ],
122
- "app": "Apple Podcasts",
123
206
  "device": "phone",
124
207
  "examples": [
125
208
  "AppleCoreMedia/1.0.0.15G77 (iPhone; U; CPU OS 11_4_1 like Mac OS X; en_us)"
126
209
  ],
127
- "os": "ios"
210
+ "os": "ios",
211
+ "description": "AppleCoreMedia library",
212
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
128
213
  },
129
214
  {
130
215
  "user_agents": [
131
216
  "^AppleCoreMedia/1\\..*iPad"
132
217
  ],
133
- "app": "Apple Podcasts",
134
218
  "device": "tablet",
135
219
  "examples": [
136
220
  "AppleCoreMedia/1.0.0.17A860 (iPad; U; CPU OS 13_1_2 like Mac OS X; en_us)"
137
221
  ],
138
- "os": "ios"
222
+ "os": "ios",
223
+ "description": "AppleCoreMedia library",
224
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
139
225
  },
140
226
  {
141
227
  "user_agents": [
142
228
  "^AppleCoreMedia/1\\..*HomePod"
143
229
  ],
144
- "app": "Apple Podcasts",
145
230
  "device": "speaker",
146
231
  "examples": [
147
232
  "AppleCoreMedia/1.0.0.16G78 (HomePod; U; CPU OS 12_4 like Mac OS X; en_us)"
148
233
  ],
149
- "os": "homepod_os"
234
+ "os": "homepodos",
235
+ "description": "AppleCoreMedia library",
236
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
150
237
  },
151
238
  {
152
239
  "user_agents": [
153
240
  "^AppleCoreMedia/1\\..*Apple TV"
154
241
  ],
155
- "app": "Apple Podcasts",
156
242
  "device": "tv",
157
243
  "examples": [
158
244
  "AppleCoreMedia/1.0.0.17J586 (Apple TV; U; CPU OS 13_0 like Mac OS X; en_us)"
159
245
  ],
160
- "os": "tvos"
246
+ "os": "tvos",
247
+ "description": "AppleCoreMedia library",
248
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
249
+ },
250
+ {
251
+ "user_agents": [
252
+ "^AppleCoreMedia/1\\..*Apple Watch"
253
+ ],
254
+ "device": "watch",
255
+ "os": "watchos",
256
+ "description": "AppleCoreMedia library",
257
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
161
258
  },
162
259
  {
163
260
  "user_agents": [
164
- "^AppleCoreMedia/1\\..*Apple Watch",
165
- "watchOS/"
261
+ "^atc\/.* watchOS\/.* model\/Watch"
166
262
  ],
167
263
  "app": "Apple Podcasts",
168
264
  "device": "watch",
265
+ "os": "watchos",
266
+ "bot": true,
267
+ "developer_notes": "All of these examples given are verified (via stamping the audio URL with the RSS useragent) as being sourced from Apple Podcasts; and accordingly this is marked as a bot since these downloads are duplicated with the phone.",
169
268
  "examples": [
170
- "atc/1.0 watchOS/6.0.1 model/Watch4,1 hwp/t8006 build/17R605 (6; dt:190)"
171
- ],
172
- "os": "watchos"
269
+ "atc/1.0 watchOS/6.2 model/Watch3,3 hwp/t8004 build/17T529 (6; dt:155)",
270
+ "atc/1.0 watchOS/6.2.8 model/Watch2,3 hwp/t8002 build/17U63 (6; dt:133)",
271
+ "atc/1.0 watchOS/6.2.8 model/Watch3,3 hwp/t8004 build/17U63 (6; dt:155)",
272
+ "atc/1.0 watchOS/6.2.8 model/Watch4,2 hwp/t8006 build/17U63 (6; dt:191)",
273
+ "atc/1.0 watchOS/7.0.2 model/Watch5,10 hwp/t8006 build/18R402 (6; dt:233)",
274
+ "atc/1.0 watchOS/7.0.2 model/Watch5,11 hwp/t8006 build/18R402 (6; dt:234)",
275
+ "atc/1.0 watchOS/7.1 model/Watch4,2 hwp/t8006 build/18R590 (6; dt:191)",
276
+ "atc/1.0 watchOS/7.1 model/Watch4,3 hwp/t8006 build/18R590 (6; dt:192)",
277
+ "atc/1.0 watchOS/7.1 model/Watch4,4 hwp/t8006 build/18R590 (6; dt:193)",
278
+ "atc/1.0 watchOS/7.1 model/Watch5,1 hwp/t8006 build/18R590 (6; dt:201)",
279
+ "atc/1.0 watchOS/7.1 model/Watch5,3 hwp/t8006 build/18R590 (6; dt:202)",
280
+ "atc/1.0 watchOS/7.1 model/Watch5,4 hwp/t8006 build/18R590 (6; dt:202)"
281
+ ]
173
282
  },
174
283
  {
175
284
  "user_agents": [
@@ -182,7 +291,6 @@
182
291
  "^Podcast’ler/.*\\(.*\\)",
183
292
  "^Podkaster/.*\\(.*\\)",
184
293
  "^Podcaster/.*\\(.*\\)",
185
- "^Podcast/.*\\(.*\\)",
186
294
  "^Podcastok/.*\\(.*\\)",
187
295
  "^Подкасти/.*\\(.*\\)",
188
296
  "^Подкасты/.*\\(.*\\)",
@@ -214,7 +322,6 @@
214
322
  "^Podcast’ler/.*\\d$",
215
323
  "^Podkaster/.*\\d$",
216
324
  "^Podcaster/.*\\d$",
217
- "^Podcast/.*\\d$",
218
325
  "^Podcastok/.*\\d$",
219
326
  "^Подкасти/.*\\d$",
220
327
  "^Подкасты/.*\\d$",
@@ -222,16 +329,15 @@
222
329
  "^البودكاست/.*\\d$",
223
330
  "^पॉडकास्ट/.*\\d$",
224
331
  "^พ็อดคาสท์/.*\\d$",
332
+ "^%E6%92%AD%E5%AE%A2/.*\\d$",
225
333
  "^播客/.*\\d$",
226
334
  "^팟캐스트/.*\\d$"
227
335
  ],
228
336
  "app": "Apple Podcasts",
229
- "os": "ios",
230
- "description": "The Apple Podcasts app on devices other than MacOS Catalina and above",
231
- "developer_notes": "Used when downloading podcasts (not progressive downloads), with support for the following languages: Arabic, Chinese, Finnish, French, English, Hebrew, Hindi, Hungarian, Korean, Polish, Romanian, Russian, Serbian, Slovenian, Swedish, Thai, Turkish",
337
+ "description": "The Apple Podcasts app",
338
+ "developer_notes": "Used when downloading podcasts (not progressive downloads). This could be on iOS or iPadOS.",
232
339
  "examples": [
233
- "Podcasts/2.6",
234
- "Podcast/1150.47 CFNetwork/811.5.4 Darwin/16.6.0"
340
+ "Podcasts/1440.4 CFNetwork/1128.0.1 Darwin/19.6.0"
235
341
  ]
236
342
  },
237
343
  {
@@ -242,6 +348,14 @@
242
348
  "device": "pc",
243
349
  "info_url": "http://lincgeek.org/bashpodder/"
244
350
  },
351
+ {
352
+ "user_agents": [
353
+ "Barkrowler\/"
354
+ ],
355
+ "app": "Babbar",
356
+ "bot": true,
357
+ "info_url": "https://beta.babbar.tech/crawler"
358
+ },
245
359
  {
246
360
  "user_agents": [
247
361
  "BBC%20Sounds/"
@@ -276,6 +390,17 @@
276
390
  "os": "android"
277
391
  },
278
392
  {
393
+ "user_agents": [
394
+ "^Bitcast/"
395
+ ],
396
+ "app": "Bitcast",
397
+ "os": "ios",
398
+ "info_url": "https://bitcast.fm/",
399
+ "examples": [
400
+ "Bitcast/336 CFNetwork/1197 Darwin/20.0.0"
401
+ ]
402
+ },
403
+ {
279
404
  "user_agents": [
280
405
  "^Bose/"
281
406
  ],
@@ -284,10 +409,17 @@
284
409
  },
285
410
  {
286
411
  "user_agents": [
287
- "^Breaker/"
412
+ "^Breaker/Android"
288
413
  ],
289
414
  "app": "Breaker",
290
- "device": "phone"
415
+ "os": "android"
416
+ },
417
+ {
418
+ "user_agents": [
419
+ "^Breaker/iOS"
420
+ ],
421
+ "app": "Breaker",
422
+ "os": "ios"
291
423
  },
292
424
  {
293
425
  "user_agents": [
@@ -320,6 +452,18 @@
320
452
  "device": "pc",
321
453
  "os": "windows"
322
454
  },
455
+ {
456
+ "user_agents": [
457
+ "BroadwayPodcastNetwork/iOS"
458
+ ],
459
+ "app": "Broadway Podcast Network",
460
+ "description": "The Broadway Podcast Network iOS App",
461
+ "device": "phone",
462
+ "examples": [
463
+ "BroadwayPodcastNetwork/iOS"
464
+ ],
465
+ "os": "ios"
466
+ },
323
467
  {
324
468
  "user_agents": [
325
469
  "^Cast(?:b|B)ox/.+Android"
@@ -327,7 +471,9 @@
327
471
  "app": "CastBox",
328
472
  "device": "phone",
329
473
  "examples": [
330
- "CastBox/8.2.6-191015245 (Linux;Android 10) ExoPlayerLib/2.10.4"
474
+ "CastBox/8.2.6-191015245 (Linux;Android 10) ExoPlayerLib/2.10.4",
475
+ "CastBox/8.19.0-200927161 (Linux;Android 10) ExoPlayerLib/2.10.4",
476
+ "CastBox/8.18.1-200917153 (Linux;Android 8.0.0) ExoPlayerLib/2.10.4"
331
477
  ],
332
478
  "os": "android"
333
479
  },
@@ -344,7 +490,7 @@
344
490
  },
345
491
  {
346
492
  "user_agents": [
347
- "^Cast(?:b|B)ox"
493
+ "^Cast(?:b|B)ox(?!.*(Android|iOS))"
348
494
  ],
349
495
  "app": "CastBox",
350
496
  "developer_notes": "There are CastBox compatible User Agents that come without Android/iOS platform marker",
@@ -363,6 +509,16 @@
363
509
  "info_url": "https://castget.johndal.com/",
364
510
  "device": "pc"
365
511
  },
512
+ {
513
+ "user_agents": [
514
+ "Castopod/1.0"
515
+ ],
516
+ "app": "Castopod",
517
+ "examples": [
518
+ "Castopod/1.0"
519
+ ],
520
+ "bot": true
521
+ },
366
522
  {
367
523
  "user_agents": [
368
524
  "Castro "
@@ -370,7 +526,8 @@
370
526
  "app": "Castro",
371
527
  "device": "phone",
372
528
  "examples": [
373
- "Castro 2019.13/1167"
529
+ "Castro 2019.13/1167",
530
+ "Castro 2020.14/1287"
374
531
  ],
375
532
  "os": "ios"
376
533
  },
@@ -416,14 +573,45 @@
416
573
  "Deezer/.*Android;"
417
574
  ],
418
575
  "app": "Deezer",
419
- "device": "phone",
420
- "os": "android"
576
+ "os": "android",
577
+ "examples": [
578
+ "Deezer/6.2.2.80 (Android; 9; Mobile; fr) samsung SM-G950F",
579
+ "Deezer/6.2.3.96 (Android; 10; Mobile; fr) samsung SM-A405FN"
580
+ ],
581
+ "info_url": "https://play.google.com/store/apps/details?id=deezer.android.app"
582
+ },
583
+ {
584
+ "user_agents": [
585
+ "^Deezer/.*CFNetwork/"
586
+ ],
587
+ "app": "Deezer",
588
+ "os": "ios",
589
+ "examples": [
590
+ "Deezer/8.13.0.4 CFNetwork/1125.2 Darwin/19.4.0"
591
+ ],
592
+ "info_url": "https://apps.apple.com/us/app/deezer-music-podcast-player/id292738169"
593
+ },
594
+ {
595
+ "user_agents": [
596
+ "^Deezer.*Electron; windows"
597
+ ],
598
+ "app": "Deezer",
599
+ "examples": [
600
+ "Deezer/4.20.0 (Electron; windows/10.0.18362; Desktop; fr)"
601
+ ],
602
+ "device": "pc",
603
+ "os": "windows"
421
604
  },
422
605
  {
423
606
  "user_agents": [
424
- "^Deezer"
607
+ "^Deezer.*Electron; osx"
608
+ ],
609
+ "app": "Deezer",
610
+ "examples": [
611
+ "Deezer/4.20.0 (Electron; osx/10.14.6; Desktop; fr)"
425
612
  ],
426
- "app": "Deezer"
613
+ "device": "pc",
614
+ "os": "macos"
427
615
  },
428
616
  {
429
617
  "user_agents": [
@@ -440,6 +628,10 @@
440
628
  "user_agents": [
441
629
  "DotBot/1"
442
630
  ],
631
+ "app": "DotBot",
632
+ "examples": [
633
+ "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)"
634
+ ],
443
635
  "bot": true
444
636
  },
445
637
  {
@@ -456,7 +648,7 @@
456
648
  },
457
649
  {
458
650
  "user_agents": [
459
- "Downcast/"
651
+ "Downcast/.*iPhone"
460
652
  ],
461
653
  "app": "Downcast",
462
654
  "device": "phone",
@@ -466,6 +658,28 @@
466
658
  "os": "ios"
467
659
  },
468
660
  {
661
+ "user_agents": [
662
+ "Downcast/.*iPad"
663
+ ],
664
+ "app": "Downcast",
665
+ "device": "tablet",
666
+ "examples": [
667
+ "Downcast/2.9.57 (iPad; iOS 14.2; Scale/2.00)"
668
+ ],
669
+ "os": "ios"
670
+ },
671
+ {
672
+ "user_agents": [
673
+ "Downcast/.*Mac OS X"
674
+ ],
675
+ "app": "Downcast",
676
+ "examples": [
677
+ "Downcast/2.9.57 (Mac OS X Version 10.15.7 (Build 19H15))"
678
+ ],
679
+ "os": "macos",
680
+ "device": "pc"
681
+ },
682
+ {
469
683
  "user_agents": [
470
684
  "Xbox.+Edge/"
471
685
  ],
@@ -473,6 +687,14 @@
473
687
  "device": "games_console",
474
688
  "os": "windows"
475
689
  },
690
+ {
691
+ "user_agents": [
692
+ "Android.+EdgA/"
693
+ ],
694
+ "app": "Microsoft Edge",
695
+ "os": "android",
696
+ "info_url": "https://play.google.com/store/apps/details?id=com.microsoft.emmx&hl=en_AU&gl=US"
697
+ },
476
698
  {
477
699
  "user_agents": [
478
700
  "Windows Phone.+Edge/"
@@ -502,9 +724,25 @@
502
724
  },
503
725
  {
504
726
  "user_agents": [
505
- "FacebookBot"
727
+ "FacebookBot",
728
+ "facebookexternalhit/"
506
729
  ],
507
- "bot": true
730
+ "bot": true,
731
+ "app": "Facebook",
732
+ "info_url": "https://www.facebook.com/externalhit_uatext.php",
733
+ "examples": [
734
+ "facebookexternalhit/1.1 ( http://www.facebook.com/externalhit_uatext.php)"
735
+ ]
736
+ },
737
+ {
738
+ "user_agents": [
739
+ "^feedly/"
740
+ ],
741
+ "app": "Feedly",
742
+ "examples": [
743
+ "feedly/81.0.1 CFNetwork/1206 Darwin/20.1.0"
744
+ ],
745
+ "description": "An RSS reader"
508
746
  },
509
747
  {
510
748
  "user_agents": [
@@ -560,7 +798,7 @@
560
798
  "user_agents": [
561
799
  "^Lavf/"
562
800
  ],
563
- "app": "ffmpeg"
801
+ "developer_notes": "ffmpeg is a library used within TuneIn, VLC, ffmpeg and other programs. This is the default useragent for the ffmpeg library. Since it's a library, not an app by itself, we don't add its name here."
564
802
  },
565
803
  {
566
804
  "user_agents": [
@@ -592,34 +830,49 @@
592
830
  "user_agents": [
593
831
  "^fyyd-poll"
594
832
  ],
833
+ "app": "Fyyd",
595
834
  "bot": true
596
835
  },
597
836
  {
598
837
  "user_agents": [
599
838
  "^Go-http-client"
600
839
  ],
601
- "bot": true
840
+ "developer_notes": "This has been seen being used by a TuneIn client, and may be within WinAMP code.",
841
+ "examples": [
842
+ "Go-http-client/2.0"
843
+ ]
602
844
  },
603
845
  {
604
846
  "user_agents": [
605
- "^Googlebot"
847
+ "Googlebot/",
848
+ "Googlebot-Video/",
849
+ "Googlebot-Image/"
850
+ ],
851
+ "examples": [
852
+ "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; http://www.google.com/bot.html)",
853
+ "Googlebot-Image/1.0"
606
854
  ],
855
+ "description": "Google's search bots",
856
+ "app": "Googlebot",
857
+ "info_url": "http://www.google.com/bot.html",
607
858
  "bot": true
608
859
  },
609
860
  {
610
861
  "user_agents": [
611
862
  "Google-Podcast"
612
863
  ],
613
- "bot": true
864
+ "bot": true,
865
+ "app": "Google Podcasts Manager"
614
866
  },
615
867
  {
616
868
  "user_agents": [
617
869
  "^Google-Speech-Actions"
618
870
  ],
619
- "app": "Google Home",
871
+ "app": "Google Assistant",
620
872
  "device": "speaker",
621
- "description": "Google Podcasts on smart speakers",
622
- "os": "google_assistant"
873
+ "developer_notes": "This is audio downloaded as a result of a Google Assistant voice action. It's unlikely to appear in podcast host logs, since voice actions can only use up to 120 seconds of audio.",
874
+ "os": "google_assistant",
875
+ "info_url": "https://cloud.google.com/text-to-speech/docs/ssml"
623
876
  },
624
877
  {
625
878
  "user_agents": [
@@ -632,24 +885,18 @@
632
885
  },
633
886
  {
634
887
  "user_agents": [
635
- "iPhone;.*GSA/",
636
- "^Podcasts$"
888
+ "(iPhone|iPad|iPod touch).*GSA/",
889
+ "^Podcasts$",
890
+ "^GooglePodcasts/"
637
891
  ],
638
892
  "app": "Google Podcasts",
639
- "device": "phone",
640
893
  "description": "Google Podcasts on iOS",
641
- "developer_notes": "'Podcasts' is the iOS app, while *GSA/ is used in the Google app when searching and playing podcasts",
642
- "os": "ios"
643
- },
644
- {
645
- "user_agents": [
646
- "iPad;.*GSA/",
647
- "^Podcasts$"
894
+ "examples": [
895
+ "GooglePodcasts/2.0.2%20iPod_touch/13.4.1%20hw/iPod9_1",
896
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/107.0.310639584 Mobile/15E148 Safari/604.1",
897
+ "Mozilla/5.0 (iPod touch; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/107.0.310639584 Mobile/15E148 Safari/601.1"
648
898
  ],
649
- "app": "Google Podcasts",
650
- "device": "tablet",
651
- "description": "Google Podcasts on iOS",
652
- "developer_notes": "'Podcasts' is the iOS app, while *GSA/ is used in the Google app when searching and playing podcasts",
899
+ "developer_notes": "'GooglePodcasts' is the iOS app, while (?:(?:iPhone|iPad|iPod touch);.+)?GSA/ is used in the Google app when searching and playing podcasts. The first useragent was simply 'Podcasts'.",
653
900
  "os": "ios"
654
901
  },
655
902
  {
@@ -660,8 +907,9 @@
660
907
  "os": "android",
661
908
  "description": "Google Podcasts on Android (the app or player)",
662
909
  "examples": [
663
- "Mozilla/5.0 (Linux; Android 10; Pixel 3a Build/QQ2A.200305.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.149 Mobile Safari/537.36 GSA/11.2.7.21.arm64"
664
- ],
910
+ "Mozilla/5.0 (Linux; Android 10; Pixel 3a Build/QQ2A.200305.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.149 Mobile Safari/537.36 GSA/11.2.7.21.arm64",
911
+ "Mozilla/5.0 (Linux; Android 10; SM-G986U Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.75 Mobile Safari/537.36 GSA/11.31.12.21.arm64"
912
+ ],
665
913
  "developer_notes": "*GSA/ is used in the Google app when searching and playing podcasts, and in the Google Podcasts app"
666
914
  },
667
915
  {
@@ -673,10 +921,11 @@
673
921
  },
674
922
  {
675
923
  "user_agents": [
676
- "Android.*Chrome/"
924
+ "Android.*Chrome/(?!.*(Googlebot|CrKey|GSA|EdgA/))"
677
925
  ],
678
926
  "app": "Google Chrome",
679
- "os": "android"
927
+ "os": "android",
928
+ "developer_notes": "This won't match Googlebot, a Chromecast device, Google speaker or Google app"
680
929
  },
681
930
  {
682
931
  "user_agents": [
@@ -688,26 +937,28 @@
688
937
  },
689
938
  {
690
939
  "user_agents": [
691
- "Linux.*Chrome/"
940
+ "Linux(?!.*(Android)).*Chrome/(?!.*(CrKey|GSA/))"
692
941
  ],
693
942
  "app": "Google Chrome",
694
943
  "device": "pc",
695
- "os": "linux"
944
+ "os": "linux",
945
+ "developer_notes": "This won't match an Android device, Chromecast device, Google speaker or Google app"
696
946
  },
697
947
  {
698
948
  "user_agents": [
699
- "Mac OS X.*Chrome/"
949
+ "Mac OS X.*Chrome/(?!.*(Spreaker\/|OPR\/))"
700
950
  ],
701
951
  "app": "Google Chrome",
702
952
  "device": "pc",
703
953
  "examples": [
704
954
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
705
955
  ],
706
- "os": "macos"
956
+ "os": "macos",
957
+ "developer_notes": "This won't match the Spreaker app"
707
958
  },
708
959
  {
709
960
  "user_agents": [
710
- "Windows.*Chrome/"
961
+ "Windows.*Chrome/(?!.*(OPR/))"
711
962
  ],
712
963
  "app": "Google Chrome",
713
964
  "device": "pc",
@@ -734,10 +985,12 @@
734
985
  },
735
986
  {
736
987
  "user_agents": [
737
- "^gPodder/",
988
+ "^gPodder/.*Windows",
738
989
  "^gpodder\\.net"
739
990
  ],
740
991
  "app": "gPodder",
992
+ "os": "windows",
993
+ "device": "pc",
741
994
  "examples": [
742
995
  "gPodder/3.10.8 (+http://gpodder.org/) Windows/10"
743
996
  ]
@@ -748,6 +1001,17 @@
748
1001
  ],
749
1002
  "device": "radio"
750
1003
  },
1004
+ {
1005
+ "user_agents": [
1006
+ "^GaanaAndroid-"
1007
+ ],
1008
+ "app": "Gaana",
1009
+ "os": "android",
1010
+ "examples": [
1011
+ "GaanaAndroid-8.13.0/Dalvik/2.1.0 (Linux; U; Android 9; vivo 1906 Build/PKQ1.190616.001)",
1012
+ "GaanaAndroid-8.13.0/Dalvik/2.1.0 (Linux; U; Android 5.1; Micromax P701 Build/LMY47D)"
1013
+ ]
1014
+ },
751
1015
  {
752
1016
  "user_agents": [
753
1017
  "^Guardian-iOSLive/"
@@ -782,9 +1046,16 @@
782
1046
  },
783
1047
  {
784
1048
  "user_agents": [
785
- "^Himalaya/"
1049
+ "^Himalaya/.+iPhone"
1050
+ ],
1051
+ "app": "Himalaya",
1052
+ "device": "phone",
1053
+ "examples": [
1054
+ "Himalaya/2.4.41 (iPhone; iOS 14.0.1; Scale/3.00; CFNetwork; iPhone9,4)",
1055
+ "Himalaya/2.4.42 (iPhone; iOS 14.2; Scale/2.00; CFNetwork; iPhone8,1)"
786
1056
  ],
787
- "app": "Himalaya"
1057
+ "os": "ios",
1058
+ "description": "Himalaya is a podcast app"
788
1059
  },
789
1060
  {
790
1061
  "user_agents": [
@@ -796,9 +1067,30 @@
796
1067
  },
797
1068
  {
798
1069
  "user_agents": [
799
- "^iHeartRadio/"
1070
+ "^iHeartRadio/.*Android"
1071
+ ],
1072
+ "app": "iHeartRadio",
1073
+ "os": "android",
1074
+ "examples": [
1075
+ "iHeartRadio/9.19.0 (Android 10; SM-G960U Build/QP1A.190711.020)",
1076
+ "iHeartRadio/9.19.0 (Android 9; SM-G950U Build/PPR1.180610.011)"
1077
+ ],
1078
+ "info_url": "https://play.google.com/store/apps/details?id=com.clearchannel.iheartradio.controller"
1079
+ },
1080
+ {
1081
+ "user_agents": [
1082
+ "^iHeartRadio/.* CFNetwork/",
1083
+ "^iHeartRadio/.* iOS"
1084
+ ],
1085
+ "app": "iHeartRadio",
1086
+ "os": "ios",
1087
+ "examples": [
1088
+ "iHeartRadio/2020052002 CFNetwork/1125.2 Darwin/19.4.0",
1089
+ "iHeartRadio/9.20.0 (iPhone; iOS 13.4.1; iPhone11,8)",
1090
+ "iHeartRadio/9.20.0 (iPad; iOS 13.4.1; iPad6,12)",
1091
+ "iHeartRadio/9.7.0 (iPod touch; iOS 12.4.5; iPod7,1)"
800
1092
  ],
801
- "app": "iHeartRadio"
1093
+ "info_url": "https://apps.apple.com/us/app/iheart-radio-music-podcasts/id290638154"
802
1094
  },
803
1095
  {
804
1096
  "user_agents": [
@@ -811,6 +1103,13 @@
811
1103
  ],
812
1104
  "os": "windows"
813
1105
  },
1106
+ {
1107
+ "user_agents": [
1108
+ "iVoox"
1109
+ ],
1110
+ "app": "iVoox",
1111
+ "info_url": "https://www.ivoox.com/"
1112
+ },
814
1113
  {
815
1114
  "user_agents": [
816
1115
  "iTMS",
@@ -820,7 +1119,8 @@
820
1119
  },
821
1120
  {
822
1121
  "user_agents": [
823
- "^iTunes/.+Mac OS"
1122
+ "^iTunes/.+Mac OS",
1123
+ "^iTunes/.+OS X"
824
1124
  ],
825
1125
  "examples": [
826
1126
  "iTunes/10.6.3 (Macintosh; Intel Mac OS X 10.5.8) AppleWebKit/534.50.2"
@@ -832,10 +1132,11 @@
832
1132
  },
833
1133
  {
834
1134
  "user_agents": [
835
- "^iTunes/1[12]\\."
1135
+ "^iTunes/.+Windows"
836
1136
  ],
837
1137
  "examples": [
838
- "iTunes/11.4 (Windows; Microsoft Windows 7 x64 Home Premium Edition (Build 7600)) AppleWebKit/7600.1017.0.24"
1138
+ "iTunes/11.4 (Windows; Microsoft Windows 7 x64 Home Premium Edition (Build 7600)) AppleWebKit/7600.1017.0.24",
1139
+ "iTunes/12.10.9 (Windows; Microsoft Windows 10 x64 Home Premium Edition (Build 19041); x64) AppleWebKit/7609.3005.1003.3"
839
1140
  ],
840
1141
  "app": "iTunes",
841
1142
  "device": "pc",
@@ -859,6 +1160,33 @@
859
1160
  "info_url": "https://www.jriver.com/",
860
1161
  "os": "windows"
861
1162
  },
1163
+ {
1164
+ "user_agents": [
1165
+ ".*KAIOS/"
1166
+ ],
1167
+ "app": "KAIOS podcast app",
1168
+ "device": "phone",
1169
+ "os": "kaios",
1170
+ "info_url": "https://kaiostech.com",
1171
+ "examples": [
1172
+ "Mozilla/5.0 (Mobile; LYF/F271i/LYF_F271i-000-01-20-101019; Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5"
1173
+ ],
1174
+ "developer_notes": "This is a standard useragent for KaiOS, the cut-down operating system for mobile phones in developing countries. Watch out - it may also contain Android."
1175
+ },
1176
+ {
1177
+ "user_agents": [
1178
+ ".*PodLP/"
1179
+ ],
1180
+ "app": "PodLP podcast app for KaiOS",
1181
+ "device": "phone",
1182
+ "os": "kaios",
1183
+ "info_url": "https://podlp.com",
1184
+ "examples": [
1185
+ "Mozilla/5.0 (Mobile; LYF/F271i/LYF_F271i-000-01-20-101019; Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5 PodLP/1.3.2.0"
1186
+ ],
1187
+ "description": "PodLP is the first podcast app available for KaiOS smart feature phones on the KaiStore.",
1188
+ "developer_notes": "Introduced in version v1.2.0.0 for limited content (downloads); available for all content after v1.3.0.0"
1189
+ },
862
1190
  {
863
1191
  "user_agents": [
864
1192
  "^Laughable.+iOS"
@@ -869,24 +1197,43 @@
869
1197
  },
870
1198
  {
871
1199
  "user_agents": [
872
- "^lamarr-iOS"
1200
+ "^com.jio.media.jiobeats",
1201
+ "^com.saavn.android",
1202
+ "^saavn"
1203
+ ],
1204
+ "app": "JioSaavn",
1205
+ "os": "android",
1206
+ "info_url": "https://www.jiosaavn.com/",
1207
+ "description": "A music streaming and podcast app from India. Earn Your Happy!",
1208
+ "developer_notes": "The user-agent will start with one of the above strings followed by the app version and player version.",
1209
+ "examples": [
1210
+ "com.jio.media.jiobeats/7.3.1 (Linux;Android 8.1.0) ExoPlayerLib/2.11.4"
1211
+ ]
1212
+ },
1213
+ {
1214
+ "user_agents": [
1215
+ "^lamarr-iOS",
1216
+ "^TheEconomist-Lamarr-ios"
873
1217
  ],
874
1218
  "app": "The Economist",
875
1219
  "device": "phone",
876
1220
  "os": "ios",
877
1221
  "examples": [
878
- "lamarr-iOS-2.20.3-116"
1222
+ "lamarr-iOS-2.20.3-116",
1223
+ "TheEconomist-Lamarr-ios-2.22.2-12002"
879
1224
  ]
880
1225
  },
881
1226
  {
882
1227
  "user_agents": [
883
- "^lamarr-android"
1228
+ "^lamarr-android",
1229
+ "^TheEconomist-Lamarr-android"
884
1230
  ],
885
1231
  "app": "The Economist",
886
1232
  "device": "phone",
887
1233
  "os": "android",
888
1234
  "examples": [
889
- "lamarr-android-2.18.1-21810"
1235
+ "lamarr-android-2.18.1-21810",
1236
+ "TheEconomist-Lamarr-android-2.22.2-12002"
890
1237
  ]
891
1238
  },
892
1239
  {
@@ -966,7 +1313,11 @@
966
1313
  },
967
1314
  {
968
1315
  "user_agents": [
969
- "MJ12bot"
1316
+ ".*MJ12bot"
1317
+ ],
1318
+ "app": "MJ12bot",
1319
+ "examples": [
1320
+ "Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)"
970
1321
  ],
971
1322
  "bot": true
972
1323
  },
@@ -989,6 +1340,25 @@
989
1340
  "info_url": "https://getmusicbee.com/",
990
1341
  "os": "windows"
991
1342
  },
1343
+ {
1344
+ "user_agents": [
1345
+ "^NPR%20One/"
1346
+ ],
1347
+ "app": "NPR One",
1348
+ "examples": [
1349
+ "NPR%20One/234 CFNetwork/1197 Darwin/20.0.0"
1350
+ ]
1351
+ },
1352
+ {
1353
+ "user_agents": [
1354
+ "^NPROneAndroid"
1355
+ ],
1356
+ "app": "NPR One",
1357
+ "os": "android",
1358
+ "examples": [
1359
+ "NPROneAndroid"
1360
+ ]
1361
+ },
992
1362
  {
993
1363
  "user_agents": [
994
1364
  "^OkDownload/"
@@ -1027,12 +1397,34 @@
1027
1397
  },
1028
1398
  {
1029
1399
  "user_agents": [
1030
- "Opera/.*\\(Windows"
1400
+ "Opera/.*\\(Windows",
1401
+ "Windows.*OPR/"
1031
1402
  ],
1032
1403
  "app": "Opera",
1033
1404
  "device": "pc",
1034
1405
  "os": "windows"
1035
1406
  },
1407
+ {
1408
+ "user_agents": [
1409
+ "Macintosh.*OPR/"
1410
+ ],
1411
+ "app": "Opera",
1412
+ "os": "macos",
1413
+ "device": "pc",
1414
+ "examples": [
1415
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 OPR/72.0.3815.186"
1416
+ ]
1417
+ },
1418
+ {
1419
+ "user_agents": [
1420
+ "^MauiBot"
1421
+ ],
1422
+ "app": "MauiBot",
1423
+ "bot": true,
1424
+ "examples": [
1425
+ "MauiBot (crawler.feedback dc@gmail.com)"
1426
+ ]
1427
+ },
1036
1428
  {
1037
1429
  "user_agents": [
1038
1430
  "Opera[/ ]"
@@ -1041,7 +1433,8 @@
1041
1433
  },
1042
1434
  {
1043
1435
  "user_agents": [
1044
- "^Overcast/"
1436
+ "^Overcast/2",
1437
+ "^Overcast/3"
1045
1438
  ],
1046
1439
  "app": "Overcast",
1047
1440
  "examples": [
@@ -1051,17 +1444,63 @@
1051
1444
  },
1052
1445
  {
1053
1446
  "user_agents": [
1054
- "^PandoraRSSCrawler"
1447
+ "^Overcast.*Apple Watch"
1448
+ ],
1449
+ "app": "Overcast",
1450
+ "examples": [
1451
+ "Overcast ( http://overcast.fm/; Apple Watch podcast app)"
1452
+ ],
1453
+ "os": "watchos",
1454
+ "device": "watch"
1455
+ },
1456
+ {
1457
+ "user_agents": [
1458
+ "^Overcast/1.0 Podcast Sync"
1459
+ ],
1460
+ "app": "Overcast feed parser",
1461
+ "examples": [
1462
+ "Overcast/1.0 Podcast Sync"
1055
1463
  ],
1464
+ "developer_notes": "Marco Arment says: when a new episode is detected, the servers fetch a copy of it to seed these values with an initial set of data to make the privacy screen more accurate.",
1056
1465
  "bot": true
1057
1466
  },
1467
+ {
1468
+ "user_agents": [
1469
+ "^PandoraRSSCrawler"
1470
+ ],
1471
+ "bot": true,
1472
+ "app": "Pandora RSS crawler"
1473
+ },
1058
1474
  {
1059
1475
  "user_agents": [
1060
1476
  "^Pandora.+Android"
1061
1477
  ],
1062
1478
  "app": "Pandora",
1479
+ "os": "android",
1480
+ "examples": [
1481
+ "Pandora/2009.2 Android/7.1.1 gteslteatt (ExoPlayerLib1.5.14.1)"
1482
+ ]
1483
+ },
1484
+ {
1485
+ "user_agents": [
1486
+ "iPhone.+Pandora\/"
1487
+ ],
1488
+ "app": "Pandora",
1063
1489
  "device": "phone",
1064
- "os": "android"
1490
+ "os": "ios",
1491
+ "examples": [
1492
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Pandora/2009.2"
1493
+ ]
1494
+ },
1495
+ {
1496
+ "user_agents": [
1497
+ "PaperLiBot\/"
1498
+ ],
1499
+ "app": "PaperLi",
1500
+ "examples": [
1501
+ "Mozilla/5.0 (compatible; PaperLiBot/2.1; https://support.paper.li/entries/20023257-what-is-paper-li)"
1502
+ ],
1503
+ "bot": true
1065
1504
  },
1066
1505
  {
1067
1506
  "user_agents": [
@@ -1081,7 +1520,6 @@
1081
1520
  "^PocketCasts/"
1082
1521
  ],
1083
1522
  "app": "Pocket Casts",
1084
- "device": "phone",
1085
1523
  "examples": [
1086
1524
  "Pocket Casts"
1087
1525
  ],
@@ -1097,16 +1535,32 @@
1097
1535
  "app": "PodcastAddict",
1098
1536
  "device": "phone",
1099
1537
  "examples": [
1100
- "PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; SM-N950U Build/PPR1.180610.011)"
1538
+ "PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; SM-N950U Build/PPR1.180610.011)",
1539
+ "PodcastAddict/v5 ( https://podcastaddict.com/; Android podcast app)"
1101
1540
  ],
1102
1541
  "os": "android"
1103
1542
  },
1104
1543
  {
1105
1544
  "user_agents": [
1106
- "iOS.*The Podcast App/"
1545
+ "iOS.*The Podcast App/",
1546
+ "com.evolve.podcast/"
1107
1547
  ],
1108
1548
  "app": "The Podcast App",
1109
- "os": "ios"
1549
+ "os": "ios",
1550
+ "examples": [
1551
+ "podcast/2358 iOS/Version 13.5.1 (Build 017F80) The Podcast App/3.22.1",
1552
+ "com.evolve.podcast/3.22.1 (iPhone; ) (build 2358, iOS 13.5.1)"
1553
+ ],
1554
+ "developer_notes": "The com.evolve version of the useragent is an error, and has been reported to the developers as a bug. Caution: the beginning of their main useragent is similar to Google Podcasts."
1555
+ },
1556
+ {
1557
+ "user_agents": [
1558
+ "^PodcastGuru "
1559
+ ],
1560
+ "app": "Podcast Guru",
1561
+ "os": "android",
1562
+ "info_url": "https://podcastguru.io/",
1563
+ "description": "Podcast Guru is the simple and free podcast player"
1110
1564
  },
1111
1565
  {
1112
1566
  "user_agents": [
@@ -1137,15 +1591,64 @@
1137
1591
  },
1138
1592
  {
1139
1593
  "user_agents": [
1140
- "^PodCruncher/"
1594
+ "^PodCruncher/.* CFNetwork/"
1595
+ ],
1596
+ "app": "PodCruncher",
1597
+ "os": "ios",
1598
+ "examples": [
1599
+ "PodCruncher/3.7.1 CFNetwork/1125.2 Darwin/19.4.0",
1600
+ "PodCruncher/3.7.1 CFNetwork/978.0.7 Darwin/18.7.0"
1601
+ ],
1602
+ "info_url": "https://apps.apple.com/us/app/podcruncher-podcast-player/id421894356"
1603
+ },
1604
+ {
1605
+ "user_agents": [
1606
+ "^Podbean/Android App",
1607
+ "^Podbean/Android generic"
1608
+ ],
1609
+ "app": "Podbean",
1610
+ "os": "android",
1611
+ "examples": [
1612
+ "Podbean/Android App 7.6.4 (http://podbean.com),1927526fe23b5acf535b3e91b64cee95",
1613
+ "Podbean/Android App 8.1.5 (http://podbean.com),4f6852f59091d32475ef75a53325a4fe",
1614
+ "Podbean/Android generic 1.1.2 (http://podbean.com),9376c517335ded9a716022cc1f15c884"
1615
+ ],
1616
+ "info_url": "https://play.google.com/store/apps/details?id=com.podbean.app.podcast"
1617
+ },
1618
+ {
1619
+ "user_agents": [
1620
+ "^Podbean/iOS"
1621
+ ],
1622
+ "app": "Podbean",
1623
+ "os": "ios",
1624
+ "examples": [
1625
+ "Podbean/iOS (http://podbean.com) 5.2.0 - 19c4ff292bd09cd2ccbad22cc6755a45"
1626
+ ],
1627
+ "info_url": "https://apps.apple.com/us/app/podbean-podcast-app-player/id973361050"
1628
+ },
1629
+ {
1630
+ "user_agents": [
1631
+ "podfollowbot/"
1141
1632
  ],
1142
- "app": "PodCruncher"
1633
+ "app": "Podfollow",
1634
+ "examples": [
1635
+ "Mozilla/5.0 https://podfollow.com/crawling podfollowbot/1.0"
1636
+ ],
1637
+ "info_url": "https://podfollow.com",
1638
+ "description": "Podfollow, a service to help link to your podcast",
1639
+ "bot": true
1143
1640
  },
1144
1641
  {
1145
1642
  "user_agents": [
1146
- "^Podbean/"
1643
+ "^Podhero",
1644
+ "^Swoot/"
1147
1645
  ],
1148
- "app": "Podbean"
1646
+ "app": "Podhero",
1647
+ "examples": [
1648
+ "Podhero%20Alpha/4373 CFNetwork/1197 Darwin/20.0.0"
1649
+ ],
1650
+ "info_url": "https://podhero.com",
1651
+ "description": "Podhero app on iOS and Android."
1149
1652
  },
1150
1653
  {
1151
1654
  "user_agents": [
@@ -1154,6 +1657,41 @@
1154
1657
  "app": "Podkicker Pro",
1155
1658
  "os": "android"
1156
1659
  },
1660
+ {
1661
+ "user_agents": [
1662
+ "PodLink"
1663
+ ],
1664
+ "app": "PodLink",
1665
+ "info_url": "https://pod.link/faq/crawler"
1666
+ },
1667
+ {
1668
+ "user_agents": [
1669
+ "^PodMN/Android"
1670
+ ],
1671
+ "description": "Minnesota Podcasts Live Here",
1672
+ "examples": [
1673
+ "PodMN/Android 1.2.6 (Android 7.1.1; SM-J510FN Build/NMF26X)"
1674
+ ],
1675
+ "info_url": "https://play.google.com/store/apps/details?id=com.podmn.app",
1676
+ "app": "PodMN",
1677
+ "device": "phone",
1678
+ "os": "android",
1679
+ "svg": "podmn.svg"
1680
+ },
1681
+ {
1682
+ "user_agents": [
1683
+ "^PodMN/iOS"
1684
+ ],
1685
+ "description": "Minnesota Podcasts Live Here",
1686
+ "examples": [
1687
+ "PodMN/iOS 1.2.6 (iPhone XR/13.6.1)"
1688
+ ],
1689
+ "info_url": "https://apps.apple.com/us/app/podmn/id1464935818",
1690
+ "app": "PodMN",
1691
+ "device": "phone",
1692
+ "os": "ios",
1693
+ "svg": "podmn.svg"
1694
+ },
1157
1695
  {
1158
1696
  "user_agents": [
1159
1697
  "PodnewsBot"
@@ -1163,12 +1701,65 @@
1163
1701
  "description": "Podnews runs a number of bots to read and test RSS and audio files",
1164
1702
  "info_url": "http://podnews.net"
1165
1703
  },
1704
+ {
1705
+ "user_agents": [
1706
+ "podnods-crawler",
1707
+ "podnods"
1708
+ ],
1709
+ "app": "Podnods",
1710
+ "bot": true,
1711
+ "description": "Podnods is a podcast discovery site. This user agent is for crawling podcast data.",
1712
+ "info_url": "https://podnods.com/about"
1713
+ },
1714
+ {
1715
+ "user_agents": [
1716
+ "podnods-player"
1717
+ ],
1718
+ "app": "Podnods",
1719
+ "description": "Podnods is a podcast discovery site. This user agent is for users to sample and play podcasts.",
1720
+ "info_url": "https://podnods.com/about"
1721
+ },
1722
+ {
1723
+ "user_agents": [
1724
+ "Podyssey App"
1725
+ ],
1726
+ "app": "Podyssey",
1727
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1728
+ "info_url": "https://podyssey.fm"
1729
+ },
1730
+ {
1731
+ "user_agents": [
1732
+ "com.toysinboxes.Echo"
1733
+ ],
1734
+ "app": "Podyssey",
1735
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1736
+ "info_url": "https://podyssey.fm",
1737
+ "os": "ios"
1738
+ },
1739
+ {
1740
+ "user_agents": [
1741
+ "fm.podyssey.podcasts"
1742
+ ],
1743
+ "app": "Podyssey",
1744
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1745
+ "info_url": "https://podyssey.fm",
1746
+ "os": "android"
1747
+ },
1166
1748
  {
1167
1749
  "user_agents": [
1168
1750
  "python-requests"
1169
1751
  ],
1170
1752
  "bot": true
1171
1753
  },
1754
+ {
1755
+ "user_agents": [
1756
+ "^radio.de/app.+Android"
1757
+ ],
1758
+ "app": "radio.de",
1759
+ "os": "android",
1760
+ "description": "Radio.de is a radio and podcast app in Germany",
1761
+ "info_url": "https://www.radio.de/"
1762
+ },
1172
1763
  {
1173
1764
  "user_agents": [
1174
1765
  "^Radioplayer Android app"
@@ -1237,12 +1828,13 @@
1237
1828
  },
1238
1829
  {
1239
1830
  "user_agents": [
1240
- "^RSSRadio7?/"
1831
+ "^RSSRadio"
1241
1832
  ],
1242
1833
  "app": "RSS Radio",
1243
1834
  "device": "phone",
1244
1835
  "examples": [
1245
- "RSSRadio7/9252 CFNetwork/1107.1 Darwin/19.0.0"
1836
+ "RSSRadio7/9252 CFNetwork/1107.1 Darwin/19.0.0",
1837
+ "RSSRadio/9710"
1246
1838
  ],
1247
1839
  "info_url": "http://rssrad.io",
1248
1840
  "os": "ios"
@@ -1251,14 +1843,29 @@
1251
1843
  "user_agents": [
1252
1844
  "^Ruby"
1253
1845
  ],
1254
- "bot": true
1846
+ "developer_notes": "The generic Ruby user-agent."
1255
1847
  },
1256
1848
  {
1257
1849
  "user_agents": [
1258
- "^SEMrushBot"
1850
+ "SemrushBot\/"
1851
+ ],
1852
+ "app": "SEMrushBot",
1853
+ "examples": [
1854
+ "Mozilla/5.0 (compatible; SemrushBot/6~bl; http://www.semrush.com/bot.html)"
1259
1855
  ],
1260
1856
  "bot": true
1261
1857
  },
1858
+ {
1859
+ "user_agents": [
1860
+ "SerendeputyBot\/"
1861
+ ],
1862
+ "app": "Serendeputy",
1863
+ "examples": [
1864
+ "SerendeputyBot/0.8.6 (http://serendeputy.com/about/serendeputy-bot)"
1865
+ ],
1866
+ "bot": true,
1867
+ "info_url": "https://serendeputy.com/about/serendeputy-bot"
1868
+ },
1262
1869
  {
1263
1870
  "user_agents": [
1264
1871
  "^Spotify/.+Linux"
@@ -1303,21 +1910,29 @@
1303
1910
  },
1304
1911
  {
1305
1912
  "user_agents": [
1306
- "^Spotify/\\d+"
1913
+ "^Spotify/1.0$"
1307
1914
  ],
1308
- "bot": true
1915
+ "app": "Spotify cache service",
1916
+ "bot": true,
1917
+ "examples": [
1918
+ "Spotify/1.0"
1919
+ ],
1920
+ "developer_notes": "This useragent, currently simply Spotify/1.0, is used when retrieving the RSS and audio for Spotify's catalogue. It isn't used for passthru."
1309
1921
  },
1310
1922
  {
1311
1923
  "user_agents": [
1312
- "Macintosh.*AppleWebKit.*Safari/"
1924
+ "Macintosh.*AppleWebKit(?!.*(Chrome\/)).*Safari/(?!.*(AdsBot/))"
1313
1925
  ],
1314
1926
  "app": "Safari",
1315
1927
  "device": "pc",
1316
- "os": "macos"
1928
+ "os": "macos",
1929
+ "examples": [
1930
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15"
1931
+ ]
1317
1932
  },
1318
1933
  {
1319
1934
  "user_agents": [
1320
- "Windows.*AppleWebKit.*Safari/"
1935
+ "Windows.*AppleWebKit(?!.*(Chrome\/)).*Safari/"
1321
1936
  ],
1322
1937
  "app": "Safari",
1323
1938
  "device": "pc",
@@ -1325,7 +1940,7 @@
1325
1940
  },
1326
1941
  {
1327
1942
  "user_agents": [
1328
- "iPhone.*AppleWebKit.*Safari/"
1943
+ "iPhone.*AppleWebKit(?!.*(AdsBot|bingbot|CriOS)).*Safari/"
1329
1944
  ],
1330
1945
  "app": "Safari",
1331
1946
  "device": "phone",
@@ -1339,12 +1954,28 @@
1339
1954
  "device": "tablet",
1340
1955
  "os": "ios"
1341
1956
  },
1957
+ {
1958
+ "user_agents": [
1959
+ "^Slack/"
1960
+ ],
1961
+ "app": "Slack"
1962
+ },
1342
1963
  {
1343
1964
  "user_agents": [
1344
1965
  "^Subcast"
1345
1966
  ],
1346
1967
  "app": "Subcast"
1347
1968
  },
1969
+ {
1970
+ "user_agents": [
1971
+ "Sonnet"
1972
+ ],
1973
+ "app": "Sonnet",
1974
+ "description": "Sonnet is a simple, easy to use podcast app aimed at new listeners",
1975
+ "os": "android",
1976
+ "info_url": "https://sonnet.fm",
1977
+ "svg": "sonnet.svg"
1978
+ },
1348
1979
  {
1349
1980
  "user_agents": [
1350
1981
  "Sonos"
@@ -1355,7 +1986,14 @@
1355
1986
  },
1356
1987
  {
1357
1988
  "user_agents": [
1358
- "^Spreaker"
1989
+ "^Spreaker for Android"
1990
+ ],
1991
+ "app": "Spreaker",
1992
+ "os": "android"
1993
+ },
1994
+ {
1995
+ "user_agents": [
1996
+ "Spreaker/"
1359
1997
  ],
1360
1998
  "app": "Spreaker"
1361
1999
  },
@@ -1367,7 +2005,12 @@
1367
2005
  },
1368
2006
  {
1369
2007
  "user_agents": [
1370
- "^Stitcher/Android"
2008
+ "^Stitcher\/Android",
2009
+ "^Stitcher Demo\/"
2010
+ ],
2011
+ "examples": [
2012
+ "Stitcher Demo/4.8.0 (Linux;Android 11) ExoPlayerLib/2.10.7",
2013
+ "Stitcher/Android"
1371
2014
  ],
1372
2015
  "app": "Stitcher",
1373
2016
  "os": "android"
@@ -1385,12 +2028,14 @@
1385
2028
  "^Stitcher/iOS"
1386
2029
  ],
1387
2030
  "app": "Stitcher",
1388
- "os": "ios"
2031
+ "os": "ios",
2032
+ "device": "phone"
1389
2033
  },
1390
2034
  {
1391
2035
  "user_agents": [
1392
- "StitcherBot"
2036
+ "^StitcherBot"
1393
2037
  ],
2038
+ "app": "Stitcher",
1394
2039
  "bot": true
1395
2040
  },
1396
2041
  {
@@ -1413,21 +2058,76 @@
1413
2058
  },
1414
2059
  {
1415
2060
  "user_agents": [
1416
- "^Swoot/"
2061
+ "TrendsmapResolver\/"
1417
2062
  ],
1418
- "app": "Swoot"
2063
+ "app": "Trendsmap Resolver",
2064
+ "bot": true
1419
2065
  },
1420
2066
  {
1421
2067
  "user_agents": [
1422
2068
  "^Trackable/"
1423
2069
  ],
2070
+ "app": "Chartable",
2071
+ "info_url": "https://chartable.com/",
1424
2072
  "bot": true
2073
+ },
2074
+ {
2075
+ "user_agents": [
2076
+ "^TuneIn Radio/.*;Android"
2077
+ ],
2078
+ "examples": [
2079
+ "TuneIn Radio/24.2 (Linux;Android 10) ExoPlayerLib/2.11.4"
2080
+ ],
2081
+ "app": "TuneIn",
2082
+ "os": "android",
2083
+ "info_url": "https://play.google.com/store/apps/details?id=tunein.player"
2084
+ },
2085
+ {
2086
+ "user_agents": [
2087
+ "^TuneIn Radio Pro/.*;Android"
2088
+ ],
2089
+ "examples": [
2090
+ "TuneIn Radio Pro/23.3.2 (Linux;Android 5.1.1) ExoPlayerLib/2.10.7"
2091
+ ],
2092
+ "app": "TuneIn",
2093
+ "os": "android",
2094
+ "info_url": "https://play.google.com/store/apps/details?id=radiotime.player"
2095
+ },
2096
+ {
2097
+ "user_agents": [
2098
+ "^TuneIn(%20| )Radio/.*(CFNetwork/|iPhone)"
2099
+ ],
2100
+ "examples": [
2101
+ "TuneIn Radio/1366 CFNetwork/1121.2.2 Darwin/19.3.0",
2102
+ "TuneIn Radio/18.1; iPhone12,8; iOS/13.4.1",
2103
+ "TuneIn%20Radio/1383 CFNetwork/1125.2 Darwin/19.4.0"
2104
+ ],
2105
+ "app": "TuneIn",
2106
+ "os": "ios",
2107
+ "info_url": "https://apps.apple.com/us/app/tunein-radio-live-news-music/id418987775"
2108
+ },
2109
+ {
2110
+ "user_agents": [
2111
+ "^TuneIn(%20| )Radio(%20| )Pro/.*CFNetwork/"
2112
+ ],
2113
+ "examples": [
2114
+ "TuneIn Radio Pro/1361 CFNetwork/1121.2.2 Darwin/19.3.0",
2115
+ "TuneIn%20Radio%20Pro/1383 CFNetwork/1125.2 Darwin/19.4.0"
2116
+ ],
2117
+ "app": "TuneIn",
2118
+ "os": "ios",
2119
+ "info_url": "https://apps.apple.com/us/app/tunein-pro-radio-sports/id319295332"
1425
2120
  },
1426
2121
  {
1427
2122
  "user_agents": [
1428
- "^TuneIn"
2123
+ "^TuneIn(?!.*(CFNetwork|Android))"
2124
+ ],
2125
+ "examples": [
2126
+ "TuneIn Radio"
1429
2127
  ],
1430
- "app": "TuneIn"
2128
+ "app": "TuneIn",
2129
+ "info_url": "https://tunein.com/",
2130
+ "developer_notes": "Other versions of this app use many other user agents."
1431
2131
  },
1432
2132
  {
1433
2133
  "user_agents": [
@@ -1464,6 +2164,7 @@
1464
2164
  "user_agents": [
1465
2165
  "Wget"
1466
2166
  ],
2167
+ "app": "Wget",
1467
2168
  "bot": true
1468
2169
  },
1469
2170
  {
@@ -1497,8 +2198,9 @@
1497
2198
  },
1498
2199
  {
1499
2200
  "user_agents": [
1500
- "YandexBot"
2201
+ "YandexBot\/"
1501
2202
  ],
2203
+ "app": "YandexBot",
1502
2204
  "bot": true
1503
2205
  },
1504
2206
  {
@@ -1513,17 +2215,6 @@
1513
2215
  ],
1514
2216
  "os": "android"
1515
2217
  },
1516
- {
1517
- "user_agents": [
1518
- "^^com\\.evolve\\.podcast/"
1519
- ],
1520
- "app": "The Podcast App",
1521
- "device": "phone",
1522
- "examples": [
1523
- "com.evolve.podcast/3.10.1 (iPhone; ) (build 951, iOS 13.3)"
1524
- ],
1525
- "os": "ios"
1526
- },
1527
2218
  {
1528
2219
  "user_agents": [
1529
2220
  "^Podimo/.*iOS"
@@ -1547,5 +2238,326 @@
1547
2238
  "Podimo/1.11.3 build 91/Android 28"
1548
2239
  ],
1549
2240
  "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US"
2241
+ },
2242
+ {
2243
+ "user_agents": [
2244
+ "BingPreview/",
2245
+ "adidxbot/",
2246
+ "bingbot/"
2247
+ ],
2248
+ "app": "Microsoft Bingbot",
2249
+ "bot": true,
2250
+ "info_url": "https://www.bing.com/webmaster/help/which-crawlers-does-bing-use-8c184ec0",
2251
+ "examples": [
2252
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534 (KHTML, like Gecko) BingPreview/1.0b"
2253
+ ]
2254
+ },
2255
+ {
2256
+ "user_agents": [
2257
+ "^msnbot/"
2258
+ ],
2259
+ "bot": true
2260
+ },
2261
+ {
2262
+ "user_agents": [
2263
+ "^Deezer Podcasters\/1\\.0"
2264
+ ],
2265
+ "bot": true,
2266
+ "app": "Deezer Podcasters"
2267
+ },
2268
+ {
2269
+ "user_agents": [
2270
+ "^devcasts\/.*CFNetwork"
2271
+ ],
2272
+ "app": "DevCasts",
2273
+ "os": "ios",
2274
+ "description": "Our Devcasts app is a new kind of podcast listening app. It is simply the best way for developers to enjoy all of the excellent podcast content created for developers.",
2275
+ "examples": [
2276
+ "devcasts/1.0.1.00 CFNetwork/1197 Darwin/20.0.0"
2277
+ ],
2278
+ "info_url": "http://devcasts.co/"
2279
+ },
2280
+ {
2281
+ "user_agents": [
2282
+ "^got/"
2283
+ ],
2284
+ "bot": true,
2285
+ "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US",
2286
+ "developer_notes": "Got is a HTTP library for NodeJs"
2287
+ },
2288
+ {
2289
+ "user_agents": [
2290
+ "INA dlweb"
2291
+ ],
2292
+ "bot": true,
2293
+ "app": "l'Institut national de l'audiovisuel",
2294
+ "info_url": "https://institut.ina.fr/collecte-du-depot-legal-web",
2295
+ "developer_notes": "Institut National de l'Audiovisuel is a repository of all French radio and television audiovisual archives."
2296
+ },
2297
+ {
2298
+ "user_agents": [
2299
+ "^Instagram\/"
2300
+ ],
2301
+ "app": "Instagram",
2302
+ "examples": [
2303
+ "Instagram/252729634 CFNetwork/1126 Darwin/19.5.0"
2304
+ ]
2305
+ },
2306
+ {
2307
+ "user_agents": [
2308
+ "^SoundOn/[\\d\\.]+\\s+\\(Linux;Android",
2309
+ "^SoundOn\/[^12]\\.\\d+\\.\\d+$",
2310
+ "^SoundOn\/1\\.[^1][^0-2]?\\.\\d+$"
2311
+ ],
2312
+ "app": "SoundOn",
2313
+ "device": "phone",
2314
+ "examples": [
2315
+ "SoundOn/1.9.17 (Linux;Android 10) ExoPlayerLib/2.9.4"
2316
+ ],
2317
+ "os": "android"
2318
+ },
2319
+ {
2320
+ "user_agents": [
2321
+ "^SoundOn/1\\.1[0-2]\\.\\d+$",
2322
+ "^SoundOn/2\\.\\d+\\.\\d+$",
2323
+ "^SoundOn/[\\d\\.]+\\s+\\(iOS"
2324
+ ],
2325
+ "app": "SoundOn",
2326
+ "device": "phone",
2327
+ "examples": [
2328
+ "SoundOn/1.10.1",
2329
+ "SoundOn/2.2.0",
2330
+ "SoundOn/2.2.2 (iOS)"
2331
+ ],
2332
+ "os": "ios"
2333
+ },
2334
+ {
2335
+ "user_agents": [
2336
+ "^SoundOn/[\\d\\.]+\\s+\\(bot"
2337
+ ],
2338
+ "bot": true
2339
+ },
2340
+ {
2341
+ "user_agents": [
2342
+ "^Podverse/Android Mobile App/"
2343
+ ],
2344
+ "app": "Podverse Android Mobile App",
2345
+ "device": "phone",
2346
+ "os": "android",
2347
+ "info_url": "https://play.google.com/store/apps/details?id=com.podverse&hl=en_US",
2348
+ "description": "Open source podcast catcher for Android, with clip-sharing, playlists, device syncing and more.",
2349
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/Android Mobile App/ user agent."
2350
+ },
2351
+ {
2352
+ "user_agents": [
2353
+ "^Podverse/iOS Mobile App/"
2354
+ ],
2355
+ "app": "Podverse iOS Mobile App",
2356
+ "device": "phone",
2357
+ "os": "ios",
2358
+ "examples": [
2359
+ "Podverse/iOS Mobile App/Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/1234"
2360
+ ],
2361
+ "description": "Open source podcast catcher for iOS, with clip-sharing, playlists, device syncing and more.",
2362
+ "info_url": "https://apps.apple.com/us/app/podverse/id1390888454",
2363
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/iOS Mobile App/ user agent."
2364
+ },
2365
+ {
2366
+ "user_agents": [
2367
+ "^Podverse/Feed Parser"
2368
+ ],
2369
+ "bot": true,
2370
+ "app": "Podverse Server-Side Feed Parser",
2371
+ "info_url": "https://podverse.fm",
2372
+ "description": "The Podverse feed parser.",
2373
+ "developer_notes": "This service parses publicly-accessible RSS feeds on a timer, then stores parsed data in the Podverse database."
2374
+ },
2375
+ {
2376
+ "user_agents": [
2377
+ "^Podcast/1."
2378
+ ],
2379
+ "app": "小宇宙",
2380
+ "info_url": "https://www.coolapk.com/apk/app.podcast.cosmos",
2381
+ "description": "Cosmos, a chinese podcast app"
2382
+ },
2383
+ {
2384
+ "user_agents": [
2385
+ "^Xiaoyuzhou\/.*Android\/"
2386
+ ],
2387
+ "app": "Xiao Yu Zhou",
2388
+ "description": "Xiao Yu Zhou, a podcast app",
2389
+ "os": "android",
2390
+ "examples": [
2391
+ "Xiaoyuzhou/1.9.6 Android/10"
2392
+ ]
2393
+ },
2394
+ {
2395
+ "user_agents": [
2396
+ "^Xiaoyuzhou/(?!.*(Android\/))"
2397
+ ],
2398
+ "app": "Xiao Yu Zhou",
2399
+ "description": "Xiao Yu Zhou, a podcast app",
2400
+ "info_url": "https://apps.apple.com/cn/app/%E5%B0%8F%E5%AE%87%E5%AE%99-%E4%B8%80%E8%B5%B7%E5%90%AC%E6%92%AD%E5%AE%A2/id1488894313",
2401
+ "os": "ios",
2402
+ "examples": [
2403
+ "Xiaoyuzhou/1.9.0",
2404
+ "Xiaoyuzhou/1.5.1"
2405
+ ]
2406
+ },
2407
+ {
2408
+ "user_agents": [
2409
+ "^yacybot"
2410
+ ],
2411
+ "app": "YaCy",
2412
+ "bot": true,
2413
+ "description": "Decentralized Web Search",
2414
+ "info_url": "http://yacy.net/bot.html",
2415
+ "examples": [
2416
+ "yacybot (/global; amd64 Linux 5.9.8-zen1-1-zen; java 1.8.0_265; Europe/de) http://yacy.net/bot.html"
2417
+ ]
2418
+ },
2419
+ {
2420
+ "user_agents": [
2421
+ "^Podcast-CriticalMention/"
2422
+ ],
2423
+ "app": "Critical Mention",
2424
+ "description": "Critical Mention is a business intelligence company, monitoring podcasts on the web for their clients",
2425
+ "bot": true,
2426
+ "examples": [
2427
+ "Podcast-CriticalMention/1.0"
2428
+ ]
2429
+ },
2430
+ {
2431
+ "user_agents": [
2432
+ "^RSSOwl.*Windows"
2433
+ ],
2434
+ "app": "RSSOwl",
2435
+ "description": "A Mac and Windows app, to help organize, search, and read feeds",
2436
+ "device": "pc",
2437
+ "os": "windows",
2438
+ "info_url": "http://www.rssowl.org/",
2439
+ "examples": [
2440
+ "RSSOwl/2.2.1.201312301314 (Windows; U; en)"
2441
+ ]
2442
+ },
2443
+ {
2444
+ "user_agents": [
2445
+ "^ltx71 "
2446
+ ],
2447
+ "app": "LTX71",
2448
+ "info_url": "http://ltx71.com/",
2449
+ "description": "We continuously scan the internet for security research purposes.",
2450
+ "bot": true,
2451
+ "examples": [
2452
+ "ltx71 - (http://ltx71.com/)"
2453
+ ]
2454
+ },
2455
+ {
2456
+ "user_agents": [
2457
+ "^bl.uk_ldfc_bot"
2458
+ ],
2459
+ "app": "British Library",
2460
+ "info_url": "http://www.bl.uk/aboutus/legaldeposit/websites/websites/faqswebmaster/index.html",
2461
+ "description": "British Library's legal deposit web crawler",
2462
+ "bot": true,
2463
+ "examples": [
2464
+ "bl.uk_ldfc_bot/3.4.0-20200518 ( http://www.bl.uk/aboutus/legaldeposit/websites/websites/faqswebmaster/index.html)"
2465
+ ]
2466
+ },
2467
+ {
2468
+ "user_agents": [
2469
+ "Archive-It;"
2470
+ ],
2471
+ "app": "Internet Archive",
2472
+ "info_url": "https://archive-it.org/files/site-owners-special.html",
2473
+ "description": "Archive-It is a web archiving service that allows institutions to build and preserve collections of born digital content saving this content for future generations.",
2474
+ "bot": true,
2475
+ "examples": [
2476
+ "Mozilla/5.0 (compatible; special_archiver; Archive-It; http://archive-it.org/files/site-owners-special.html)"
2477
+ ]
2478
+ },
2479
+ {
2480
+ "user_agents": [
2481
+ "VurblBot"
2482
+ ],
2483
+ "app": "Vurbl",
2484
+ "info_url": "https://vurbl.com/about-us/",
2485
+ "description": "An audio streaming destination",
2486
+ "bot": true,
2487
+ "examples": [
2488
+ "Mozilla/5.0 https://vurbl.com VurblBot/1.0"
2489
+ ]
2490
+ },
2491
+ {
2492
+ "user_agents": [
2493
+ "PetalBot"
2494
+ ],
2495
+ "app": "PetalBot",
2496
+ "info_url": "https://aspiegel.com/petalbot",
2497
+ "description": "PetalBot is an automatic program of the Petal search engine.",
2498
+ "bot": true,
2499
+ "examples": [
2500
+ "Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; PetalBot; https://aspiegel.com/petalbot)"
2501
+ ]
2502
+ },
2503
+ {
2504
+ "user_agents": [
2505
+ "PodhoundBeta"
2506
+ ],
2507
+ "app": "Podhound",
2508
+ "info_url": "http://podhound.co",
2509
+ "description": "AI-powered podcast discovery",
2510
+ "bot": true,
2511
+ "examples": [
2512
+ "PodhoundBeta"
2513
+ ],
2514
+ "developer_notes": "'It grabs it once to get the audio file length.', says the developer."
2515
+ },
2516
+ {
2517
+ "user_agents": [
2518
+ "hermespod.com/"
2519
+ ],
2520
+ "app": "HermesPod",
2521
+ "info_url": "http://hermespod.com/",
2522
+ "description": "HermesPod is the easiest way to subscribe, download and listen to podcasts. It's a Windows app.",
2523
+ "examples": [
2524
+ "hermespod.com/v1.5.x"
2525
+ ],
2526
+ "developer_notes": "HermesPod is no longer supported by its author."
2527
+ },
2528
+ {
2529
+ "user_agents": [
2530
+ "^gvfs/",
2531
+ "^rhythmbox/"
2532
+ ],
2533
+ "app": "Rhythmbox",
2534
+ "info_url": "https://gitlab.gnome.org/GNOME/rhythmbox",
2535
+ "description": "Rhythmbox is your one-stop multimedia application, supporting a music library, multiple playlists, internet radio, and more.",
2536
+ "examples": [
2537
+ "gvfs/1.46.1"
2538
+ ],
2539
+ "developer_notes": "The new UA is Rhythmbox: https://gitlab.gnome.org/GNOME/rhythmbox/-/issues/1855"
2540
+ },
2541
+ {
2542
+ "user_agents": [
2543
+ "archive.org_bot"
2544
+ ],
2545
+ "app": "Archive.org",
2546
+ "info_url": "https://archive.org/details/archive.org_bot",
2547
+ "description": "The Internet Archive is a nonprofit digital library that preserves web data and makes it available for research purposes through the Wayback Machine.",
2548
+ "bot": true,
2549
+ "examples": [
2550
+ "Mozilla/5.0 (compatible; archive.org_bot http://archive.org/details/archive.org_bot)"
2551
+ ]
2552
+ },
2553
+ {
2554
+ "user_agents": [
2555
+ "AAABot"
2556
+ ],
2557
+ "app": "AAABot - unknown bot",
2558
+ "bot": true,
2559
+ "examples": [
2560
+ "AAABot"
2561
+ ]
1550
2562
  }
1551
2563
  ]