user_agent_parser 2.6.0 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/vendor/uap-core/regexes.yaml +121 -14
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3064c6d3d2f4ce1c0cfc27261bcf6ff6a6c034efad5f32e7a5de654eba929fdc
4
- data.tar.gz: 0c5d6247bfd246a9ad885a536a6b4dd4f58bf3eac760f0c2865d0ccbde9ec83d
3
+ metadata.gz: f36ea17c827ff0d9a4a57841e491bafed8ae2c3a5caea5af858d6cdbb580d897
4
+ data.tar.gz: 48cce3afc9daaf42f180ce5564c9fc37c5fb288c115e93bb20b6291d43ae452f
5
5
  SHA512:
6
- metadata.gz: dbf4da6764707f6ab43a9b7070fb73efe71bdff39c6e51097f58688bacf6556837b43e213be7ce6b44413af22f3d3eb9b9528bcaa13cb13a3d0448054716d293
7
- data.tar.gz: 568eeacaf99ad147c7c10112df9ca515c790d3813e4f39d8f95d5bf3b7e1cd10d7bf031c47a5f9eefc788a24ddf3e3a22d2c17aff2241fd24d5b3275a8438ba5
6
+ metadata.gz: 4c695d6238bb7542309a94daaea5149109aca5c0f4a1205d7a078f5182eb2d02ea768bf0884803d59a0d2f4f4f57a5ddbb8750d523469f028fcdc0b88f3f56c4
7
+ data.tar.gz: 39fa0993955155d19eabb8f31356173bfda97b2e430ce469d895713421c793ad047d327a50f1165e64861064ded84ae977a782fdbef078b6229f1c347b8f2113
@@ -1,6 +1,50 @@
1
1
  user_agent_parsers:
2
2
  #### SPECIAL CASES TOP ####
3
3
 
4
+ # ESRI Server products
5
+ - regex: '(GeoEvent Server) (\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
6
+
7
+ # ESRI ArcGIS Desktop Products
8
+ - regex: '(ArcGIS Pro)(?: (\d+)\.(\d+)\.([^ ]+)|)'
9
+
10
+ - regex: 'ArcGIS Client Using WinInet'
11
+ family_replacement: 'ArcMap'
12
+
13
+ - regex: '(OperationsDashboard)-(?:Windows)-(\d+)\.(\d+)\.(\d+)'
14
+ family_replacement: 'Operations Dashboard for ArcGIS'
15
+
16
+ - regex: '(arcgisearth)/(\d+)\.(\d+)(?:\.(\d+)|)'
17
+ family_replacement: 'ArcGIS Earth'
18
+
19
+ - regex: 'com.esri.(earth).phone/(\d+)\.(\d+)(?:\.(\d+)|)'
20
+ family_replacement: 'ArcGIS Earth'
21
+
22
+ # ESRI ArcGIS Mobile Products
23
+ - regex: '(arcgis-explorer)/(\d+)\.(\d+)\.(\d+)'
24
+ family_replacement: 'Explorer for ArcGIS'
25
+
26
+ - regex: 'arcgis-(collector|aurora)/(\d+)\.(\d+)\.(\d+)'
27
+ family_replacement: 'Collector for ArcGIS'
28
+
29
+ - regex: '(arcgis-workforce)/(\d+)\.(\d+)\.(\d+)'
30
+ family_replacement: 'Workforce for ArcGIS'
31
+
32
+ - regex: '(Collector|Explorer|Workforce)-(?:Android|iOS)-(\d+)\.(\d+)(?:\.(\d+)|)'
33
+ family_replacement: '$1 for ArcGIS'
34
+
35
+ - regex: '(Explorer|Collector)/(\d+) CFNetwork'
36
+ family_replacement: '$1 for ArcGIS'
37
+
38
+ # ESRI ArcGIS Runtimes
39
+ - regex: 'ArcGISRuntime-(Android|iOS|NET|Qt)/(\d+)\.(\d+)(?:\.(\d+)|)'
40
+ family_replacement: 'ArcGIS Runtime SDK for $1'
41
+
42
+ - regex: 'ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)'
43
+ family_replacement: 'ArcGIS Runtime SDK for $1'
44
+
45
+ - regex: 'ArcGIS\.Runtime\.(Qt)\.(\d+)\.(\d+)(?:\.(\d+)|)'
46
+ family_replacement: 'ArcGIS Runtime SDK for $1'
47
+
4
48
  # CFNetwork Podcast catcher Applications
5
49
  - regex: '^(Luminary)[Stage]+/(\d+) CFNetwork'
6
50
  - regex: '(ESPN)[%20| ]+Radio/(\d+)\.(\d+)\.(\d+) CFNetwork'
@@ -101,12 +145,24 @@ user_agent_parsers:
101
145
  family_replacement: 'Pinterestbot'
102
146
 
103
147
  # Bots
104
- - regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
148
+ - regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
105
149
 
106
150
  # AWS S3 Clients
107
151
  # must come before "Bots General matcher" to catch "boto"/"boto3" before "bot"
108
152
  - regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/(\d+)\.(\d+)(?:\.(\d+)|)'
109
153
 
154
+ # SAFE FME
155
+ - regex: '(FME)\/(\d+\.\d+)\.(\d+)\.(\d+)'
156
+
157
+ # QGIS
158
+ - regex: '(QGIS)\/(\d)\.?0?(\d{1,2})\.?0?(\d{1,2})'
159
+
160
+ # JOSM
161
+ - regex: '(JOSM)/(\d+)\.(\d+)'
162
+
163
+ # Tygron Platform
164
+ - regex: '(Tygron Platform) \((\d+)\.(\d+)\.(\d+(?:\.\d+| RC \d+\.\d+))'
165
+
110
166
  # Facebook
111
167
  # Must come before "Bots General matcher" to catch OrangeBotswana
112
168
  # Facebook Messenger must go before Facebook
@@ -156,6 +212,17 @@ user_agent_parsers:
156
212
  - regex: '(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|)'
157
213
  family_replacement: 'Twitter'
158
214
 
215
+ # aspiegel.com spider (owned by Huawei)
216
+ - regex: 'Mozilla.*Mobile.*AspiegelBot'
217
+ family_replacement: 'Spider'
218
+ brand_replacement: 'Spider'
219
+ model_replacement: 'Smartphone'
220
+
221
+ - regex: 'AspiegelBot'
222
+ family_replacement: 'Spider'
223
+ brand_replacement: 'Spider'
224
+ model_replacement: 'Desktop'
225
+
159
226
  # Basilisk
160
227
  - regex: '(Firefox)/(\d+)\.(\d+) Basilisk/(\d+)'
161
228
  family_replacement: 'Basilisk'
@@ -317,9 +384,7 @@ user_agent_parsers:
317
384
  # Edge Mobile
318
385
  - regex: 'Windows Phone .*(Edge)/(\d+)\.(\d+)'
319
386
  family_replacement: 'Edge Mobile'
320
- - regex: '(EdgA)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
321
- family_replacement: 'Edge Mobile'
322
- - regex: '(EdgiOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
387
+ - regex: '(EdgiOS|EdgA)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
323
388
  family_replacement: 'Edge Mobile'
324
389
 
325
390
  # Samsung Internet (based on Chrome, but lacking some features)
@@ -406,6 +471,9 @@ user_agent_parsers:
406
471
  - regex: '(Rackspace Monitoring)/(\d+)\.(\d+)'
407
472
  family_replacement: 'RackspaceBot'
408
473
 
474
+ # PRTG Network Monitoring
475
+ - regex: '(PRTG Network Monitor)'
476
+
409
477
  # PyAMF
410
478
  - regex: '(PyAMF)/(\d+)\.(\d+)\.(\d+)'
411
479
 
@@ -611,7 +679,7 @@ user_agent_parsers:
611
679
  # Browser major_version.minor_version.beta_version (space instead of slash)
612
680
  - regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
613
681
  # Browser major_version.minor_version (space instead of slash)
614
- - regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\d+)\.(\d+)(?:\.(\d+)|)'
682
+ - regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
615
683
 
616
684
  # Kindle WebKit
617
685
  - regex: '(Kindle)/(\d+)\.(\d+)'
@@ -839,12 +907,11 @@ user_agent_parsers:
839
907
  family_replacement: 'Python Requests'
840
908
 
841
909
  # headless user-agents
842
- - regex: '\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
910
+ - regex: '\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
843
911
 
844
912
  # Asynchronous HTTP Client/Server for asyncio and Python (https://aiohttp.readthedocs.io/)
845
913
  - regex: '(Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+)'
846
- # Asynchronous HTTP Client/Server for asyncio and Python (https://aiohttp.readthedocs.io/)
847
- - regex: '(Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+)'
914
+ family_replacement: 'Python aiohttp'
848
915
 
849
916
  - regex: '(Java)[/ ]?\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)'
850
917
 
@@ -932,6 +999,10 @@ os_parsers:
932
999
  # generic HbbTV, hoping to catch manufacturer name (always after 2nd comma) and the first string that looks like a 2011-2019 year
933
1000
  - regex: 'HbbTV/\d+\.\d+\.\d+ \(.*; ?([a-zA-Z]+) ?;.*(201[1-9]).*\)'
934
1001
 
1002
+ # aspiegel.com spider (owned by Huawei)
1003
+ - regex: 'AspiegelBot'
1004
+ os_replacement: 'Other'
1005
+
935
1006
  ##########
936
1007
  # @note: Windows Phone needs to come before Windows NT 6.1 *and* before Android to catch cases such as:
937
1008
  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920)...
@@ -946,6 +1017,12 @@ os_parsers:
946
1017
  - regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|).*Outlook-iOS-Android'
947
1018
  os_replacement: 'iOS'
948
1019
 
1020
+ # Special case for old ArcGIS Mobile products
1021
+ - regex: 'ArcGIS\.?(iOS|Android)-\d+\.\d+(?:\.\d+|)(?:[^\/]+|)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
1022
+
1023
+ # Special case for new ArcGIS Mobile products
1024
+ - regex: 'ArcGISRuntime-(?:Android|iOS)\/\d+\.\d+(?:\.\d+|) \((Android|iOS) (\d+)(?:\.(\d+)(?:\.(\d+)|)|);'
1025
+
949
1026
  ##########
950
1027
  # Android
951
1028
  # can actually detect rooted android os. do we care?
@@ -1029,11 +1106,11 @@ os_parsers:
1029
1106
  os_replacement: 'Windows'
1030
1107
  os_v1_replacement: 'XP'
1031
1108
 
1032
- - regex: '(Windows NT 6\.1)'
1109
+ - regex: '(Win(?:dows NT |32NT\/)6\.1)'
1033
1110
  os_replacement: 'Windows'
1034
1111
  os_v1_replacement: '7'
1035
1112
 
1036
- - regex: '(Windows NT 6\.0)'
1113
+ - regex: '(Win(?:dows NT |32NT\/)6\.0)'
1037
1114
  os_replacement: 'Windows'
1038
1115
  os_v1_replacement: 'Vista'
1039
1116
 
@@ -1045,7 +1122,7 @@ os_parsers:
1045
1122
  os_replacement: 'Windows'
1046
1123
  os_v1_replacement: 'RT'
1047
1124
 
1048
- - regex: '(Windows NT 6\.2)'
1125
+ - regex: '(Win(?:dows NT |32NT\/)6\.2)'
1049
1126
  os_replacement: 'Windows'
1050
1127
  os_v1_replacement: '8'
1051
1128
 
@@ -1054,12 +1131,12 @@ os_parsers:
1054
1131
  os_v1_replacement: 'RT 8'
1055
1132
  os_v2_replacement: '1'
1056
1133
 
1057
- - regex: '(Windows NT 6\.3)'
1134
+ - regex: '(Win(?:dows NT |32NT\/)6\.3)'
1058
1135
  os_replacement: 'Windows'
1059
1136
  os_v1_replacement: '8'
1060
1137
  os_v2_replacement: '1'
1061
1138
 
1062
- - regex: '(Windows NT 6\.4)'
1139
+ - regex: '(Win(?:dows NT |32NT\/)6\.4)'
1063
1140
  os_replacement: 'Windows'
1064
1141
  os_v1_replacement: '10'
1065
1142
 
@@ -1568,6 +1645,16 @@ device_parsers:
1568
1645
  device_replacement: 'Spider'
1569
1646
  brand_replacement: 'Spider'
1570
1647
 
1648
+ # aspiegel.com spider (owned by Huawei)
1649
+ - regex: 'Mozilla.*Mobile.*AspiegelBot'
1650
+ device_replacement: 'Spider'
1651
+ brand_replacement: 'Spider'
1652
+ model_replacement: 'Smartphone'
1653
+ - regex: 'Mozilla.*AspiegelBot'
1654
+ device_replacement: 'Spider'
1655
+ brand_replacement: 'Spider'
1656
+ model_replacement: 'Desktop'
1657
+
1571
1658
  #########
1572
1659
  # WebBrowser for SmartWatch
1573
1660
  # @ref: https://play.google.com/store/apps/details?id=se.vaggan.webbrowser&hl=en
@@ -2866,6 +2953,15 @@ device_parsers:
2866
2953
  brand_replacement: 'Iru'
2867
2954
  model_replacement: '$1'
2868
2955
 
2956
+ #########
2957
+ # Itel Mobile
2958
+ # @ref: https://www.itel-mobile.com/global/products/
2959
+ #########
2960
+ - regex: '; *itel ([^;/]*)(?: Build|\) AppleWebKit)'
2961
+ device_replacement: 'Itel $1'
2962
+ brand_replacement: 'Itel'
2963
+ model_replacement: '$1'
2964
+
2869
2965
  #########
2870
2966
  # Ivio
2871
2967
  # @ref: http://www.ivio.com/mobile.php
@@ -3463,6 +3559,10 @@ device_parsers:
3463
3559
  device_replacement: '$1$2$3'
3464
3560
  brand_replacement: 'Nokia'
3465
3561
  model_replacement: '$3'
3562
+ - regex: '; *(TA\-\d{4})(?: Build|\) AppleWebKit)'
3563
+ device_replacement: 'Nokia $1'
3564
+ brand_replacement: 'Nokia'
3565
+ model_replacement: '$1'
3466
3566
 
3467
3567
  #########
3468
3568
  # Nook
@@ -3519,7 +3619,7 @@ device_parsers:
3519
3619
  # Oppo
3520
3620
  # @ref: http://en.oppo.com/products/
3521
3621
  #########
3522
- - regex: '; *(Find ?(?:5|7a)|R8[012]\d{1,2}|T703\d?|U70\d{1,2}T?|X90\d{1,2})(?: Build|\) AppleWebKit)'
3622
+ - regex: '; *(Find ?(?:5|7a)|R8[012]\d{1,2}|T703\d?|U70\d{1,2}T?|X90\d{1,2}|[AFR]\d{1,2}[a-z]{1,2})(?: Build|\) AppleWebKit)'
3523
3623
  device_replacement: 'Oppo $1'
3524
3624
  brand_replacement: 'Oppo'
3525
3625
  model_replacement: '$1'
@@ -3527,6 +3627,13 @@ device_parsers:
3527
3627
  device_replacement: 'Oppo $1'
3528
3628
  brand_replacement: 'Oppo'
3529
3629
  model_replacement: '$1'
3630
+ - regex: '; *(CPH\d{1,4}|RMX\d{1,4}|P[A-Z]{3}\d{2})(?: Build|\) AppleWebKit)'
3631
+ device_replacement: 'Oppo $1'
3632
+ brand_replacement: 'Oppo'
3633
+ - regex: '; *(A1601)(?: Build|\) AppleWebKit)'
3634
+ device_replacement: 'Oppo F1s'
3635
+ brand_replacement: 'Oppo'
3636
+ model_replacement: '$1'
3530
3637
 
3531
3638
  #########
3532
3639
  # Odys
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: user_agent_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Lucas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-06 00:00:00.000000000 Z
11
+ date: 2020-05-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple, comprehensive Ruby gem for parsing user agent strings with
14
14
  the help of BrowserScope's UA database