user_agent_parser 2.7.0 → 2.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/vendor/uap-core/regexes.yaml +779 -634
- metadata +7 -7
@@ -41,7 +41,7 @@ user_agent_parsers:
|
|
41
41
|
|
42
42
|
- regex: 'ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)'
|
43
43
|
family_replacement: 'ArcGIS Runtime SDK for $1'
|
44
|
-
|
44
|
+
|
45
45
|
- regex: 'ArcGIS\.Runtime\.(Qt)\.(\d+)\.(\d+)(?:\.(\d+)|)'
|
46
46
|
family_replacement: 'ArcGIS Runtime SDK for $1'
|
47
47
|
|
@@ -52,9 +52,9 @@ user_agent_parsers:
|
|
52
52
|
family_replacement: 'AntennaPod'
|
53
53
|
- regex: '(TopPodcasts)Pro/(\d+) CFNetwork'
|
54
54
|
- regex: '(MusicDownloader)Lite/(\d+)\.(\d+)\.(\d+) CFNetwork'
|
55
|
-
- regex: '^(
|
56
|
-
- regex: '^(
|
57
|
-
- regex: '^(
|
55
|
+
- regex: '^(.{0,200})-iPad\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork'
|
56
|
+
- regex: '^(.{0,200})-iPhone/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork'
|
57
|
+
- regex: '^(.{0,200})/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork'
|
58
58
|
|
59
59
|
# Podcast catchers
|
60
60
|
- regex: '^(Luminary)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
@@ -95,7 +95,7 @@ user_agent_parsers:
|
|
95
95
|
family_replacement: 'Tableau'
|
96
96
|
|
97
97
|
# Adobe CreativeCloud
|
98
|
-
- regex: 'AppleWebKit/\d
|
98
|
+
- regex: 'AppleWebKit/\d{1,10}\.\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)/(\d+)\.(\d+).(\d+)'
|
99
99
|
family_replacement: 'Adobe CreativeCloud'
|
100
100
|
|
101
101
|
# Salesforce
|
@@ -110,7 +110,7 @@ user_agent_parsers:
|
|
110
110
|
family_replacement: 'FacebookBot'
|
111
111
|
|
112
112
|
# Google Plus
|
113
|
-
- regex: 'Google
|
113
|
+
- regex: 'Google.{0,50}/\+/web/snippet'
|
114
114
|
family_replacement: 'GooglePlusBot'
|
115
115
|
|
116
116
|
# Gmail
|
@@ -128,10 +128,10 @@ user_agent_parsers:
|
|
128
128
|
# Bots Pattern 'name/0.0.0'
|
129
129
|
- regex: '/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
130
130
|
# Bots Pattern 'name/0.0.0'
|
131
|
-
- regex: '\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
131
|
+
- regex: '\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
132
132
|
|
133
133
|
# MSIECrawler
|
134
|
-
- regex: '(MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|)
|
134
|
+
- regex: '(MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|);.{0,200} MSIECrawler'
|
135
135
|
family_replacement: 'MSIECrawler'
|
136
136
|
|
137
137
|
# DAVdroid
|
@@ -145,7 +145,7 @@ user_agent_parsers:
|
|
145
145
|
family_replacement: 'Pinterestbot'
|
146
146
|
|
147
147
|
# Bots
|
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+)|)|)|)'
|
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|PHPCrawl|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+)|)|)|)'
|
149
149
|
|
150
150
|
# AWS S3 Clients
|
151
151
|
# must come before "Bots General matcher" to catch "boto"/"boto3" before "bot"
|
@@ -166,21 +166,22 @@ user_agent_parsers:
|
|
166
166
|
# Facebook
|
167
167
|
# Must come before "Bots General matcher" to catch OrangeBotswana
|
168
168
|
# Facebook Messenger must go before Facebook
|
169
|
-
- regex: '\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
|
169
|
+
- regex: '\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\d+)(?:\.(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
|
170
|
+
|
170
171
|
family_replacement: 'Facebook Messenger'
|
171
172
|
# Facebook
|
172
|
-
- regex: '\[FB
|
173
|
+
- regex: '\[FB.{0,300};(FBAV)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
173
174
|
family_replacement: 'Facebook'
|
174
175
|
# Sometimes Facebook does not specify a version (FBAV)
|
175
|
-
- regex: '\[FB
|
176
|
+
- regex: '\[FB.{0,300};'
|
176
177
|
family_replacement: 'Facebook'
|
177
178
|
|
178
179
|
# Bots General matcher 'name/0.0'
|
179
|
-
- regex: '(?:\/[A-Za-z0-9\.]
|
180
|
+
- regex: '^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
|
180
181
|
# Bots containing bot(but not CUBOT)
|
181
|
-
- regex: '((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
182
|
+
- regex: '^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
182
183
|
# Bots containing spider|scrape|Crawl
|
183
|
-
- regex: '((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
184
|
+
- regex: '^.{0,200}?((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
184
185
|
|
185
186
|
# HbbTV standard defines what features the browser should understand.
|
186
187
|
# but it's like targeting "HTML5 browsers", effective browser support depends on the model
|
@@ -196,16 +197,16 @@ user_agent_parsers:
|
|
196
197
|
|
197
198
|
# Social Networks (non-Facebook)
|
198
199
|
# Pinterest
|
199
|
-
- regex: '\[(Pinterest)/[^\]]
|
200
|
+
- regex: '\[(Pinterest)/[^\]]{1,50}\]'
|
200
201
|
- regex: '(Pinterest)(?: for Android(?: Tablet|)|)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
201
202
|
# Instagram app
|
202
|
-
- regex: 'Mozilla
|
203
|
+
- regex: 'Mozilla.{1,200}Mobile.{1,100}(Instagram).(\d+)\.(\d+)\.(\d+)'
|
203
204
|
# Flipboard app
|
204
|
-
- regex: 'Mozilla
|
205
|
+
- regex: 'Mozilla.{1,200}Mobile.{1,100}(Flipboard).(\d+)\.(\d+)\.(\d+)'
|
205
206
|
# Flipboard-briefing app
|
206
|
-
- regex: 'Mozilla
|
207
|
+
- regex: 'Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).(\d+)\.(\d+)\.(\d+)'
|
207
208
|
# Onefootball app
|
208
|
-
- regex: 'Mozilla
|
209
|
+
- regex: 'Mozilla.{1,200}Mobile.{1,100}(Onefootball)\/Android.(\d+)\.(\d+)\.(\d+)'
|
209
210
|
# Snapchat
|
210
211
|
- regex: '(Snapchat)\/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
211
212
|
# Twitter
|
@@ -213,15 +214,11 @@ user_agent_parsers:
|
|
213
214
|
family_replacement: 'Twitter'
|
214
215
|
|
215
216
|
# aspiegel.com spider (owned by Huawei)
|
216
|
-
- regex: 'Mozilla
|
217
|
+
- regex: 'Mozilla.{1,100}Mobile.{1,100}AspiegelBot'
|
217
218
|
family_replacement: 'Spider'
|
218
|
-
brand_replacement: 'Spider'
|
219
|
-
model_replacement: 'Smartphone'
|
220
219
|
|
221
220
|
- regex: 'AspiegelBot'
|
222
221
|
family_replacement: 'Spider'
|
223
|
-
brand_replacement: 'Spider'
|
224
|
-
model_replacement: 'Desktop'
|
225
222
|
|
226
223
|
# Basilisk
|
227
224
|
- regex: '(Firefox)/(\d+)\.(\d+) Basilisk/(\d+)'
|
@@ -238,7 +235,7 @@ user_agent_parsers:
|
|
238
235
|
family_replacement: 'Firefox Mobile'
|
239
236
|
- regex: '(Fennec)/(\d+)\.(\d+)'
|
240
237
|
family_replacement: 'Firefox Mobile'
|
241
|
-
- regex: '(?:Mobile|Tablet)
|
238
|
+
- regex: '(?:Mobile|Tablet);.{0,200}(Firefox)/(\d+)\.(\d+)'
|
242
239
|
family_replacement: 'Firefox Mobile'
|
243
240
|
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre|))'
|
244
241
|
family_replacement: 'Firefox ($1)'
|
@@ -252,7 +249,7 @@ user_agent_parsers:
|
|
252
249
|
family_replacement: 'Firefox Beta'
|
253
250
|
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*|)'
|
254
251
|
family_replacement: 'Firefox ($1)'
|
255
|
-
- regex: '(Firefox)
|
252
|
+
- regex: '(Firefox).{0,200}Tablet browser (\d+)\.(\d+)\.(\d+)'
|
256
253
|
family_replacement: 'MicroB'
|
257
254
|
- regex: '(MozillaDeveloperPreview)/(\d+)\.(\d+)([ab]\d+[a-z]*|)'
|
258
255
|
- regex: '(FxiOS)/(\d+)\.(\d+)(\.(\d+)|)(\.(\d+)|)'
|
@@ -284,24 +281,24 @@ user_agent_parsers:
|
|
284
281
|
|
285
282
|
# Opera will stop at 9.80 and hide the real version in the Version string.
|
286
283
|
# see: http://dev.opera.com/articles/view/opera-ua-string-changes/
|
287
|
-
- regex: '(Opera Tablet)
|
284
|
+
- regex: '(Opera Tablet).{0,200}Version/(\d+)\.(\d+)(?:\.(\d+)|)'
|
288
285
|
- regex: '(Opera Mini)(?:/att|)/?(\d+|)(?:\.(\d+)|)(?:\.(\d+)|)'
|
289
|
-
- regex: '(Opera)
|
286
|
+
- regex: '(Opera)/.{1,100}Opera Mobi.{1,100}Version/(\d+)\.(\d+)'
|
290
287
|
family_replacement: 'Opera Mobile'
|
291
|
-
- regex: '(Opera)/(\d+)\.(\d+)
|
288
|
+
- regex: '(Opera)/(\d+)\.(\d+).{1,100}Opera Mobi'
|
292
289
|
family_replacement: 'Opera Mobile'
|
293
|
-
- regex: 'Opera Mobi
|
290
|
+
- regex: 'Opera Mobi.{1,100}(Opera)(?:/|\s+)(\d+)\.(\d+)'
|
294
291
|
family_replacement: 'Opera Mobile'
|
295
292
|
- regex: 'Opera Mobi'
|
296
293
|
family_replacement: 'Opera Mobile'
|
297
|
-
- regex: '(Opera)/9.80
|
294
|
+
- regex: '(Opera)/9.80.{0,200}Version/(\d+)\.(\d+)(?:\.(\d+)|)'
|
298
295
|
|
299
296
|
# Opera 14 for Android uses a WebKit render engine.
|
300
|
-
- regex: '(?:Mobile Safari)
|
297
|
+
- regex: '(?:Mobile Safari).{1,300}(OPR)/(\d+)\.(\d+)\.(\d+)'
|
301
298
|
family_replacement: 'Opera Mobile'
|
302
299
|
|
303
300
|
# Opera >=15 for Desktop is similar to Chrome but includes an "OPR" Version string.
|
304
|
-
- regex: '(?:Chrome)
|
301
|
+
- regex: '(?:Chrome).{1,300}(OPR)/(\d+)\.(\d+)\.(\d+)'
|
305
302
|
family_replacement: 'Opera'
|
306
303
|
|
307
304
|
# Opera Coast
|
@@ -313,7 +310,7 @@ user_agent_parsers:
|
|
313
310
|
family_replacement: 'Opera Mini'
|
314
311
|
|
315
312
|
# Opera Neon
|
316
|
-
- regex: 'Chrome
|
313
|
+
- regex: 'Chrome/.{1,200}( MMS)/(\d+).(\d+).(\d+)'
|
317
314
|
family_replacement: 'Opera Neon'
|
318
315
|
|
319
316
|
# Palm WebOS looks a lot like Safari.
|
@@ -360,7 +357,7 @@ user_agent_parsers:
|
|
360
357
|
|
361
358
|
- regex: '(Symphony) (\d+).(\d+)'
|
362
359
|
|
363
|
-
- regex: 'PLAYSTATION 3
|
360
|
+
- regex: 'PLAYSTATION 3.{1,200}WebKit'
|
364
361
|
family_replacement: 'NetFront NX'
|
365
362
|
- regex: 'PLAYSTATION 3'
|
366
363
|
family_replacement: 'NetFront'
|
@@ -369,7 +366,7 @@ user_agent_parsers:
|
|
369
366
|
- regex: '(PlayStation Vita)'
|
370
367
|
family_replacement: 'NetFront NX'
|
371
368
|
|
372
|
-
- regex: 'AppleWebKit
|
369
|
+
- regex: 'AppleWebKit.{1,200} (NX)/(\d+)\.(\d+)\.(\d+)'
|
373
370
|
family_replacement: 'NetFront NX'
|
374
371
|
- regex: '(Nintendo 3DS)'
|
375
372
|
family_replacement: 'NetFront NX'
|
@@ -382,7 +379,7 @@ user_agent_parsers:
|
|
382
379
|
- regex: '(Puffin)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
383
380
|
|
384
381
|
# Edge Mobile
|
385
|
-
- regex: 'Windows Phone
|
382
|
+
- regex: 'Windows Phone .{0,200}(Edge)/(\d+)\.(\d+)'
|
386
383
|
family_replacement: 'Edge Mobile'
|
387
384
|
- regex: '(EdgiOS|EdgA)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
388
385
|
family_replacement: 'Edge Mobile'
|
@@ -430,7 +427,7 @@ user_agent_parsers:
|
|
430
427
|
family_replacement: 'TopBuzz'
|
431
428
|
|
432
429
|
# Google Search App on Android, eg:
|
433
|
-
- regex: 'Mozilla
|
430
|
+
- regex: 'Mozilla.{1,200}Android.{1,200}(GSA)/(\d+)\.(\d+)\.(\d+)'
|
434
431
|
family_replacement: 'Google'
|
435
432
|
|
436
433
|
# QQ Browsers
|
@@ -441,10 +438,18 @@ user_agent_parsers:
|
|
441
438
|
- regex: '(QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|)'
|
442
439
|
family_replacement: 'QQ Browser'
|
443
440
|
|
441
|
+
# DuckDuckGo
|
442
|
+
- regex: 'Mobile.{0,200}(DuckDuckGo)/(\d+)'
|
443
|
+
family_replacement: 'DuckDuckGo Mobile'
|
444
|
+
|
445
|
+
# Tenta Browser
|
446
|
+
- regex: '(Tenta/)(\d+)\.(\d+)\.(\d+)'
|
447
|
+
family_replacement: 'Tenta Browser'
|
448
|
+
|
444
449
|
# Chrome Mobile
|
445
|
-
- regex: 'Version
|
450
|
+
- regex: 'Version/.{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
446
451
|
family_replacement: 'Chrome Mobile WebView'
|
447
|
-
- regex: '; wv\)
|
452
|
+
- regex: '; wv\).{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
448
453
|
family_replacement: 'Chrome Mobile WebView'
|
449
454
|
- regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
450
455
|
family_replacement: 'Chrome Mobile'
|
@@ -452,7 +457,7 @@ user_agent_parsers:
|
|
452
457
|
family_replacement: 'Chrome Mobile iOS'
|
453
458
|
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)'
|
454
459
|
family_replacement: 'Chrome Mobile'
|
455
|
-
- regex: ' Mobile
|
460
|
+
- regex: ' Mobile .{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
456
461
|
family_replacement: 'Chrome Mobile'
|
457
462
|
|
458
463
|
# Chrome Frame must come before MSIE.
|
@@ -482,7 +487,7 @@ user_agent_parsers:
|
|
482
487
|
family_replacement: 'Yandex Browser'
|
483
488
|
|
484
489
|
# Mail.ru Amigo/Internet Browser (Chromium-based)
|
485
|
-
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)
|
490
|
+
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).{0,100} MRCHROME'
|
486
491
|
family_replacement: 'Mail.ru Chromium Browser'
|
487
492
|
|
488
493
|
# AOL Browser (IE-based)
|
@@ -509,6 +514,9 @@ user_agent_parsers:
|
|
509
514
|
# @ref: http://www.ghost.org
|
510
515
|
- regex: '(Ghost)/(\d+)\.(\d+)\.(\d+)'
|
511
516
|
|
517
|
+
# Palo Alto GlobalProtect Linux
|
518
|
+
- regex: 'PAN (GlobalProtect)/(\d+)\.(\d+)\.(\d+) .{1,100} \(X11; Linux x86_64\)'
|
519
|
+
|
512
520
|
#### END SPECIAL CASES TOP ####
|
513
521
|
|
514
522
|
#### MAIN CASES - this catches > 50% of all browsers ####
|
@@ -550,7 +558,7 @@ user_agent_parsers:
|
|
550
558
|
- regex: 'Microsoft Office (Word) 2014'
|
551
559
|
|
552
560
|
# Windows Live Mail
|
553
|
-
- regex: 'Outlook-Express\/7\.0
|
561
|
+
- regex: 'Outlook-Express\/7\.0'
|
554
562
|
family_replacement: 'Windows Live Mail'
|
555
563
|
|
556
564
|
# Apple Air Mail
|
@@ -590,7 +598,7 @@ user_agent_parsers:
|
|
590
598
|
family_replacement: 'Brave'
|
591
599
|
|
592
600
|
# Iron Browser ~since version 50
|
593
|
-
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]
|
601
|
+
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]{0,100} Iron[^/]'
|
594
602
|
family_replacement: 'Iron'
|
595
603
|
|
596
604
|
# Dolphin Browser
|
@@ -666,13 +674,13 @@ user_agent_parsers:
|
|
666
674
|
- regex: '^(HTC) Streaming Player \S+ / \S+ / \S+ / (\d+)\.(\d+)(?:\.(\d+)|)'
|
667
675
|
- regex: '^(Stitcher)/iOS'
|
668
676
|
- regex: '^(Stitcher)/Android'
|
669
|
-
- regex: '^(VLC)
|
677
|
+
- regex: '^(VLC) .{0,200}version (\d+)\.(\d+)\.(\d+)'
|
670
678
|
- regex: ' (VLC) for'
|
671
679
|
- regex: '(vlc)/(\d+)\.(\d+)\.(\d+)'
|
672
680
|
family_replacement: 'VLC'
|
673
|
-
- regex: '^(foobar)\S
|
674
|
-
- regex: '^(Clementine)\S
|
675
|
-
- regex: '(amarok)/(
|
681
|
+
- regex: '^(foobar)\S{1,10}/(\d+)\.(\d+|)\.?([\da-z]+|)'
|
682
|
+
- regex: '^(Clementine)\S{1,10} (\d+)\.(\d+|)\.?(\d+|)'
|
683
|
+
- regex: '(amarok)/(\d+)\.(\d+|)\.?(\d+|)'
|
676
684
|
family_replacement: 'Amarok'
|
677
685
|
- regex: '(Custom)-Feed Reader'
|
678
686
|
|
@@ -706,7 +714,7 @@ user_agent_parsers:
|
|
706
714
|
|
707
715
|
# desktop mode
|
708
716
|
# http://www.anandtech.com/show/3982/windows-phone-7-review
|
709
|
-
- regex: '(MSIE) (\d+)\.(\d+)
|
717
|
+
- regex: '(MSIE) (\d+)\.(\d+).{0,100}XBLWP7'
|
710
718
|
family_replacement: 'IE Large Screen'
|
711
719
|
|
712
720
|
# Nextcloud desktop sync client
|
@@ -723,6 +731,17 @@ user_agent_parsers:
|
|
723
731
|
- regex: '(OC)/(\d+)\.(\d+)\.(\d+)\.(\d+) \(Skype for Business\)'
|
724
732
|
family_replacement: 'Skype'
|
725
733
|
|
734
|
+
# OpenVAS Scanner
|
735
|
+
- regex: '(OpenVAS)(?:-VT)?(?:[ \/](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
736
|
+
family_replacement: 'OpenVAS Scanner'
|
737
|
+
|
738
|
+
# AnyConnect
|
739
|
+
- regex: '(AnyConnect)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
|
740
|
+
|
741
|
+
# Monitis
|
742
|
+
- regex: 'compatible; monitis'
|
743
|
+
family_replacement: 'Monitis'
|
744
|
+
|
726
745
|
#### END MAIN CASES ####
|
727
746
|
|
728
747
|
#### SPECIAL CASES ####
|
@@ -759,15 +778,15 @@ user_agent_parsers:
|
|
759
778
|
family_replacement: 'TopBuzz'
|
760
779
|
|
761
780
|
# @note: iOS / OSX Applications
|
762
|
-
- regex: '(iPod|iPhone|iPad)
|
781
|
+
- regex: '(iPod|iPhone|iPad).{1,200}GSA/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|) Mobile'
|
763
782
|
family_replacement: 'Google'
|
764
|
-
- regex: '(iPod|iPhone|iPad)
|
783
|
+
- regex: '(iPod|iPhone|iPad).{1,200}Version/(\d+)\.(\d+)(?:\.(\d+)|).{1,200}[ +]Safari'
|
765
784
|
family_replacement: 'Mobile Safari'
|
766
|
-
- regex: '(iPod|iPod touch|iPhone|iPad)
|
785
|
+
- regex: '(iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\d+)_(\d+)(?:_(\d+)|).{0,30} AppleNews\/\d+\.\d+(?:\.\d+|)'
|
767
786
|
family_replacement: 'Mobile Safari UI/WKWebView'
|
768
|
-
- regex: '(iPod|iPhone|iPad)
|
787
|
+
- regex: '(iPod|iPhone|iPad).{1,200}Version/(\d+)\.(\d+)(?:\.(\d+)|)'
|
769
788
|
family_replacement: 'Mobile Safari UI/WKWebView'
|
770
|
-
- regex: '(iPod|iPod touch|iPhone|iPad)
|
789
|
+
- regex: '(iPod|iPod touch|iPhone|iPad).{0,200} Safari'
|
771
790
|
family_replacement: 'Mobile Safari'
|
772
791
|
- regex: '(iPod|iPod touch|iPhone|iPad)'
|
773
792
|
family_replacement: 'Mobile Safari UI/WKWebView'
|
@@ -818,9 +837,9 @@ user_agent_parsers:
|
|
818
837
|
- regex: '(Nokia)[EN]?(\d+)'
|
819
838
|
|
820
839
|
# BlackBerry devices
|
821
|
-
- regex: '(PlayBook)
|
840
|
+
- regex: '(PlayBook).{1,200}RIM Tablet OS (\d+)\.(\d+)\.(\d+)'
|
822
841
|
family_replacement: 'BlackBerry WebKit'
|
823
|
-
- regex: '(Black[bB]erry|BB10)
|
842
|
+
- regex: '(Black[bB]erry|BB10).{1,200}Version/(\d+)\.(\d+)\.(\d+)'
|
824
843
|
family_replacement: 'BlackBerry WebKit'
|
825
844
|
- regex: '(Black[bB]erry)\s?(\d+)'
|
826
845
|
family_replacement: 'BlackBerry'
|
@@ -840,18 +859,15 @@ user_agent_parsers:
|
|
840
859
|
|
841
860
|
- regex: '(QtWeb) Internet Browser/(\d+)\.(\d+)'
|
842
861
|
|
843
|
-
#- regex: '\(iPad;.+(Version)/(\d+)\.(\d+)(?:\.(\d+)|).*Safari/'
|
844
|
-
# family_replacement: 'iPad'
|
845
|
-
|
846
862
|
# Phantomjs, should go before Safari
|
847
863
|
- regex: '(PhantomJS)/(\d+)\.(\d+)\.(\d+)'
|
848
864
|
|
849
865
|
# WebKit Nightly
|
850
|
-
- regex: '(AppleWebKit)/(\d+)(?:\.(\d+)|)\+
|
866
|
+
- regex: '(AppleWebKit)/(\d+)(?:\.(\d+)|)\+ .{0,200} Safari'
|
851
867
|
family_replacement: 'WebKit Nightly'
|
852
868
|
|
853
869
|
# Safari
|
854
|
-
- regex: '(Version)/(\d+)\.(\d+)(?:\.(\d+)|)
|
870
|
+
- regex: '(Version)/(\d+)\.(\d+)(?:\.(\d+)|).{0,100}Safari/'
|
855
871
|
family_replacement: 'Safari'
|
856
872
|
# Safari didn't provide "Version/d.d.d" prior to 3.0
|
857
873
|
- regex: '(Safari)/\d+'
|
@@ -900,6 +916,7 @@ user_agent_parsers:
|
|
900
916
|
- regex: '(Firefox)/(\d+)\.(\d+)\.(\d+)'
|
901
917
|
- regex: '(Firefox)/(\d+)\.(\d+)(pre|[ab]\d+[a-z]*|)'
|
902
918
|
|
919
|
+
|
903
920
|
- regex: '([MS]?IE) (\d+)\.(\d+)'
|
904
921
|
family_replacement: 'IE'
|
905
922
|
|
@@ -907,7 +924,30 @@ user_agent_parsers:
|
|
907
924
|
family_replacement: 'Python Requests'
|
908
925
|
|
909
926
|
# headless user-agents
|
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+)|)|)'
|
927
|
+
- 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|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
928
|
+
|
929
|
+
# CloudFoundry
|
930
|
+
- regex: '^(cf)\/(\d+)\.(\d+)\.(\S+)'
|
931
|
+
family_replacement: 'CloudFoundry'
|
932
|
+
|
933
|
+
# SAP Leonardo
|
934
|
+
- regex: '^(sap-leonardo-iot-sdk-nodejs) \/ (\d+)\.(\d+)\.(\d+)'
|
935
|
+
|
936
|
+
# SAP Netweaver Application Server
|
937
|
+
- regex: '^(SAP NetWeaver Application Server) \(1.0;(\d{1})(\d{2})\)'
|
938
|
+
|
939
|
+
# HttpClient
|
940
|
+
- regex: '^(\w+-HTTPClient)\/(\d+)\.(\d+)-(\S+)'
|
941
|
+
family_replacement: 'HTTPClient'
|
942
|
+
|
943
|
+
# go-cli
|
944
|
+
- regex: '^(go-cli)\s(\d+)\.(\d+).(\S+)'
|
945
|
+
|
946
|
+
# Other Clients with the pattern <Name>/[v]<Major>.<Minor>[.<Patch>]
|
947
|
+
- regex: '^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\/v?(\d+)\.(\d+)\.?(\d*)'
|
948
|
+
|
949
|
+
## Clints with the pattern <Name>
|
950
|
+
- regex: '^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY)'
|
911
951
|
|
912
952
|
# Asynchronous HTTP Client/Server for asyncio and Python (https://aiohttp.readthedocs.io/)
|
913
953
|
- regex: '(Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+)'
|
@@ -915,9 +955,25 @@ user_agent_parsers:
|
|
915
955
|
|
916
956
|
- regex: '(Java)[/ ]?\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)'
|
917
957
|
|
958
|
+
# minio-go (https://github.com/minio/minio-go)
|
959
|
+
- regex: '(minio-go)/v(\d+)\.(\d+)\.(\d+)'
|
960
|
+
|
961
|
+
# ureq - minimal request library in rust (https://github.com/algesten/ureq)
|
962
|
+
- regex: '^(ureq)[/ ](\d+)\.(\d+).(\d+)'
|
963
|
+
|
964
|
+
# http.rb - HTTP (The Gem! a.k.a. http.rb) - a fast Ruby HTTP client
|
965
|
+
# (https://github.com/httprb/http/blob/3aa7470288deb81f7d7b982c1e2381871049dcbb/lib/http/request.rb#L27)
|
966
|
+
- regex: '^(http\.rb)/(\d+)\.(\d+).(\d+)'
|
967
|
+
|
968
|
+
# Guzzle, PHP HTTP client (https://docs.guzzlephp.org/)
|
969
|
+
- regex: '^(GuzzleHttp)/(\d+)\.(\d+).(\d+)'
|
970
|
+
|
971
|
+
# lorien/grab - Web Scraping Framework (https://github.com/lorien/grab)
|
972
|
+
- regex: '^(grab)\b'
|
973
|
+
|
918
974
|
# Cloud Storage Clients
|
919
975
|
- regex: '^(Cyberduck)/(\d+)\.(\d+)\.(\d+)(?:\.\d+|)'
|
920
|
-
- regex: '^(S3 Browser) (\d+)
|
976
|
+
- regex: '^(S3 Browser) (\d+)[.-](\d+)[.-](\d+)(?:\s*https?://s3browser\.com|)'
|
921
977
|
- regex: '(S3Gof3r)'
|
922
978
|
# IBM COS (Cloud Object Storage) API
|
923
979
|
- regex: '\b(ibm-cos-sdk-(?:core|java|js|python))/(\d+)\.(\d+)(?:\.(\d+)|)'
|
@@ -940,6 +996,15 @@ user_agent_parsers:
|
|
940
996
|
- regex: '^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/(\d+)\.(\d+)\.(\d+)'
|
941
997
|
family_replacement: 'ViaFree'
|
942
998
|
|
999
|
+
# Transmit (https://library.panic.com/transmit/)
|
1000
|
+
- regex: '(Transmit)/(\d+)\.(\d+)\.(\d+)'
|
1001
|
+
|
1002
|
+
# Download Master (https://downloadmaster.ru/)
|
1003
|
+
- regex: '(Download Master)'
|
1004
|
+
|
1005
|
+
# HTTrack crawler
|
1006
|
+
- regex: '\b(HTTrack) (\d+)\.(\d+)(?:[\.\-](\d+)|)'
|
1007
|
+
|
943
1008
|
os_parsers:
|
944
1009
|
##########
|
945
1010
|
# HbbTV vendors
|
@@ -955,7 +1020,7 @@ os_parsers:
|
|
955
1020
|
# Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11
|
956
1021
|
# Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL40HX751; PKG1.902EUA; 2012;);; en) Presto/2.10.250 Version/11.60
|
957
1022
|
# Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL22EX320; PKG4.017EUA; 2011;);; en) Presto/2.7.61 Version/11.00
|
958
|
-
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(; (Sony)
|
1023
|
+
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(; (Sony);.{0,200};.{0,200}; ([0-9]{4});\)'
|
959
1024
|
|
960
1025
|
|
961
1026
|
# LG is consistent too, but we need to add manually the year model
|
@@ -975,9 +1040,9 @@ os_parsers:
|
|
975
1040
|
os_replacement: 'Samsung'
|
976
1041
|
os_v1_replacement: '2011'
|
977
1042
|
# manage the two models of 2013
|
978
|
-
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4})
|
1043
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.{0,200}FXPDEUC'
|
979
1044
|
os_v2_replacement: 'UE40F7000'
|
980
|
-
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4})
|
1045
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.{0,200}MST12DEUC'
|
981
1046
|
os_v2_replacement: 'UE32F4500'
|
982
1047
|
# generic Samsung (works starting in 2012)
|
983
1048
|
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});'
|
@@ -985,26 +1050,26 @@ os_parsers:
|
|
985
1050
|
# Philips : not found any other way than a manual mapping
|
986
1051
|
# Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.1.3 PHILIPSTV/1.1.1; en) Presto/2.10.250 Version/11.60
|
987
1052
|
# Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70
|
988
|
-
- regex: 'HbbTV/1\.1\.1 \(; (Philips)
|
1053
|
+
- regex: 'HbbTV/1\.1\.1 \(; (Philips);.{0,200}NETTV/4'
|
989
1054
|
os_v1_replacement: '2013'
|
990
|
-
- regex: 'HbbTV/1\.1\.1 \(; (Philips)
|
1055
|
+
- regex: 'HbbTV/1\.1\.1 \(; (Philips);.{0,200}NETTV/3'
|
991
1056
|
os_v1_replacement: '2012'
|
992
|
-
- regex: 'HbbTV/1\.1\.1 \(; (Philips)
|
1057
|
+
- regex: 'HbbTV/1\.1\.1 \(; (Philips);.{0,200}NETTV/2'
|
993
1058
|
os_v1_replacement: '2011'
|
994
1059
|
|
995
1060
|
# the HbbTV emulator developers use HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20
|
996
|
-
- regex: 'HbbTV/\d+\.\d+\.\d
|
1061
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+.{0,100}(firetv)-firefox-plugin (\d+).(\d+).(\d+)'
|
997
1062
|
os_replacement: 'FireHbbTV'
|
998
1063
|
|
999
1064
|
# generic HbbTV, hoping to catch manufacturer name (always after 2nd comma) and the first string that looks like a 2011-2019 year
|
1000
|
-
- regex: 'HbbTV/\d+\.\d+\.\d+ \(
|
1065
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(.{0,30}; ?([a-zA-Z]+) ?;.{0,30}(201[1-9]).{0,30}\)'
|
1001
1066
|
|
1002
1067
|
# aspiegel.com spider (owned by Huawei)
|
1003
1068
|
- regex: 'AspiegelBot'
|
1004
1069
|
os_replacement: 'Other'
|
1005
1070
|
|
1006
1071
|
##########
|
1007
|
-
# @note: Windows Phone needs to come before Windows NT 6.1
|
1072
|
+
# @note: Windows Phone needs to come before Windows NT 6.1 {0,2}and* before Android to catch cases such as:
|
1008
1073
|
# 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)...
|
1009
1074
|
# 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; ANZ821)...
|
1010
1075
|
# 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; Orange)...
|
@@ -1013,12 +1078,12 @@ os_parsers:
|
|
1013
1078
|
|
1014
1079
|
- regex: '(Windows Phone) (?:OS[ /])?(\d+)\.(\d+)'
|
1015
1080
|
|
1016
|
-
# Again a MS-special one: iPhone
|
1017
|
-
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|)
|
1081
|
+
# Again a MS-special one: iPhone.{0,200}Outlook-iOS-Android/x.x is erroneously detected as Android
|
1082
|
+
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|).{0,100}Outlook-iOS-Android'
|
1018
1083
|
os_replacement: 'iOS'
|
1019
1084
|
|
1020
1085
|
# Special case for old ArcGIS Mobile products
|
1021
|
-
- regex: 'ArcGIS\.?(iOS|Android)-\d+\.\d+(?:\.\d+|)(?:[^\/]
|
1086
|
+
- regex: 'ArcGIS\.?(iOS|Android)-\d+\.\d+(?:\.\d+|)(?:[^\/]{1,50}|)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
|
1022
1087
|
|
1023
1088
|
# Special case for new ArcGIS Mobile products
|
1024
1089
|
- regex: 'ArcGISRuntime-(?:Android|iOS)\/\d+\.\d+(?:\.\d+|) \((Android|iOS) (\d+)(?:\.(\d+)(?:\.(\d+)|)|);'
|
@@ -1052,14 +1117,14 @@ os_parsers:
|
|
1052
1117
|
- regex: '(Android) (\d+);'
|
1053
1118
|
|
1054
1119
|
# UCWEB
|
1055
|
-
- regex: '^UCWEB
|
1120
|
+
- regex: '^UCWEB.{0,200}; (Adr) (\d+)\.(\d+)(?:[.\-]([a-z0-9]{1,100})|);'
|
1056
1121
|
os_replacement: 'Android'
|
1057
|
-
- regex: '^UCWEB
|
1122
|
+
- regex: '^UCWEB.{0,200}; (iPad|iPh|iPd) OS (\d+)_(\d+)(?:_(\d+)|);'
|
1058
1123
|
os_replacement: 'iOS'
|
1059
|
-
- regex: '^UCWEB
|
1124
|
+
- regex: '^UCWEB.{0,200}; (wds) (\d+)\.(\d+)(?:\.(\d+)|);'
|
1060
1125
|
os_replacement: 'Windows Phone'
|
1061
1126
|
# JUC
|
1062
|
-
- regex: '^(JUC)
|
1127
|
+
- regex: '^(JUC).{0,200}; ?U; ?(?:Android|)(\d+)\.(\d+)(?:[\.\-]([a-z0-9]{1,100})|)'
|
1063
1128
|
os_replacement: 'Android'
|
1064
1129
|
|
1065
1130
|
# Salesforce
|
@@ -1077,7 +1142,7 @@ os_parsers:
|
|
1077
1142
|
# properly identify as Chrome OS
|
1078
1143
|
#
|
1079
1144
|
# ex: Mozilla/5.0 (X11; Windows aarch64 10718.88.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.118 Safari/537.36 CitrixChromeApp
|
1080
|
-
- regex: '(x86_64|aarch64)\ (\d+)\.(\d+)\.(\d+)
|
1145
|
+
- regex: '(x86_64|aarch64)\ (\d+)\.(\d+)\.(\d+).{0,100}Chrome.{0,100}(?:CitrixChromeApp)$'
|
1081
1146
|
os_replacement: 'Chrome OS'
|
1082
1147
|
|
1083
1148
|
##########
|
@@ -1169,7 +1234,7 @@ os_parsers:
|
|
1169
1234
|
os_v1_replacement: '95'
|
1170
1235
|
|
1171
1236
|
# Box apps (Drive, Sync, Notes) on Windows https://www.box.com/resources/downloads
|
1172
|
-
- regex: '^Box
|
1237
|
+
- regex: '^Box.{0,200}Windows/([\d.]+);'
|
1173
1238
|
os_replacement: 'Windows'
|
1174
1239
|
os_v1_replacement: '$1'
|
1175
1240
|
|
@@ -1186,33 +1251,33 @@ os_parsers:
|
|
1186
1251
|
##########
|
1187
1252
|
- regex: '((?:Mac[ +]?|; )OS[ +]X)[\s+/](?:(\d+)[_.](\d+)(?:[_.](\d+)|)|Mach-O)'
|
1188
1253
|
os_replacement: 'Mac OS X'
|
1189
|
-
- regex: '
|
1254
|
+
- regex: 'Mac OS X\s.{1,50}\s(\d+).(\d+).(\d+)'
|
1190
1255
|
os_replacement: 'Mac OS X'
|
1191
1256
|
os_v1_replacement: '$1'
|
1192
1257
|
os_v2_replacement: '$2'
|
1193
1258
|
os_v3_replacement: '$3'
|
1194
1259
|
# Leopard
|
1195
|
-
- regex: ' (Dar)(win)/(9).(\d+)
|
1260
|
+
- regex: ' (Dar)(win)/(9).(\d+).{0,100}\((?:i386|x86_64|Power Macintosh)\)'
|
1196
1261
|
os_replacement: 'Mac OS X'
|
1197
1262
|
os_v1_replacement: '10'
|
1198
1263
|
os_v2_replacement: '5'
|
1199
1264
|
# Snow Leopard
|
1200
|
-
- regex: ' (Dar)(win)/(10).(\d+)
|
1265
|
+
- regex: ' (Dar)(win)/(10).(\d+).{0,100}\((?:i386|x86_64)\)'
|
1201
1266
|
os_replacement: 'Mac OS X'
|
1202
1267
|
os_v1_replacement: '10'
|
1203
1268
|
os_v2_replacement: '6'
|
1204
1269
|
# Lion
|
1205
|
-
- regex: ' (Dar)(win)/(11).(\d+)
|
1270
|
+
- regex: ' (Dar)(win)/(11).(\d+).{0,100}\((?:i386|x86_64)\)'
|
1206
1271
|
os_replacement: 'Mac OS X'
|
1207
1272
|
os_v1_replacement: '10'
|
1208
1273
|
os_v2_replacement: '7'
|
1209
1274
|
# Mountain Lion
|
1210
|
-
- regex: ' (Dar)(win)/(12).(\d+)
|
1275
|
+
- regex: ' (Dar)(win)/(12).(\d+).{0,100}\((?:i386|x86_64)\)'
|
1211
1276
|
os_replacement: 'Mac OS X'
|
1212
1277
|
os_v1_replacement: '10'
|
1213
1278
|
os_v2_replacement: '8'
|
1214
1279
|
# Mavericks
|
1215
|
-
- regex: ' (Dar)(win)/(13).(\d+)
|
1280
|
+
- regex: ' (Dar)(win)/(13).(\d+).{0,100}\((?:i386|x86_64)\)'
|
1216
1281
|
os_replacement: 'Mac OS X'
|
1217
1282
|
os_v1_replacement: '10'
|
1218
1283
|
os_v2_replacement: '9'
|
@@ -1229,7 +1294,7 @@ os_parsers:
|
|
1229
1294
|
- regex: '(?:PPC|Intel) (Mac OS X)'
|
1230
1295
|
|
1231
1296
|
# Box Drive and Box Sync on Mac OS X use OSX version numbers, not Darwin
|
1232
|
-
- regex: '^Box
|
1297
|
+
- regex: '^Box.{0,200};(Darwin)/(10)\.(1\d)(?:\.(\d+)|)'
|
1233
1298
|
os_replacement: 'Mac OS X'
|
1234
1299
|
|
1235
1300
|
##########
|
@@ -1240,7 +1305,7 @@ os_parsers:
|
|
1240
1305
|
- regex: '(Apple\s?TV)(?:/(\d+)\.(\d+)|)'
|
1241
1306
|
os_replacement: 'ATV OS X'
|
1242
1307
|
|
1243
|
-
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|)'
|
1308
|
+
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|)'
|
1244
1309
|
os_replacement: 'iOS'
|
1245
1310
|
|
1246
1311
|
# remaining cases are mostly only opera uas, so catch opera as to not catch iphone spoofs
|
@@ -1248,15 +1313,15 @@ os_parsers:
|
|
1248
1313
|
os_replacement: 'iOS'
|
1249
1314
|
|
1250
1315
|
# few more stragglers
|
1251
|
-
- regex: '(iPhone|iPad|iPod)
|
1316
|
+
- regex: '(iPhone|iPad|iPod).{0,100}Mac OS X.{0,100}Version/(\d+)\.(\d+)'
|
1252
1317
|
os_replacement: 'iOS'
|
1253
1318
|
|
1254
1319
|
# CFNetwork/Darwin - The specific CFNetwork or Darwin version determines
|
1255
1320
|
# whether the os maps to Mac OS, or iOS, or just Darwin.
|
1256
1321
|
# See: http://user-agents.me/cfnetwork-version-list
|
1257
|
-
- regex: '(CFNetwork)/(5)48\.0\.3
|
1322
|
+
- regex: '(CFNetwork)/(5)48\.0\.3.{0,100} Darwin/11\.0\.0'
|
1258
1323
|
os_replacement: 'iOS'
|
1259
|
-
- regex: '(CFNetwork)/(5)48\.(0)\.4
|
1324
|
+
- regex: '(CFNetwork)/(5)48\.(0)\.4.{0,100} Darwin/(1)1\.0\.0'
|
1260
1325
|
os_replacement: 'iOS'
|
1261
1326
|
- regex: '(CFNetwork)/(5)48\.(1)\.4'
|
1262
1327
|
os_replacement: 'iOS'
|
@@ -1291,17 +1356,17 @@ os_parsers:
|
|
1291
1356
|
os_replacement: 'Mac OS X'
|
1292
1357
|
os_v1_replacement: '10'
|
1293
1358
|
os_v2_replacement: '11'
|
1294
|
-
- regex: 'CFNetwork/7
|
1359
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/15\.4\.\d+'
|
1295
1360
|
os_replacement: 'iOS'
|
1296
1361
|
os_v1_replacement: '9'
|
1297
1362
|
os_v2_replacement: '3'
|
1298
1363
|
os_v3_replacement: '1'
|
1299
|
-
- regex: 'CFNetwork/7
|
1364
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/15\.5\.\d+'
|
1300
1365
|
os_replacement: 'iOS'
|
1301
1366
|
os_v1_replacement: '9'
|
1302
1367
|
os_v2_replacement: '3'
|
1303
1368
|
os_v3_replacement: '2'
|
1304
|
-
- regex: 'CFNetwork/7
|
1369
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/15\.6\.\d+'
|
1305
1370
|
os_replacement: 'iOS'
|
1306
1371
|
os_v1_replacement: '9'
|
1307
1372
|
os_v2_replacement: '3'
|
@@ -1322,15 +1387,15 @@ os_parsers:
|
|
1322
1387
|
# CFNetwork macOS Apps (must be before CFNetwork iOS Apps
|
1323
1388
|
# @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
|
1324
1389
|
##########
|
1325
|
-
- regex: 'CFNetwork
|
1390
|
+
- regex: 'CFNetwork/.{0,100} Darwin/17\.\d+.{0,100}\(x86_64\)'
|
1326
1391
|
os_replacement: 'Mac OS X'
|
1327
1392
|
os_v1_replacement: '10'
|
1328
1393
|
os_v2_replacement: '13'
|
1329
|
-
- regex: 'CFNetwork
|
1394
|
+
- regex: 'CFNetwork/.{0,100} Darwin/16\.\d+.{0,100}\(x86_64\)'
|
1330
1395
|
os_replacement: 'Mac OS X'
|
1331
1396
|
os_v1_replacement: '10'
|
1332
1397
|
os_v2_replacement: '12'
|
1333
|
-
- regex: 'CFNetwork/8
|
1398
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/15\.\d+.{0,100}\(x86_64\)'
|
1334
1399
|
os_replacement: 'Mac OS X'
|
1335
1400
|
os_v1_replacement: '10'
|
1336
1401
|
os_v2_replacement: '11'
|
@@ -1338,87 +1403,146 @@ os_parsers:
|
|
1338
1403
|
# CFNetwork iOS Apps
|
1339
1404
|
# @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
|
1340
1405
|
##########
|
1341
|
-
- regex: 'CFNetwork
|
1406
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(9)\.\d+'
|
1342
1407
|
os_replacement: 'iOS'
|
1343
1408
|
os_v1_replacement: '1'
|
1344
|
-
- regex: 'CFNetwork
|
1409
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(10)\.\d+'
|
1345
1410
|
os_replacement: 'iOS'
|
1346
1411
|
os_v1_replacement: '4'
|
1347
|
-
- regex: 'CFNetwork
|
1412
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(11)\.\d+'
|
1348
1413
|
os_replacement: 'iOS'
|
1349
1414
|
os_v1_replacement: '5'
|
1350
|
-
- regex: 'CFNetwork
|
1415
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(13)\.\d+'
|
1351
1416
|
os_replacement: 'iOS'
|
1352
1417
|
os_v1_replacement: '6'
|
1353
|
-
- regex: 'CFNetwork/6
|
1418
|
+
- regex: 'CFNetwork/6.{0,100} Darwin/(14)\.\d+'
|
1354
1419
|
os_replacement: 'iOS'
|
1355
1420
|
os_v1_replacement: '7'
|
1356
|
-
- regex: 'CFNetwork/7
|
1421
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/(14)\.\d+'
|
1357
1422
|
os_replacement: 'iOS'
|
1358
1423
|
os_v1_replacement: '8'
|
1359
1424
|
os_v2_replacement: '0'
|
1360
|
-
- regex: 'CFNetwork/7
|
1425
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/(15)\.\d+'
|
1361
1426
|
os_replacement: 'iOS'
|
1362
1427
|
os_v1_replacement: '9'
|
1363
1428
|
os_v2_replacement: '0'
|
1364
|
-
- regex: 'CFNetwork/8
|
1429
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/16\.5\.\d+'
|
1365
1430
|
os_replacement: 'iOS'
|
1366
1431
|
os_v1_replacement: '10'
|
1367
1432
|
os_v2_replacement: '3'
|
1368
|
-
- regex: 'CFNetwork/8
|
1433
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/16\.6\.\d+'
|
1369
1434
|
os_replacement: 'iOS'
|
1370
1435
|
os_v1_replacement: '10'
|
1371
1436
|
os_v2_replacement: '3'
|
1372
1437
|
os_v3_replacement: '2'
|
1373
|
-
- regex: 'CFNetwork/8
|
1438
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/16\.7\.\d+'
|
1374
1439
|
os_replacement: 'iOS'
|
1375
1440
|
os_v1_replacement: '10'
|
1376
1441
|
os_v2_replacement: '3'
|
1377
1442
|
os_v3_replacement: '3'
|
1378
|
-
- regex: 'CFNetwork/8
|
1443
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/(16)\.\d+'
|
1379
1444
|
os_replacement: 'iOS'
|
1380
1445
|
os_v1_replacement: '10'
|
1381
|
-
- regex: 'CFNetwork/8
|
1446
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.0\.\d+'
|
1382
1447
|
os_replacement: 'iOS'
|
1383
1448
|
os_v1_replacement: '11'
|
1384
1449
|
os_v2_replacement: '0'
|
1385
|
-
- regex: 'CFNetwork/8
|
1450
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.2\.\d+'
|
1386
1451
|
os_replacement: 'iOS'
|
1387
1452
|
os_v1_replacement: '11'
|
1388
1453
|
os_v2_replacement: '1'
|
1389
|
-
- regex: 'CFNetwork/8
|
1454
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.3\.\d+'
|
1390
1455
|
os_replacement: 'iOS'
|
1391
1456
|
os_v1_replacement: '11'
|
1392
1457
|
os_v2_replacement: '2'
|
1393
|
-
- regex: 'CFNetwork/8
|
1458
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.4\.\d+'
|
1394
1459
|
os_replacement: 'iOS'
|
1395
1460
|
os_v1_replacement: '11'
|
1396
1461
|
os_v2_replacement: '2'
|
1397
1462
|
os_v3_replacement: '6'
|
1398
|
-
- regex: 'CFNetwork/8
|
1463
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.5\.\d+'
|
1399
1464
|
os_replacement: 'iOS'
|
1400
1465
|
os_v1_replacement: '11'
|
1401
1466
|
os_v2_replacement: '3'
|
1402
|
-
- regex: 'CFNetwork/9
|
1467
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/17\.6\.\d+'
|
1403
1468
|
os_replacement: 'iOS'
|
1404
1469
|
os_v1_replacement: '11'
|
1405
1470
|
os_v2_replacement: '4'
|
1406
|
-
- regex: 'CFNetwork/9
|
1471
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/17\.7\.\d+'
|
1407
1472
|
os_replacement: 'iOS'
|
1408
1473
|
os_v1_replacement: '11'
|
1409
1474
|
os_v2_replacement: '4'
|
1410
1475
|
os_v3_replacement: '1'
|
1411
|
-
- regex: 'CFNetwork/8
|
1476
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/(17)\.\d+'
|
1412
1477
|
os_replacement: 'iOS'
|
1413
1478
|
os_v1_replacement: '11'
|
1414
|
-
- regex: 'CFNetwork/9
|
1479
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.0\.\d+'
|
1415
1480
|
os_replacement: 'iOS'
|
1416
1481
|
os_v1_replacement: '12'
|
1417
1482
|
os_v2_replacement: '0'
|
1418
|
-
- regex: 'CFNetwork/9
|
1483
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.2\.\d+'
|
1484
|
+
os_replacement: 'iOS'
|
1485
|
+
os_v1_replacement: '12'
|
1486
|
+
os_v2_replacement: '1'
|
1487
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.5\.\d+'
|
1488
|
+
os_replacement: 'iOS'
|
1489
|
+
os_v1_replacement: '12'
|
1490
|
+
os_v2_replacement: '2'
|
1491
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.6\.\d+'
|
1492
|
+
os_replacement: 'iOS'
|
1493
|
+
os_v1_replacement: '12'
|
1494
|
+
os_v2_replacement: '3'
|
1495
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.7\.\d+'
|
1419
1496
|
os_replacement: 'iOS'
|
1420
1497
|
os_v1_replacement: '12'
|
1421
|
-
|
1498
|
+
os_v2_replacement: '4'
|
1499
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/(18)\.\d+'
|
1500
|
+
os_replacement: 'iOS'
|
1501
|
+
os_v1_replacement: '12'
|
1502
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.2\.\d+'
|
1503
|
+
os_replacement: 'iOS'
|
1504
|
+
os_v1_replacement: '13'
|
1505
|
+
os_v2_replacement: '3'
|
1506
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.3\.\d+'
|
1507
|
+
os_replacement: 'iOS'
|
1508
|
+
os_v1_replacement: '13'
|
1509
|
+
os_v2_replacement: '3'
|
1510
|
+
os_v3_replacement: '1'
|
1511
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.4\.\d+'
|
1512
|
+
os_replacement: 'iOS'
|
1513
|
+
os_v1_replacement: '13'
|
1514
|
+
os_v2_replacement: '4'
|
1515
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.5\.\d+'
|
1516
|
+
os_replacement: 'iOS'
|
1517
|
+
os_v1_replacement: '13'
|
1518
|
+
os_v2_replacement: '5'
|
1519
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.6\.\d+'
|
1520
|
+
os_replacement: 'iOS'
|
1521
|
+
os_v1_replacement: '13'
|
1522
|
+
os_v2_replacement: '6'
|
1523
|
+
- regex: 'CFNetwork/1[01].{0,100} Darwin/19\.\d+'
|
1524
|
+
os_replacement: 'iOS'
|
1525
|
+
os_v1_replacement: '13'
|
1526
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.1\.\d+'
|
1527
|
+
os_replacement: 'iOS'
|
1528
|
+
os_v1_replacement: '14'
|
1529
|
+
os_v2_replacement: '2'
|
1530
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.2\.\d+'
|
1531
|
+
os_replacement: 'iOS'
|
1532
|
+
os_v1_replacement: '14'
|
1533
|
+
os_v2_replacement: '3'
|
1534
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.3\.\d+'
|
1535
|
+
os_replacement: 'iOS'
|
1536
|
+
os_v1_replacement: '14'
|
1537
|
+
os_v2_replacement: '4'
|
1538
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.4\.\d+'
|
1539
|
+
os_replacement: 'iOS'
|
1540
|
+
os_v1_replacement: '14'
|
1541
|
+
os_v2_replacement: '5'
|
1542
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(20)\.\d+'
|
1543
|
+
os_replacement: 'iOS'
|
1544
|
+
os_v1_replacement: '14'
|
1545
|
+
- regex: 'CFNetwork/.{0,100} Darwin/'
|
1422
1546
|
os_replacement: 'iOS'
|
1423
1547
|
|
1424
1548
|
# iOS Apps
|
@@ -1472,9 +1596,9 @@ os_parsers:
|
|
1472
1596
|
##########
|
1473
1597
|
- regex: '(Symbian[Oo][Ss])[/ ](\d+)\.(\d+)'
|
1474
1598
|
os_replacement: 'Symbian OS'
|
1475
|
-
- regex: '(Symbian/3)
|
1599
|
+
- regex: '(Symbian/3).{1,200}NokiaBrowser/7\.3'
|
1476
1600
|
os_replacement: 'Symbian^3 Anna'
|
1477
|
-
- regex: '(Symbian/3)
|
1601
|
+
- regex: '(Symbian/3).{1,200}NokiaBrowser/7\.4'
|
1478
1602
|
os_replacement: 'Symbian^3 Belle'
|
1479
1603
|
- regex: '(Symbian/3)'
|
1480
1604
|
os_replacement: 'Symbian^3'
|
@@ -1491,11 +1615,11 @@ os_parsers:
|
|
1491
1615
|
##########
|
1492
1616
|
# BlackBerry devices
|
1493
1617
|
##########
|
1494
|
-
- regex: '(BB10)
|
1618
|
+
- regex: '(BB10);.{1,200}Version/(\d+)\.(\d+)\.(\d+)'
|
1495
1619
|
os_replacement: 'BlackBerry OS'
|
1496
1620
|
- regex: '(Black[Bb]erry)[0-9a-z]+/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
|
1497
1621
|
os_replacement: 'BlackBerry OS'
|
1498
|
-
- regex: '(Black[Bb]erry)
|
1622
|
+
- regex: '(Black[Bb]erry).{1,200}Version/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
|
1499
1623
|
os_replacement: 'BlackBerry OS'
|
1500
1624
|
- regex: '(RIM Tablet OS) (\d+)\.(\d+)\.(\d+)'
|
1501
1625
|
os_replacement: 'BlackBerry Tablet OS'
|
@@ -1513,44 +1637,44 @@ os_parsers:
|
|
1513
1637
|
##########
|
1514
1638
|
# Firefox OS
|
1515
1639
|
##########
|
1516
|
-
- regex: '\((?:Mobile|Tablet)
|
1640
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/18.0 Firefox/\d+\.\d+'
|
1517
1641
|
os_replacement: 'Firefox OS'
|
1518
1642
|
os_v1_replacement: '1'
|
1519
1643
|
os_v2_replacement: '0'
|
1520
1644
|
os_v3_replacement: '1'
|
1521
1645
|
|
1522
|
-
- regex: '\((?:Mobile|Tablet)
|
1646
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/18.1 Firefox/\d+\.\d+'
|
1523
1647
|
os_replacement: 'Firefox OS'
|
1524
1648
|
os_v1_replacement: '1'
|
1525
1649
|
os_v2_replacement: '1'
|
1526
1650
|
|
1527
|
-
- regex: '\((?:Mobile|Tablet)
|
1651
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/26.0 Firefox/\d+\.\d+'
|
1528
1652
|
os_replacement: 'Firefox OS'
|
1529
1653
|
os_v1_replacement: '1'
|
1530
1654
|
os_v2_replacement: '2'
|
1531
1655
|
|
1532
|
-
- regex: '\((?:Mobile|Tablet)
|
1656
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/28.0 Firefox/\d+\.\d+'
|
1533
1657
|
os_replacement: 'Firefox OS'
|
1534
1658
|
os_v1_replacement: '1'
|
1535
1659
|
os_v2_replacement: '3'
|
1536
1660
|
|
1537
|
-
- regex: '\((?:Mobile|Tablet)
|
1661
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/30.0 Firefox/\d+\.\d+'
|
1538
1662
|
os_replacement: 'Firefox OS'
|
1539
1663
|
os_v1_replacement: '1'
|
1540
1664
|
os_v2_replacement: '4'
|
1541
1665
|
|
1542
|
-
- regex: '\((?:Mobile|Tablet)
|
1666
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/32.0 Firefox/\d+\.\d+'
|
1543
1667
|
os_replacement: 'Firefox OS'
|
1544
1668
|
os_v1_replacement: '2'
|
1545
1669
|
os_v2_replacement: '0'
|
1546
1670
|
|
1547
|
-
- regex: '\((?:Mobile|Tablet)
|
1671
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/34.0 Firefox/\d+\.\d+'
|
1548
1672
|
os_replacement: 'Firefox OS'
|
1549
1673
|
os_v1_replacement: '2'
|
1550
1674
|
os_v2_replacement: '1'
|
1551
1675
|
|
1552
1676
|
# Firefox OS Generic
|
1553
|
-
- regex: '\((?:Mobile|Tablet)
|
1677
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Firefox/\d+\.\d+'
|
1554
1678
|
os_replacement: 'Firefox OS'
|
1555
1679
|
|
1556
1680
|
|
@@ -1592,7 +1716,7 @@ os_parsers:
|
|
1592
1716
|
- regex: '(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Sailfish|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\b)BSD)[/ ](\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
1593
1717
|
|
1594
1718
|
# Gentoo Linux + Kernel Version
|
1595
|
-
- regex: '(Linux)[ /](\d+)\.(\d+)(?:\.(\d+)|)
|
1719
|
+
- regex: '(Linux)[ /](\d+)\.(\d+)(?:\.(\d+)|).{0,100}gentoo'
|
1596
1720
|
os_replacement: 'Gentoo'
|
1597
1721
|
|
1598
1722
|
# Opera Mini Bada
|
@@ -1624,19 +1748,19 @@ device_parsers:
|
|
1624
1748
|
# Mobile Spiders
|
1625
1749
|
# Catch the mobile crawler before checking for iPhones / Androids.
|
1626
1750
|
#########
|
1627
|
-
- regex: '(?:(?:iPhone|Windows CE|Windows Phone|Android)
|
1751
|
+
- regex: '^.{0,100}?(?:(?:iPhone|Windows CE|Windows Phone|Android).{0,300}(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\d|(?:bot|spider)\.html)|AdsBot-Google-Mobile.{0,200}iPhone)'
|
1628
1752
|
regex_flag: 'i'
|
1629
1753
|
device_replacement: 'Spider'
|
1630
1754
|
brand_replacement: 'Spider'
|
1631
1755
|
model_replacement: 'Smartphone'
|
1632
|
-
- regex: '(?:DoCoMo|\bMOT\b|\bLG\b|Nokia|Samsung|SonyEricsson)
|
1756
|
+
- regex: '^.{0,100}?(?:DoCoMo|\bMOT\b|\bLG\b|Nokia|Samsung|SonyEricsson).{0,200}(?:(?:Bot|Yeti)-Mobile|bots?/\d|(?:bot|crawler)\.html|(?:jump|google|Wukong)bot|ichiro/mobile|/spider|YahooSeeker)'
|
1633
1757
|
regex_flag: 'i'
|
1634
1758
|
device_replacement: 'Spider'
|
1635
1759
|
brand_replacement: 'Spider'
|
1636
1760
|
model_replacement: 'Feature Phone'
|
1637
1761
|
|
1638
1762
|
# PTST / WebPageTest.org crawlers
|
1639
|
-
- regex: ' PTST/\d+(
|
1763
|
+
- regex: ' PTST/\d+(?:\.\d+|)$'
|
1640
1764
|
device_replacement: 'Spider'
|
1641
1765
|
brand_replacement: 'Spider'
|
1642
1766
|
|
@@ -1646,11 +1770,11 @@ device_parsers:
|
|
1646
1770
|
brand_replacement: 'Spider'
|
1647
1771
|
|
1648
1772
|
# aspiegel.com spider (owned by Huawei)
|
1649
|
-
- regex: 'Mozilla
|
1773
|
+
- regex: 'Mozilla.{1,100}Mobile.{1,100}AspiegelBot'
|
1650
1774
|
device_replacement: 'Spider'
|
1651
1775
|
brand_replacement: 'Spider'
|
1652
1776
|
model_replacement: 'Smartphone'
|
1653
|
-
- regex: 'Mozilla
|
1777
|
+
- regex: 'Mozilla.{0,200}AspiegelBot'
|
1654
1778
|
device_replacement: 'Spider'
|
1655
1779
|
brand_replacement: 'Spider'
|
1656
1780
|
model_replacement: 'Desktop'
|
@@ -1659,7 +1783,7 @@ device_parsers:
|
|
1659
1783
|
# WebBrowser for SmartWatch
|
1660
1784
|
# @ref: https://play.google.com/store/apps/details?id=se.vaggan.webbrowser&hl=en
|
1661
1785
|
#########
|
1662
|
-
- regex: '\bSmartWatch {0,2}\( {0,2}([^;]
|
1786
|
+
- regex: '\bSmartWatch {0,2}\( {0,2}([^;]{1,200}) {0,2}; {0,2}([^;]{1,200}) {0,2};'
|
1663
1787
|
device_replacement: '$1 $2'
|
1664
1788
|
brand_replacement: '$1'
|
1665
1789
|
model_replacement: '$2'
|
@@ -1671,16 +1795,16 @@ device_parsers:
|
|
1671
1795
|
######################################################################
|
1672
1796
|
|
1673
1797
|
# Android Application
|
1674
|
-
- regex: 'Android Application[^\-]
|
1798
|
+
- regex: 'Android Application[^\-]{1,300} - (Sony) ?(Ericsson|) (.{1,200}) \w{1,20} - '
|
1675
1799
|
device_replacement: '$1 $2'
|
1676
1800
|
brand_replacement: '$1$2'
|
1677
1801
|
model_replacement: '$3'
|
1678
|
-
- regex: 'Android Application[^\-]
|
1802
|
+
- regex: 'Android Application[^\-]{1,300} - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\-](.{1,200}) \w{1,20} - '
|
1679
1803
|
regex_flag: 'i'
|
1680
1804
|
device_replacement: '$1 $2'
|
1681
1805
|
brand_replacement: '$1'
|
1682
1806
|
model_replacement: '$2'
|
1683
|
-
- regex: 'Android Application[^\-]
|
1807
|
+
- regex: 'Android Application[^\-]{1,300} - ([^ ]+) (.{1,200}) \w{1,20} - '
|
1684
1808
|
device_replacement: '$1 $2'
|
1685
1809
|
brand_replacement: '$1'
|
1686
1810
|
model_replacement: '$2'
|
@@ -1689,11 +1813,11 @@ device_parsers:
|
|
1689
1813
|
# 3Q
|
1690
1814
|
# @ref: http://www.3q-int.com/
|
1691
1815
|
#########
|
1692
|
-
- regex: ';
|
1816
|
+
- regex: '; {0,2}([BLRQ]C\d{4}[A-Z]{1,100}?)(?: Build|\) AppleWebKit)'
|
1693
1817
|
device_replacement: '3Q $1'
|
1694
1818
|
brand_replacement: '3Q'
|
1695
1819
|
model_replacement: '$1'
|
1696
|
-
- regex: ';
|
1820
|
+
- regex: '; {0,2}(?:3Q_)([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1697
1821
|
device_replacement: '3Q $1'
|
1698
1822
|
brand_replacement: '3Q'
|
1699
1823
|
model_replacement: '$1'
|
@@ -1702,19 +1826,19 @@ device_parsers:
|
|
1702
1826
|
# Acer
|
1703
1827
|
# @ref: http://us.acer.com/ac/en/US/content/group/tablets
|
1704
1828
|
#########
|
1705
|
-
- regex: 'Android [34]
|
1829
|
+
- regex: 'Android [34].{0,200}; {0,2}(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700(?: Lite| 3G|)|A701|B1-A71|A1-\d{3}|B1-\d{3}|V360|V370|W500|W500P|W501|W501P|W510|W511|W700|Slider SL101|DA22[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1706
1830
|
device_replacement: '$1'
|
1707
1831
|
brand_replacement: 'Acer'
|
1708
1832
|
model_replacement: '$1'
|
1709
|
-
- regex: ';
|
1833
|
+
- regex: '; {0,2}Acer Iconia Tab ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1710
1834
|
device_replacement: '$1'
|
1711
1835
|
brand_replacement: 'Acer'
|
1712
1836
|
model_replacement: '$1'
|
1713
|
-
- regex: ';
|
1837
|
+
- regex: '; {0,2}(Z1[1235]0|E320[^/]{0,10}|S500|S510|Liquid[^;/]{0,30}|Iconia A\d+)(?: Build|\) AppleWebKit)'
|
1714
1838
|
device_replacement: '$1'
|
1715
1839
|
brand_replacement: 'Acer'
|
1716
1840
|
model_replacement: '$1'
|
1717
|
-
- regex: ';
|
1841
|
+
- regex: '; {0,2}(Acer |ACER )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1718
1842
|
device_replacement: '$1$2'
|
1719
1843
|
brand_replacement: 'Acer'
|
1720
1844
|
model_replacement: '$2'
|
@@ -1725,7 +1849,7 @@ device_parsers:
|
|
1725
1849
|
# @note: VegaBean and VegaComb (names derived from jellybean, honeycomb) are
|
1726
1850
|
# custom ROM builds for Vega
|
1727
1851
|
#########
|
1728
|
-
- regex: ';
|
1852
|
+
- regex: '; {0,2}(Advent |)(Vega(?:Bean|Comb|)).{0,200}?(?: Build|\) AppleWebKit)'
|
1729
1853
|
device_replacement: '$1$2'
|
1730
1854
|
brand_replacement: 'Advent'
|
1731
1855
|
model_replacement: '$2'
|
@@ -1734,7 +1858,7 @@ device_parsers:
|
|
1734
1858
|
# Ainol
|
1735
1859
|
# @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product
|
1736
1860
|
#########
|
1737
|
-
- regex: ';
|
1861
|
+
- regex: '; {0,2}(Ainol |)((?:NOVO|[Nn]ovo)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1738
1862
|
device_replacement: '$1$2'
|
1739
1863
|
brand_replacement: 'Ainol'
|
1740
1864
|
model_replacement: '$2'
|
@@ -1743,12 +1867,12 @@ device_parsers:
|
|
1743
1867
|
# Airis
|
1744
1868
|
# @ref: http://airis.es/Tienda/Default.aspx?idG=001
|
1745
1869
|
#########
|
1746
|
-
- regex: ';
|
1870
|
+
- regex: '; {0,2}AIRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)'
|
1747
1871
|
regex_flag: 'i'
|
1748
1872
|
device_replacement: '$1'
|
1749
1873
|
brand_replacement: 'Airis'
|
1750
1874
|
model_replacement: '$1'
|
1751
|
-
- regex: ';
|
1875
|
+
- regex: '; {0,2}(OnePAD[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1752
1876
|
regex_flag: 'i'
|
1753
1877
|
device_replacement: '$1'
|
1754
1878
|
brand_replacement: 'Airis'
|
@@ -1758,7 +1882,7 @@ device_parsers:
|
|
1758
1882
|
# Airpad
|
1759
1883
|
# @ref: ??
|
1760
1884
|
#########
|
1761
|
-
- regex: ';
|
1885
|
+
- regex: '; {0,2}Airpad[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1762
1886
|
device_replacement: 'Airpad $1'
|
1763
1887
|
brand_replacement: 'Airpad'
|
1764
1888
|
model_replacement: '$1'
|
@@ -1767,29 +1891,29 @@ device_parsers:
|
|
1767
1891
|
# Alcatel - TCT
|
1768
1892
|
# @ref: http://www.alcatelonetouch.com/global-en/products/smartphones.html
|
1769
1893
|
#########
|
1770
|
-
- regex: ';
|
1894
|
+
- regex: '; {0,2}(one ?touch) (EVO7|T10|T20)(?: Build|\) AppleWebKit)'
|
1771
1895
|
device_replacement: 'Alcatel One Touch $2'
|
1772
1896
|
brand_replacement: 'Alcatel'
|
1773
1897
|
model_replacement: 'One Touch $2'
|
1774
|
-
- regex: ';
|
1898
|
+
- regex: '; {0,2}(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1775
1899
|
regex_flag: 'i'
|
1776
1900
|
device_replacement: 'Alcatel One Touch $1'
|
1777
1901
|
brand_replacement: 'Alcatel'
|
1778
1902
|
model_replacement: 'One Touch $1'
|
1779
|
-
- regex: ';
|
1903
|
+
- regex: '; {0,2}(TCL)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1780
1904
|
device_replacement: '$1 $2'
|
1781
1905
|
brand_replacement: '$1'
|
1782
1906
|
model_replacement: '$2'
|
1783
1907
|
# operator specific models
|
1784
|
-
- regex: ';
|
1908
|
+
- regex: '; {0,2}(Vodafone Smart II|Optimus_Madrid)(?: Build|\) AppleWebKit)'
|
1785
1909
|
device_replacement: 'Alcatel $1'
|
1786
1910
|
brand_replacement: 'Alcatel'
|
1787
1911
|
model_replacement: '$1'
|
1788
|
-
- regex: ';
|
1912
|
+
- regex: '; {0,2}BASE_Lutea_3(?: Build|\) AppleWebKit)'
|
1789
1913
|
device_replacement: 'Alcatel One Touch 998'
|
1790
1914
|
brand_replacement: 'Alcatel'
|
1791
1915
|
model_replacement: 'One Touch 998'
|
1792
|
-
- regex: ';
|
1916
|
+
- regex: '; {0,2}BASE_Varia(?: Build|\) AppleWebKit)'
|
1793
1917
|
device_replacement: 'Alcatel One Touch 918D'
|
1794
1918
|
brand_replacement: 'Alcatel'
|
1795
1919
|
model_replacement: 'One Touch 918D'
|
@@ -1798,7 +1922,7 @@ device_parsers:
|
|
1798
1922
|
# Allfine
|
1799
1923
|
# @ref: http://www.myallfine.com/Products.asp
|
1800
1924
|
#########
|
1801
|
-
- regex: ';
|
1925
|
+
- regex: '; {0,2}((?:FINE|Fine)\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1802
1926
|
device_replacement: '$1'
|
1803
1927
|
brand_replacement: 'Allfine'
|
1804
1928
|
model_replacement: '$1'
|
@@ -1807,15 +1931,15 @@ device_parsers:
|
|
1807
1931
|
# Allview
|
1808
1932
|
# @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/
|
1809
1933
|
#########
|
1810
|
-
- regex: ';
|
1934
|
+
- regex: '; {0,2}(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).{0,200}?)(?: Build|\) AppleWebKit)'
|
1811
1935
|
device_replacement: '$1$2'
|
1812
1936
|
brand_replacement: 'Allview'
|
1813
1937
|
model_replacement: '$2'
|
1814
|
-
- regex: ';
|
1938
|
+
- regex: '; {0,2}(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy)(?: Build|\) AppleWebKit)'
|
1815
1939
|
device_replacement: '$1$2'
|
1816
1940
|
brand_replacement: 'Allview'
|
1817
1941
|
model_replacement: '$2'
|
1818
|
-
- regex: ';
|
1942
|
+
- regex: '; {0,2}(ALLVIEW[ _]?|Allview[ _]?)([^;/]*?)(?: Build|\) AppleWebKit)'
|
1819
1943
|
device_replacement: '$1$2'
|
1820
1944
|
brand_replacement: 'Allview'
|
1821
1945
|
model_replacement: '$2'
|
@@ -1825,11 +1949,11 @@ device_parsers:
|
|
1825
1949
|
# @ref: http://www.allwinner.com/
|
1826
1950
|
# @models: A31 (13.3"),A20,A10,
|
1827
1951
|
#########
|
1828
|
-
- regex: ';
|
1952
|
+
- regex: '; {0,2}(A13-MID)(?: Build|\) AppleWebKit)'
|
1829
1953
|
device_replacement: '$1'
|
1830
1954
|
brand_replacement: 'Allwinner'
|
1831
1955
|
model_replacement: '$1'
|
1832
|
-
- regex: ';
|
1956
|
+
- regex: '; {0,2}(Allwinner)[ _\-]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1833
1957
|
device_replacement: '$1 $2'
|
1834
1958
|
brand_replacement: 'Allwinner'
|
1835
1959
|
model_replacement: '$1'
|
@@ -1838,7 +1962,7 @@ device_parsers:
|
|
1838
1962
|
# Amaway
|
1839
1963
|
# @ref: http://www.amaway.cn/
|
1840
1964
|
#########
|
1841
|
-
- regex: ';
|
1965
|
+
- regex: '; {0,2}(A651|A701B?|A702|A703|A705|A706|A707|A711|A712|A713|A717|A722|A785|A801|A802|A803|A901|A902|A1002|A1003|A1006|A1007|A9701|A9703|Q710|Q80)(?: Build|\) AppleWebKit)'
|
1842
1966
|
device_replacement: '$1'
|
1843
1967
|
brand_replacement: 'Amaway'
|
1844
1968
|
model_replacement: '$1'
|
@@ -1847,11 +1971,11 @@ device_parsers:
|
|
1847
1971
|
# Amoi
|
1848
1972
|
# @ref: http://www.amoi.com/en/prd/prd_index.jspx
|
1849
1973
|
#########
|
1850
|
-
- regex: ';
|
1974
|
+
- regex: '; {0,2}(?:AMOI|Amoi)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1851
1975
|
device_replacement: 'Amoi $1'
|
1852
1976
|
brand_replacement: 'Amoi'
|
1853
1977
|
model_replacement: '$1'
|
1854
|
-
- regex: '^(?:AMOI|Amoi)[ _]([^;/]
|
1978
|
+
- regex: '^(?:AMOI|Amoi)[ _]([^;/]{1,100}?) Linux'
|
1855
1979
|
device_replacement: 'Amoi $1'
|
1856
1980
|
brand_replacement: 'Amoi'
|
1857
1981
|
model_replacement: '$1'
|
@@ -1860,7 +1984,7 @@ device_parsers:
|
|
1860
1984
|
# Aoc
|
1861
1985
|
# @ref: http://latin.aoc.com/media_tablet
|
1862
1986
|
#########
|
1863
|
-
- regex: ';
|
1987
|
+
- regex: '; {0,2}(MW(?:0[789]|10)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1864
1988
|
device_replacement: '$1'
|
1865
1989
|
brand_replacement: 'Aoc'
|
1866
1990
|
model_replacement: '$1'
|
@@ -1871,11 +1995,11 @@ device_parsers:
|
|
1871
1995
|
# @ref: http://www.luckystar.com.cn/en/mobiletel.aspx?page=1
|
1872
1996
|
# @note: brand owned by luckystar
|
1873
1997
|
#########
|
1874
|
-
- regex: ';
|
1998
|
+
- regex: '; {0,2}(G7|M1013|M1015G|M11[CG]?|M-?12[B]?|M15|M19[G]?|M30[ACQ]?|M31[GQ]|M32|M33[GQ]|M36|M37|M38|M701T|M710|M712B|M713|M715G|M716G|M71(?:G|GS|T|)|M72[T]?|M73[T]?|M75[GT]?|M77G|M79T|M7L|M7LN|M81|M810|M81T|M82|M92|M92KS|M92S|M717G|M721|M722G|M723|M725G|M739|M785|M791|M92SK|M93D)(?: Build|\) AppleWebKit)'
|
1875
1999
|
device_replacement: 'Aoson $1'
|
1876
2000
|
brand_replacement: 'Aoson'
|
1877
2001
|
model_replacement: '$1'
|
1878
|
-
- regex: ';
|
2002
|
+
- regex: '; {0,2}Aoson ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1879
2003
|
regex_flag: 'i'
|
1880
2004
|
device_replacement: 'Aoson $1'
|
1881
2005
|
brand_replacement: 'Aoson'
|
@@ -1885,7 +2009,7 @@ device_parsers:
|
|
1885
2009
|
# Apanda
|
1886
2010
|
# @ref: http://www.apanda.com.cn/
|
1887
2011
|
#########
|
1888
|
-
- regex: ';
|
2012
|
+
- regex: '; {0,2}[Aa]panda[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1889
2013
|
device_replacement: 'Apanda $1'
|
1890
2014
|
brand_replacement: 'Apanda'
|
1891
2015
|
model_replacement: '$1'
|
@@ -1895,23 +2019,23 @@ device_parsers:
|
|
1895
2019
|
# @ref: http://www.archos.com/de/products/tablets.html
|
1896
2020
|
# @ref: http://www.archos.com/de/products/smartphones/index.html
|
1897
2021
|
#########
|
1898
|
-
- regex: ';
|
2022
|
+
- regex: '; {0,2}(?:ARCHOS|Archos) ?(GAMEPAD.{0,200}?)(?: Build|\) AppleWebKit)'
|
1899
2023
|
device_replacement: 'Archos $1'
|
1900
2024
|
brand_replacement: 'Archos'
|
1901
2025
|
model_replacement: '$1'
|
1902
|
-
- regex: 'ARCHOS; GOGI; ([^;]
|
2026
|
+
- regex: 'ARCHOS; GOGI; ([^;]{1,200});'
|
1903
2027
|
device_replacement: 'Archos $1'
|
1904
2028
|
brand_replacement: 'Archos'
|
1905
2029
|
model_replacement: '$1'
|
1906
|
-
- regex: '(?:ARCHOS|Archos)[ _]?(
|
2030
|
+
- regex: '(?:ARCHOS|Archos)[ _]?(.{0,200}?)(?: Build|[;/\(\)\-]|$)'
|
1907
2031
|
device_replacement: 'Archos $1'
|
1908
2032
|
brand_replacement: 'Archos'
|
1909
2033
|
model_replacement: '$1'
|
1910
|
-
- regex: ';
|
2034
|
+
- regex: '; {0,2}(AN(?:7|8|9|10|13)[A-Z0-9]{1,4})(?: Build|\) AppleWebKit)'
|
1911
2035
|
device_replacement: 'Archos $1'
|
1912
2036
|
brand_replacement: 'Archos'
|
1913
2037
|
model_replacement: '$1'
|
1914
|
-
- regex: ';
|
2038
|
+
- regex: '; {0,2}(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9)(?: Build|\) AppleWebKit)'
|
1915
2039
|
device_replacement: 'Archos $1'
|
1916
2040
|
brand_replacement: 'Archos'
|
1917
2041
|
model_replacement: '$1'
|
@@ -1920,11 +2044,11 @@ device_parsers:
|
|
1920
2044
|
# A-rival
|
1921
2045
|
# @ref: http://www.a-rival.de/de/
|
1922
2046
|
#########
|
1923
|
-
- regex: ';
|
2047
|
+
- regex: '; {0,2}(PAD-FMD[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1924
2048
|
device_replacement: '$1'
|
1925
2049
|
brand_replacement: 'Arival'
|
1926
2050
|
model_replacement: '$1'
|
1927
|
-
- regex: ';
|
2051
|
+
- regex: '; {0,2}(BioniQ) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1928
2052
|
device_replacement: '$1 $2'
|
1929
2053
|
brand_replacement: 'Arival'
|
1930
2054
|
model_replacement: '$1 $2'
|
@@ -1933,11 +2057,11 @@ device_parsers:
|
|
1933
2057
|
# Arnova
|
1934
2058
|
# @ref: http://arnovatech.com/
|
1935
2059
|
#########
|
1936
|
-
- regex: ';
|
2060
|
+
- regex: '; {0,2}(AN\d[^;/]{1,100}|ARCHM\d+)(?: Build|\) AppleWebKit)'
|
1937
2061
|
device_replacement: 'Arnova $1'
|
1938
2062
|
brand_replacement: 'Arnova'
|
1939
2063
|
model_replacement: '$1'
|
1940
|
-
- regex: ';
|
2064
|
+
- regex: '; {0,2}(?:ARNOVA|Arnova) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1941
2065
|
device_replacement: 'Arnova $1'
|
1942
2066
|
brand_replacement: 'Arnova'
|
1943
2067
|
model_replacement: '$1'
|
@@ -1946,7 +2070,7 @@ device_parsers:
|
|
1946
2070
|
# Assistant
|
1947
2071
|
# @ref: http://www.assistant.ua
|
1948
2072
|
#########
|
1949
|
-
- regex: ';
|
2073
|
+
- regex: '; {0,2}(?:ASSISTANT |)(AP)-?([1789]\d{2}[A-Z]{0,2}|80104)(?: Build|\) AppleWebKit)'
|
1950
2074
|
device_replacement: 'Assistant $1-$2'
|
1951
2075
|
brand_replacement: 'Assistant'
|
1952
2076
|
model_replacement: '$1-$2'
|
@@ -1955,11 +2079,11 @@ device_parsers:
|
|
1955
2079
|
# Asus
|
1956
2080
|
# @ref: http://www.asus.com/uk/Tablets_Mobile/
|
1957
2081
|
#########
|
1958
|
-
- regex: ';
|
2082
|
+
- regex: '; {0,2}(ME17\d[^;/]*|ME3\d{2}[^;/]{1,100}|K00[A-Z]|Nexus 10|Nexus 7(?: 2013|)|PadFone[^;/]*|Transformer[^;/]*|TF\d{3}[^;/]*|eeepc)(?: Build|\) AppleWebKit)'
|
1959
2083
|
device_replacement: 'Asus $1'
|
1960
2084
|
brand_replacement: 'Asus'
|
1961
2085
|
model_replacement: '$1'
|
1962
|
-
- regex: ';
|
2086
|
+
- regex: '; {0,2}ASUS[ _]{0,10}([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1963
2087
|
device_replacement: 'Asus $1'
|
1964
2088
|
brand_replacement: 'Asus'
|
1965
2089
|
model_replacement: '$1'
|
@@ -1967,11 +2091,11 @@ device_parsers:
|
|
1967
2091
|
#########
|
1968
2092
|
# Garmin-Asus
|
1969
2093
|
#########
|
1970
|
-
- regex: ';
|
2094
|
+
- regex: '; {0,2}Garmin-Asus ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1971
2095
|
device_replacement: 'Garmin-Asus $1'
|
1972
2096
|
brand_replacement: 'Garmin-Asus'
|
1973
2097
|
model_replacement: '$1'
|
1974
|
-
- regex: ';
|
2098
|
+
- regex: '; {0,2}(Garminfone)(?: Build|\) AppleWebKit)'
|
1975
2099
|
device_replacement: 'Garmin $1'
|
1976
2100
|
brand_replacement: 'Garmin-Asus'
|
1977
2101
|
model_replacement: '$1'
|
@@ -1980,7 +2104,7 @@ device_parsers:
|
|
1980
2104
|
# Attab
|
1981
2105
|
# @ref: http://www.theattab.com/
|
1982
2106
|
#########
|
1983
|
-
- regex: '; (@TAB-[^;/]
|
2107
|
+
- regex: '; (@TAB-[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1984
2108
|
device_replacement: '$1'
|
1985
2109
|
brand_replacement: 'Attab'
|
1986
2110
|
model_replacement: '$1'
|
@@ -1990,7 +2114,7 @@ device_parsers:
|
|
1990
2114
|
# @ref: ??
|
1991
2115
|
# @note: Take care with Docomo T-01 Toshiba
|
1992
2116
|
#########
|
1993
|
-
- regex: ';
|
2117
|
+
- regex: '; {0,2}(T-(?:07|[^0]\d)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
1994
2118
|
device_replacement: '$1'
|
1995
2119
|
brand_replacement: 'Audiosonic'
|
1996
2120
|
model_replacement: '$1'
|
@@ -1999,7 +2123,7 @@ device_parsers:
|
|
1999
2123
|
# Axioo
|
2000
2124
|
# @ref: http://www.axiooworld.com/ww/index.php
|
2001
2125
|
#########
|
2002
|
-
- regex: ';
|
2126
|
+
- regex: '; {0,2}(?:Axioo[ _\-]([^;/]{1,100}?)|(picopad)[ _\-]([^;/]{1,100}?))(?: Build|\) AppleWebKit)'
|
2003
2127
|
regex_flag: 'i'
|
2004
2128
|
device_replacement: 'Axioo $1$2 $3'
|
2005
2129
|
brand_replacement: 'Axioo'
|
@@ -2009,7 +2133,7 @@ device_parsers:
|
|
2009
2133
|
# Azend
|
2010
2134
|
# @ref: http://azendcorp.com/index.php/products/portable-electronics
|
2011
2135
|
#########
|
2012
|
-
- regex: ';
|
2136
|
+
- regex: '; {0,2}(V(?:100|700|800)[^;/]*)(?: Build|\) AppleWebKit)'
|
2013
2137
|
device_replacement: '$1'
|
2014
2138
|
brand_replacement: 'Azend'
|
2015
2139
|
model_replacement: '$1'
|
@@ -2018,7 +2142,7 @@ device_parsers:
|
|
2018
2142
|
# Bak
|
2019
2143
|
# @ref: http://www.bakinternational.com/produtos.php?cat=80
|
2020
2144
|
#########
|
2021
|
-
- regex: ';
|
2145
|
+
- regex: '; {0,2}(IBAK\-[^;/]*)(?: Build|\) AppleWebKit)'
|
2022
2146
|
regex_flag: 'i'
|
2023
2147
|
device_replacement: '$1'
|
2024
2148
|
brand_replacement: 'Bak'
|
@@ -2029,7 +2153,7 @@ device_parsers:
|
|
2029
2153
|
# @ref: http://www.bedove.com/product.html
|
2030
2154
|
# @models: HY6501|HY5001|X12|X21|I5
|
2031
2155
|
#########
|
2032
|
-
- regex: ';
|
2156
|
+
- regex: '; {0,2}(HY5001|HY6501|X12|X21|I5)(?: Build|\) AppleWebKit)'
|
2033
2157
|
device_replacement: 'Bedove $1'
|
2034
2158
|
brand_replacement: 'Bedove'
|
2035
2159
|
model_replacement: '$1'
|
@@ -2038,7 +2162,7 @@ device_parsers:
|
|
2038
2162
|
# Benss
|
2039
2163
|
# @ref: http://www.benss.net/
|
2040
2164
|
#########
|
2041
|
-
- regex: ';
|
2165
|
+
- regex: '; {0,2}(JC-[^;/]*)(?: Build|\) AppleWebKit)'
|
2042
2166
|
device_replacement: 'Benss $1'
|
2043
2167
|
brand_replacement: 'Benss'
|
2044
2168
|
model_replacement: '$1'
|
@@ -2048,7 +2172,7 @@ device_parsers:
|
|
2048
2172
|
# @ref: http://uk.blackberry.com/
|
2049
2173
|
# @note: Android Apps seams to be used here
|
2050
2174
|
#########
|
2051
|
-
- regex: ';
|
2175
|
+
- regex: '; {0,2}(BB) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2052
2176
|
device_replacement: '$1 $2'
|
2053
2177
|
brand_replacement: 'Blackberry'
|
2054
2178
|
model_replacement: '$2'
|
@@ -2057,11 +2181,11 @@ device_parsers:
|
|
2057
2181
|
# Blackbird
|
2058
2182
|
# @ref: http://iblackbird.co.kr
|
2059
2183
|
#########
|
2060
|
-
- regex: ';
|
2184
|
+
- regex: '; {0,2}(BlackBird)[ _](I8.{0,200}?)(?: Build|\) AppleWebKit)'
|
2061
2185
|
device_replacement: '$1 $2'
|
2062
2186
|
brand_replacement: '$1'
|
2063
2187
|
model_replacement: '$2'
|
2064
|
-
- regex: ';
|
2188
|
+
- regex: '; {0,2}(BlackBird)[ _](.{0,200}?)(?: Build|\) AppleWebKit)'
|
2065
2189
|
device_replacement: '$1 $2'
|
2066
2190
|
brand_replacement: '$1'
|
2067
2191
|
model_replacement: '$2'
|
@@ -2071,7 +2195,7 @@ device_parsers:
|
|
2071
2195
|
# @ref: http://www.blaupunkt.com
|
2072
2196
|
#########
|
2073
2197
|
# Endeavour
|
2074
|
-
- regex: ';
|
2198
|
+
- regex: '; {0,2}([0-9]+BP[EM][^;/]*|Endeavour[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2075
2199
|
device_replacement: 'Blaupunkt $1'
|
2076
2200
|
brand_replacement: 'Blaupunkt'
|
2077
2201
|
model_replacement: '$1'
|
@@ -2080,12 +2204,12 @@ device_parsers:
|
|
2080
2204
|
# Blu
|
2081
2205
|
# @ref: http://bluproducts.com
|
2082
2206
|
#########
|
2083
|
-
- regex: ';
|
2207
|
+
- regex: '; {0,2}((?:BLU|Blu)[ _\-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2084
2208
|
device_replacement: '$1$2'
|
2085
2209
|
brand_replacement: 'Blu'
|
2086
2210
|
model_replacement: '$2'
|
2087
2211
|
# BMOBILE = operator branded device
|
2088
|
-
- regex: ';
|
2212
|
+
- regex: '; {0,2}(?:BMOBILE )?(Blu|BLU|DASH [^;/]{1,100}|VIVO 4\.3|TANK 4\.5)(?: Build|\) AppleWebKit)'
|
2089
2213
|
device_replacement: '$1'
|
2090
2214
|
brand_replacement: 'Blu'
|
2091
2215
|
model_replacement: '$1'
|
@@ -2095,7 +2219,7 @@ device_parsers:
|
|
2095
2219
|
# @ref: http://www.blusens.com/es/?sg=1&sv=al&roc=1
|
2096
2220
|
#########
|
2097
2221
|
# tablet
|
2098
|
-
- regex: ';
|
2222
|
+
- regex: '; {0,2}(TOUCH\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2099
2223
|
device_replacement: '$1'
|
2100
2224
|
brand_replacement: 'Blusens'
|
2101
2225
|
model_replacement: '$1'
|
@@ -2106,7 +2230,7 @@ device_parsers:
|
|
2106
2230
|
# @note: Might collide with Maxx as AX is used also there.
|
2107
2231
|
#########
|
2108
2232
|
# smartphone
|
2109
|
-
- regex: ';
|
2233
|
+
- regex: '; {0,2}(AX5\d+)(?: Build|\) AppleWebKit)'
|
2110
2234
|
device_replacement: '$1'
|
2111
2235
|
brand_replacement: 'Bmobile'
|
2112
2236
|
model_replacement: '$1'
|
@@ -2115,11 +2239,11 @@ device_parsers:
|
|
2115
2239
|
# bq
|
2116
2240
|
# @ref: http://bqreaders.com
|
2117
2241
|
#########
|
2118
|
-
- regex: ';
|
2242
|
+
- regex: '; {0,2}([Bb]q) ([^;/]{1,100}?);?(?: Build|\) AppleWebKit)'
|
2119
2243
|
device_replacement: '$1 $2'
|
2120
2244
|
brand_replacement: 'bq'
|
2121
2245
|
model_replacement: '$2'
|
2122
|
-
- regex: ';
|
2246
|
+
- regex: '; {0,2}(Maxwell [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2123
2247
|
device_replacement: '$1'
|
2124
2248
|
brand_replacement: 'bq'
|
2125
2249
|
model_replacement: '$1'
|
@@ -2128,7 +2252,7 @@ device_parsers:
|
|
2128
2252
|
# Braun Phototechnik
|
2129
2253
|
# @ref: http://www.braun-phototechnik.de/en/products/list/~pcat.250/Tablet-PC.html
|
2130
2254
|
#########
|
2131
|
-
- regex: ';
|
2255
|
+
- regex: '; {0,2}((?:B-Tab|B-TAB) ?\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2132
2256
|
device_replacement: '$1'
|
2133
2257
|
brand_replacement: 'Braun'
|
2134
2258
|
model_replacement: '$1'
|
@@ -2137,7 +2261,7 @@ device_parsers:
|
|
2137
2261
|
# Broncho
|
2138
2262
|
# @ref: http://www.broncho.cn/
|
2139
2263
|
#########
|
2140
|
-
- regex: ';
|
2264
|
+
- regex: '; {0,2}(Broncho) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2141
2265
|
device_replacement: '$1 $2'
|
2142
2266
|
brand_replacement: '$1'
|
2143
2267
|
model_replacement: '$2'
|
@@ -2146,7 +2270,7 @@ device_parsers:
|
|
2146
2270
|
# Captiva
|
2147
2271
|
# @ref: http://www.captiva-power.de
|
2148
2272
|
#########
|
2149
|
-
- regex: ';
|
2273
|
+
- regex: '; {0,2}CAPTIVA ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2150
2274
|
device_replacement: 'Captiva $1'
|
2151
2275
|
brand_replacement: 'Captiva'
|
2152
2276
|
model_replacement: '$1'
|
@@ -2155,7 +2279,7 @@ device_parsers:
|
|
2155
2279
|
# Casio
|
2156
2280
|
# @ref: http://www.casiogzone.com/
|
2157
2281
|
#########
|
2158
|
-
- regex: ';
|
2282
|
+
- regex: '; {0,2}(C771|CAL21|IS11CA)(?: Build|\) AppleWebKit)'
|
2159
2283
|
device_replacement: '$1'
|
2160
2284
|
brand_replacement: 'Casio'
|
2161
2285
|
model_replacement: '$1'
|
@@ -2164,15 +2288,15 @@ device_parsers:
|
|
2164
2288
|
# Cat
|
2165
2289
|
# @ref: http://www.cat-sound.com
|
2166
2290
|
#########
|
2167
|
-
- regex: ';
|
2291
|
+
- regex: '; {0,2}(?:Cat|CAT) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2168
2292
|
device_replacement: 'Cat $1'
|
2169
2293
|
brand_replacement: 'Cat'
|
2170
2294
|
model_replacement: '$1'
|
2171
|
-
- regex: ';
|
2295
|
+
- regex: '; {0,2}(?:Cat)(Nova.{0,200}?)(?: Build|\) AppleWebKit)'
|
2172
2296
|
device_replacement: 'Cat $1'
|
2173
2297
|
brand_replacement: 'Cat'
|
2174
2298
|
model_replacement: '$1'
|
2175
|
-
- regex: ';
|
2299
|
+
- regex: '; {0,2}(INM8002KP|ADM8000KP_[AB])(?: Build|\) AppleWebKit)'
|
2176
2300
|
device_replacement: '$1'
|
2177
2301
|
brand_replacement: 'Cat'
|
2178
2302
|
model_replacement: 'Tablet PHOENIX 8.1J0'
|
@@ -2182,7 +2306,7 @@ device_parsers:
|
|
2182
2306
|
# @ref: http://www.celkonmobiles.com/?_a=products
|
2183
2307
|
# @models: A10, A19Q, A101, A105, A107, A107\+, A112, A118, A119, A119Q, A15, A19, A20, A200, A220, A225, A22 Race, A27, A58, A59, A60, A62, A63, A64, A66, A67, A69, A75, A77, A79, A8\+, A83, A85, A86, A87, A89 Ultima, A9\+, A90, A900, A95, A97i, A98, AR 40, AR 45, AR 50, ML5
|
2184
2308
|
#########
|
2185
|
-
- regex: ';
|
2309
|
+
- regex: '; {0,2}(?:[Cc]elkon[ _\*]|CELKON[ _\*])([^;/\)]+) ?(?:Build|;|\))'
|
2186
2310
|
device_replacement: '$1'
|
2187
2311
|
brand_replacement: 'Celkon'
|
2188
2312
|
model_replacement: '$1'
|
@@ -2190,12 +2314,12 @@ device_parsers:
|
|
2190
2314
|
device_replacement: '$1'
|
2191
2315
|
brand_replacement: 'Celkon'
|
2192
2316
|
model_replacement: '$1'
|
2193
|
-
- regex: ';
|
2317
|
+
- regex: '; {0,2}(CT)-?(\d+)(?: Build|\) AppleWebKit)'
|
2194
2318
|
device_replacement: '$1$2'
|
2195
2319
|
brand_replacement: 'Celkon'
|
2196
2320
|
model_replacement: '$1$2'
|
2197
2321
|
# smartphones
|
2198
|
-
- regex: ';
|
2322
|
+
- regex: '; {0,2}(A19|A19Q|A105|A107[^;/\)]*) ?(?:Build|;|\))'
|
2199
2323
|
device_replacement: '$1'
|
2200
2324
|
brand_replacement: 'Celkon'
|
2201
2325
|
model_replacement: '$1'
|
@@ -2206,7 +2330,7 @@ device_parsers:
|
|
2206
2330
|
# @brief: China manufacturer makes tablets for different small brands
|
2207
2331
|
# (eg. http://www.zeepad.net/index.html)
|
2208
2332
|
#########
|
2209
|
-
- regex: ';
|
2333
|
+
- regex: '; {0,2}(TPC[0-9]{4,5})(?: Build|\) AppleWebKit)'
|
2210
2334
|
device_replacement: '$1'
|
2211
2335
|
brand_replacement: 'ChangJia'
|
2212
2336
|
model_replacement: '$1'
|
@@ -2215,15 +2339,15 @@ device_parsers:
|
|
2215
2339
|
# Cloudfone
|
2216
2340
|
# @ref: http://www.cloudfonemobile.com/
|
2217
2341
|
#########
|
2218
|
-
- regex: ';
|
2342
|
+
- regex: '; {0,2}(Cloudfone)[ _](Excite)([^ ][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2219
2343
|
device_replacement: '$1 $2 $3'
|
2220
2344
|
brand_replacement: 'Cloudfone'
|
2221
2345
|
model_replacement: '$1 $2 $3'
|
2222
|
-
- regex: ';
|
2346
|
+
- regex: '; {0,2}(Excite|ICE)[ _](\d+[^;/]{0,100}?)(?: Build|\) AppleWebKit)'
|
2223
2347
|
device_replacement: 'Cloudfone $1 $2'
|
2224
2348
|
brand_replacement: 'Cloudfone'
|
2225
2349
|
model_replacement: 'Cloudfone $1 $2'
|
2226
|
-
- regex: ';
|
2350
|
+
- regex: '; {0,2}(Cloudfone|CloudPad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2227
2351
|
device_replacement: '$1 $2'
|
2228
2352
|
brand_replacement: 'Cloudfone'
|
2229
2353
|
model_replacement: '$1 $2'
|
@@ -2232,7 +2356,7 @@ device_parsers:
|
|
2232
2356
|
# Cmx
|
2233
2357
|
# @ref: http://cmx.at/de/
|
2234
2358
|
#########
|
2235
|
-
- regex: ';
|
2359
|
+
- regex: '; {0,2}((?:Aquila|Clanga|Rapax)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2236
2360
|
regex_flag: 'i'
|
2237
2361
|
device_replacement: '$1'
|
2238
2362
|
brand_replacement: 'Cmx'
|
@@ -2243,7 +2367,7 @@ device_parsers:
|
|
2243
2367
|
# @ref: http://cobykyros.com
|
2244
2368
|
# @note: Be careful with MID\d{3} from MpMan or Manta
|
2245
2369
|
#########
|
2246
|
-
- regex: ';
|
2370
|
+
- regex: '; {0,2}(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\(3G\)-4G| GB 8K| 3G| 8K| GB)? {0,2}(?:Build|[;\)])'
|
2247
2371
|
device_replacement: 'CobyKyros $1$2'
|
2248
2372
|
brand_replacement: 'CobyKyros'
|
2249
2373
|
model_replacement: '$1$2'
|
@@ -2252,7 +2376,7 @@ device_parsers:
|
|
2252
2376
|
# Coolpad
|
2253
2377
|
# @ref: ??
|
2254
2378
|
#########
|
2255
|
-
- regex: ';
|
2379
|
+
- regex: '; {0,2}([^;/]{0,50})Coolpad[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2256
2380
|
device_replacement: '$1$2'
|
2257
2381
|
brand_replacement: 'Coolpad'
|
2258
2382
|
model_replacement: '$1$2'
|
@@ -2261,7 +2385,7 @@ device_parsers:
|
|
2261
2385
|
# Cube
|
2262
2386
|
# @ref: http://www.cube-tablet.com/buy-products.html
|
2263
2387
|
#########
|
2264
|
-
- regex: ';
|
2388
|
+
- regex: '; {0,2}(CUBE[ _])?([KU][0-9]+ ?GT.{0,200}?|A5300)(?: Build|\) AppleWebKit)'
|
2265
2389
|
regex_flag: 'i'
|
2266
2390
|
device_replacement: '$1$2'
|
2267
2391
|
brand_replacement: 'Cube'
|
@@ -2271,12 +2395,12 @@ device_parsers:
|
|
2271
2395
|
# Cubot
|
2272
2396
|
# @ref: http://www.cubotmall.com/
|
2273
2397
|
#########
|
2274
|
-
- regex: ';
|
2398
|
+
- regex: '; {0,2}CUBOT ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2275
2399
|
regex_flag: 'i'
|
2276
2400
|
device_replacement: '$1'
|
2277
2401
|
brand_replacement: 'Cubot'
|
2278
2402
|
model_replacement: '$1'
|
2279
|
-
- regex: ';
|
2403
|
+
- regex: '; {0,2}(BOBBY)(?: Build|\) AppleWebKit)'
|
2280
2404
|
regex_flag: 'i'
|
2281
2405
|
device_replacement: '$1'
|
2282
2406
|
brand_replacement: 'Cubot'
|
@@ -2286,7 +2410,7 @@ device_parsers:
|
|
2286
2410
|
# Danew
|
2287
2411
|
# @ref: http://www.danew.com/produits-tablette.php
|
2288
2412
|
#########
|
2289
|
-
- regex: ';
|
2413
|
+
- regex: '; {0,2}(Dslide [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2290
2414
|
device_replacement: '$1'
|
2291
2415
|
brand_replacement: 'Danew'
|
2292
2416
|
model_replacement: '$1'
|
@@ -2300,39 +2424,39 @@ device_parsers:
|
|
2300
2424
|
# @ref: http://www.dell.com/in/p/mobile-xcd28/pd
|
2301
2425
|
# @ref: http://www.dell.com/in/p/mobile-xcd35/pd
|
2302
2426
|
#########
|
2303
|
-
- regex: ';
|
2427
|
+
- regex: '; {0,2}(XCD)[ _]?(28|35)(?: Build|\) AppleWebKit)'
|
2304
2428
|
device_replacement: 'Dell $1$2'
|
2305
2429
|
brand_replacement: 'Dell'
|
2306
2430
|
model_replacement: '$1$2'
|
2307
|
-
- regex: ';
|
2431
|
+
- regex: '; {0,2}(001DL)(?: Build|\) AppleWebKit)'
|
2308
2432
|
device_replacement: 'Dell $1'
|
2309
2433
|
brand_replacement: 'Dell'
|
2310
2434
|
model_replacement: 'Streak'
|
2311
|
-
- regex: ';
|
2435
|
+
- regex: '; {0,2}(?:Dell|DELL) (Streak)(?: Build|\) AppleWebKit)'
|
2312
2436
|
device_replacement: 'Dell $1'
|
2313
2437
|
brand_replacement: 'Dell'
|
2314
2438
|
model_replacement: 'Streak'
|
2315
|
-
- regex: ';
|
2439
|
+
- regex: '; {0,2}(101DL|GS01|Streak Pro[^;/]{0,100})(?: Build|\) AppleWebKit)'
|
2316
2440
|
device_replacement: 'Dell $1'
|
2317
2441
|
brand_replacement: 'Dell'
|
2318
2442
|
model_replacement: 'Streak Pro'
|
2319
|
-
- regex: ';
|
2443
|
+
- regex: '; {0,2}([Ss]treak ?7)(?: Build|\) AppleWebKit)'
|
2320
2444
|
device_replacement: 'Dell $1'
|
2321
2445
|
brand_replacement: 'Dell'
|
2322
2446
|
model_replacement: 'Streak 7'
|
2323
|
-
- regex: ';
|
2447
|
+
- regex: '; {0,2}(Mini-3iX)(?: Build|\) AppleWebKit)'
|
2324
2448
|
device_replacement: 'Dell $1'
|
2325
2449
|
brand_replacement: 'Dell'
|
2326
2450
|
model_replacement: '$1'
|
2327
|
-
- regex: ';
|
2451
|
+
- regex: '; {0,2}(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.{0,200}?|Streak[ _]Pro)(?: Build|\) AppleWebKit)'
|
2328
2452
|
device_replacement: 'Dell $1'
|
2329
2453
|
brand_replacement: 'Dell'
|
2330
2454
|
model_replacement: '$1'
|
2331
|
-
- regex: ';
|
2455
|
+
- regex: '; {0,2}Dell[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2332
2456
|
device_replacement: 'Dell $1'
|
2333
2457
|
brand_replacement: 'Dell'
|
2334
2458
|
model_replacement: '$1'
|
2335
|
-
- regex: ';
|
2459
|
+
- regex: '; {0,2}Dell ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2336
2460
|
device_replacement: 'Dell $1'
|
2337
2461
|
brand_replacement: 'Dell'
|
2338
2462
|
model_replacement: '$1'
|
@@ -2341,7 +2465,7 @@ device_parsers:
|
|
2341
2465
|
# Denver
|
2342
2466
|
# @ref: http://www.denver-electronics.com/tablets1/
|
2343
2467
|
#########
|
2344
|
-
- regex: ';
|
2468
|
+
- regex: '; {0,2}(TA[CD]-\d+[^;/]{0,100})(?: Build|\) AppleWebKit)'
|
2345
2469
|
device_replacement: '$1'
|
2346
2470
|
brand_replacement: 'Denver'
|
2347
2471
|
model_replacement: '$1'
|
@@ -2350,7 +2474,7 @@ device_parsers:
|
|
2350
2474
|
# Dex
|
2351
2475
|
# @ref: http://dex.ua/
|
2352
2476
|
#########
|
2353
|
-
- regex: ';
|
2477
|
+
- regex: '; {0,2}(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?)(?: Build|\) AppleWebKit)'
|
2354
2478
|
device_replacement: '$1'
|
2355
2479
|
brand_replacement: 'Dex'
|
2356
2480
|
model_replacement: '$1'
|
@@ -2359,7 +2483,7 @@ device_parsers:
|
|
2359
2483
|
# DNS AirTab
|
2360
2484
|
# @ref: http://www.dns-shop.ru/
|
2361
2485
|
#########
|
2362
|
-
- regex: ';
|
2486
|
+
- regex: '; {0,2}(AirTab)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2363
2487
|
device_replacement: '$1 $2'
|
2364
2488
|
brand_replacement: 'DNS'
|
2365
2489
|
model_replacement: '$1 $2'
|
@@ -2368,43 +2492,43 @@ device_parsers:
|
|
2368
2492
|
# Docomo (Operator Branded Device)
|
2369
2493
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
2370
2494
|
#########
|
2371
|
-
- regex: ';
|
2495
|
+
- regex: '; {0,2}(F\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2372
2496
|
device_replacement: '$1'
|
2373
2497
|
brand_replacement: 'Fujitsu'
|
2374
2498
|
model_replacement: '$1'
|
2375
|
-
- regex: ';
|
2499
|
+
- regex: '; {0,2}(HT-03A)(?: Build|\) AppleWebKit)'
|
2376
2500
|
device_replacement: '$1'
|
2377
2501
|
brand_replacement: 'HTC'
|
2378
2502
|
model_replacement: 'Magic'
|
2379
|
-
- regex: ';
|
2503
|
+
- regex: '; {0,2}(HT\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2380
2504
|
device_replacement: '$1'
|
2381
2505
|
brand_replacement: 'HTC'
|
2382
2506
|
model_replacement: '$1'
|
2383
|
-
- regex: ';
|
2507
|
+
- regex: '; {0,2}(L\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2384
2508
|
device_replacement: '$1'
|
2385
2509
|
brand_replacement: 'LG'
|
2386
2510
|
model_replacement: '$1'
|
2387
|
-
- regex: ';
|
2511
|
+
- regex: '; {0,2}(N\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2388
2512
|
device_replacement: '$1'
|
2389
2513
|
brand_replacement: 'Nec'
|
2390
2514
|
model_replacement: '$1'
|
2391
|
-
- regex: ';
|
2515
|
+
- regex: '; {0,2}(P\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2392
2516
|
device_replacement: '$1'
|
2393
2517
|
brand_replacement: 'Panasonic'
|
2394
2518
|
model_replacement: '$1'
|
2395
|
-
- regex: ';
|
2519
|
+
- regex: '; {0,2}(SC\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2396
2520
|
device_replacement: '$1'
|
2397
2521
|
brand_replacement: 'Samsung'
|
2398
2522
|
model_replacement: '$1'
|
2399
|
-
- regex: ';
|
2523
|
+
- regex: '; {0,2}(SH\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2400
2524
|
device_replacement: '$1'
|
2401
2525
|
brand_replacement: 'Sharp'
|
2402
2526
|
model_replacement: '$1'
|
2403
|
-
- regex: ';
|
2527
|
+
- regex: '; {0,2}(SO\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2404
2528
|
device_replacement: '$1'
|
2405
2529
|
brand_replacement: 'SonyEricsson'
|
2406
2530
|
model_replacement: '$1'
|
2407
|
-
- regex: ';
|
2531
|
+
- regex: '; {0,2}(T\-0[12][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2408
2532
|
device_replacement: '$1'
|
2409
2533
|
brand_replacement: 'Toshiba'
|
2410
2534
|
model_replacement: '$1'
|
@@ -2413,7 +2537,7 @@ device_parsers:
|
|
2413
2537
|
# DOOV
|
2414
2538
|
# @ref: http://www.doov.com.cn/
|
2415
2539
|
#########
|
2416
|
-
- regex: ';
|
2540
|
+
- regex: '; {0,2}(DOOV)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2417
2541
|
device_replacement: '$1 $2'
|
2418
2542
|
brand_replacement: 'DOOV'
|
2419
2543
|
model_replacement: '$2'
|
@@ -2422,7 +2546,7 @@ device_parsers:
|
|
2422
2546
|
# Enot
|
2423
2547
|
# @ref: http://www.enot.ua/
|
2424
2548
|
#########
|
2425
|
-
- regex: ';
|
2549
|
+
- regex: '; {0,2}(Enot|ENOT)[ -]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2426
2550
|
device_replacement: '$1 $2'
|
2427
2551
|
brand_replacement: 'Enot'
|
2428
2552
|
model_replacement: '$2'
|
@@ -2431,11 +2555,11 @@ device_parsers:
|
|
2431
2555
|
# Evercoss
|
2432
2556
|
# @ref: http://evercoss.com/android/
|
2433
2557
|
#########
|
2434
|
-
- regex: ';
|
2558
|
+
- regex: '; {0,2}[^;/]{1,100} Build/(?:CROSS|Cross)+[ _\-]([^\)]+)'
|
2435
2559
|
device_replacement: 'CROSS $1'
|
2436
2560
|
brand_replacement: 'Evercoss'
|
2437
2561
|
model_replacement: 'Cross $1'
|
2438
|
-
- regex: ';
|
2562
|
+
- regex: '; {0,2}(CROSS|Cross)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2439
2563
|
device_replacement: '$1 $2'
|
2440
2564
|
brand_replacement: 'Evercoss'
|
2441
2565
|
model_replacement: 'Cross $2'
|
@@ -2444,7 +2568,7 @@ device_parsers:
|
|
2444
2568
|
# Explay
|
2445
2569
|
# @ref: http://explay.ru/
|
2446
2570
|
#########
|
2447
|
-
- regex: ';
|
2571
|
+
- regex: '; {0,2}Explay[_ ](.{1,200}?)(?:[\)]| Build)'
|
2448
2572
|
device_replacement: '$1'
|
2449
2573
|
brand_replacement: 'Explay'
|
2450
2574
|
model_replacement: '$1'
|
@@ -2453,11 +2577,11 @@ device_parsers:
|
|
2453
2577
|
# Fly
|
2454
2578
|
# @ref: http://www.fly-phone.com/
|
2455
2579
|
#########
|
2456
|
-
- regex: ';
|
2580
|
+
- regex: '; {0,2}(IQ.{0,200}?)(?: Build|\) AppleWebKit)'
|
2457
2581
|
device_replacement: '$1'
|
2458
2582
|
brand_replacement: 'Fly'
|
2459
2583
|
model_replacement: '$1'
|
2460
|
-
- regex: ';
|
2584
|
+
- regex: '; {0,2}(Fly|FLY)[ _](IQ[^;]{1,100}?|F[34]\d+[^;]{0,100}?);?(?: Build|\) AppleWebKit)'
|
2461
2585
|
device_replacement: '$1 $2'
|
2462
2586
|
brand_replacement: 'Fly'
|
2463
2587
|
model_replacement: '$2'
|
@@ -2466,7 +2590,7 @@ device_parsers:
|
|
2466
2590
|
# Fujitsu
|
2467
2591
|
# @ref: http://www.fujitsu.com/global/
|
2468
2592
|
#########
|
2469
|
-
- regex: ';
|
2593
|
+
- regex: '; {0,2}(M532|Q572|FJL21)(?: Build|\) AppleWebKit)'
|
2470
2594
|
device_replacement: '$1'
|
2471
2595
|
brand_replacement: 'Fujitsu'
|
2472
2596
|
model_replacement: '$1'
|
@@ -2475,7 +2599,7 @@ device_parsers:
|
|
2475
2599
|
# Galapad
|
2476
2600
|
# @ref: http://www.galapad.net/product.html
|
2477
2601
|
#########
|
2478
|
-
- regex: ';
|
2602
|
+
- regex: '; {0,2}(G1)(?: Build|\) AppleWebKit)'
|
2479
2603
|
device_replacement: '$1'
|
2480
2604
|
brand_replacement: 'Galapad'
|
2481
2605
|
model_replacement: '$1'
|
@@ -2484,7 +2608,7 @@ device_parsers:
|
|
2484
2608
|
# Geeksphone
|
2485
2609
|
# @ref: http://www.geeksphone.com/
|
2486
2610
|
#########
|
2487
|
-
- regex: ';
|
2611
|
+
- regex: '; {0,2}(Geeksphone) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2488
2612
|
device_replacement: '$1 $2'
|
2489
2613
|
brand_replacement: '$1'
|
2490
2614
|
model_replacement: '$2'
|
@@ -2493,8 +2617,7 @@ device_parsers:
|
|
2493
2617
|
# Gfive
|
2494
2618
|
# @ref: http://www.gfivemobile.com/en
|
2495
2619
|
#########
|
2496
|
-
|
2497
|
-
- regex: '; *(G[^F]?FIVE) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2620
|
+
- regex: '; {0,2}(G[^F]?FIVE) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2498
2621
|
device_replacement: '$1 $2'
|
2499
2622
|
brand_replacement: 'Gfive'
|
2500
2623
|
model_replacement: '$2'
|
@@ -2503,16 +2626,16 @@ device_parsers:
|
|
2503
2626
|
# Gionee
|
2504
2627
|
# @ref: http://www.gionee.com/
|
2505
2628
|
#########
|
2506
|
-
- regex: ';
|
2629
|
+
- regex: '; {0,2}(Gionee)[ _\-]([^;/]{1,100}?)(?:/[^;/]{1,100}|)(?: Build|\) AppleWebKit)'
|
2507
2630
|
regex_flag: 'i'
|
2508
2631
|
device_replacement: '$1 $2'
|
2509
2632
|
brand_replacement: 'Gionee'
|
2510
2633
|
model_replacement: '$2'
|
2511
|
-
- regex: ';
|
2634
|
+
- regex: '; {0,2}(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1)(?: Build|\) AppleWebKit)'
|
2512
2635
|
device_replacement: 'Gionee $1'
|
2513
2636
|
brand_replacement: 'Gionee'
|
2514
2637
|
model_replacement: '$1'
|
2515
|
-
- regex: ';
|
2638
|
+
- regex: '; {0,2}(E3) Build/JOP40D'
|
2516
2639
|
device_replacement: 'Gionee $1'
|
2517
2640
|
brand_replacement: 'Gionee'
|
2518
2641
|
model_replacement: '$1'
|
@@ -2526,11 +2649,11 @@ device_parsers:
|
|
2526
2649
|
# GoClever
|
2527
2650
|
# @ref: http://www.goclever.com
|
2528
2651
|
#########
|
2529
|
-
- regex: ';
|
2652
|
+
- regex: '; {0,2}((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]{0,100}|PLAYTAB)(?: Build|\) AppleWebKit)'
|
2530
2653
|
device_replacement: 'GoClever $1'
|
2531
2654
|
brand_replacement: 'GoClever'
|
2532
2655
|
model_replacement: '$1'
|
2533
|
-
- regex: ';
|
2656
|
+
- regex: '; {0,2}GOCLEVER ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2534
2657
|
device_replacement: 'GoClever $1'
|
2535
2658
|
brand_replacement: 'GoClever'
|
2536
2659
|
model_replacement: '$1'
|
@@ -2539,11 +2662,11 @@ device_parsers:
|
|
2539
2662
|
# Google
|
2540
2663
|
# @ref: http://www.google.de/glass/start/
|
2541
2664
|
#########
|
2542
|
-
- regex: ';
|
2665
|
+
- regex: '; {0,2}(Glass \d+)(?: Build|\) AppleWebKit)'
|
2543
2666
|
device_replacement: '$1'
|
2544
2667
|
brand_replacement: 'Google'
|
2545
2668
|
model_replacement: '$1'
|
2546
|
-
- regex: ';
|
2669
|
+
- regex: '; {0,2}(Pixel.{0,200}?)(?: Build|\) AppleWebKit)'
|
2547
2670
|
device_replacement: '$1'
|
2548
2671
|
brand_replacement: 'Google'
|
2549
2672
|
model_replacement: '$1'
|
@@ -2552,7 +2675,7 @@ device_parsers:
|
|
2552
2675
|
# Gigabyte
|
2553
2676
|
# @ref: http://gsmart.gigabytecm.com/en/
|
2554
2677
|
#########
|
2555
|
-
- regex: ';
|
2678
|
+
- regex: '; {0,2}(GSmart)[ -]([^/]{1,50})(?: Build|\) AppleWebKit)'
|
2556
2679
|
device_replacement: '$1 $2'
|
2557
2680
|
brand_replacement: 'Gigabyte'
|
2558
2681
|
model_replacement: '$1 $2'
|
@@ -2561,7 +2684,7 @@ device_parsers:
|
|
2561
2684
|
# Freescale development boards
|
2562
2685
|
# @ref: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB
|
2563
2686
|
#########
|
2564
|
-
- regex: ';
|
2687
|
+
- regex: '; {0,2}(imx5[13]_[^/]{1,50})(?: Build|\) AppleWebKit)'
|
2565
2688
|
device_replacement: 'Freescale $1'
|
2566
2689
|
brand_replacement: 'Freescale'
|
2567
2690
|
model_replacement: '$1'
|
@@ -2571,11 +2694,11 @@ device_parsers:
|
|
2571
2694
|
# @ref: http://www.haier.com/
|
2572
2695
|
# @ref: http://www.haier.com/de/produkte/tablet/
|
2573
2696
|
#########
|
2574
|
-
- regex: ';
|
2697
|
+
- regex: '; {0,2}Haier[ _\-]([^/]{1,50})(?: Build|\) AppleWebKit)'
|
2575
2698
|
device_replacement: 'Haier $1'
|
2576
2699
|
brand_replacement: 'Haier'
|
2577
2700
|
model_replacement: '$1'
|
2578
|
-
- regex: ';
|
2701
|
+
- regex: '; {0,2}(PAD1016)(?: Build|\) AppleWebKit)'
|
2579
2702
|
device_replacement: 'Haipad $1'
|
2580
2703
|
brand_replacement: 'Haipad'
|
2581
2704
|
model_replacement: '$1'
|
@@ -2585,7 +2708,7 @@ device_parsers:
|
|
2585
2708
|
# @ref: http://www.haipad.net/
|
2586
2709
|
# @models: V7P|M7SM7S|M9XM9X|M7XM7X|M9|M8|M7-M|M1002|M7|M701
|
2587
2710
|
#########
|
2588
|
-
- regex: ';
|
2711
|
+
- regex: '; {0,2}(M701|M7|M8|M9)(?: Build|\) AppleWebKit)'
|
2589
2712
|
device_replacement: 'Haipad $1'
|
2590
2713
|
brand_replacement: 'Haipad'
|
2591
2714
|
model_replacement: '$1'
|
@@ -2595,7 +2718,7 @@ device_parsers:
|
|
2595
2718
|
# @ref: http://www.hannspree.eu/
|
2596
2719
|
# @models: SN10T1|SN10T2|SN70T31B|SN70T32W
|
2597
2720
|
#########
|
2598
|
-
- regex: ';
|
2721
|
+
- regex: '; {0,2}(SN\d+T[^;\)/]*)(?: Build|[;\)])'
|
2599
2722
|
device_replacement: 'Hannspree $1'
|
2600
2723
|
brand_replacement: 'Hannspree'
|
2601
2724
|
model_replacement: '$1'
|
@@ -2604,11 +2727,11 @@ device_parsers:
|
|
2604
2727
|
# HCLme
|
2605
2728
|
# @ref: http://www.hclmetablet.com/india/
|
2606
2729
|
#########
|
2607
|
-
- regex: 'Build/HCL ME Tablet ([^;\)]
|
2730
|
+
- regex: 'Build/HCL ME Tablet ([^;\)]{1,3})[\);]'
|
2608
2731
|
device_replacement: 'HCLme $1'
|
2609
2732
|
brand_replacement: 'HCLme'
|
2610
2733
|
model_replacement: '$1'
|
2611
|
-
- regex: ';
|
2734
|
+
- regex: '; {0,2}([^;\/]+) Build/HCL'
|
2612
2735
|
device_replacement: 'HCLme $1'
|
2613
2736
|
brand_replacement: 'HCLme'
|
2614
2737
|
model_replacement: '$1'
|
@@ -2617,7 +2740,7 @@ device_parsers:
|
|
2617
2740
|
# Hena
|
2618
2741
|
# @ref: http://www.henadigital.com/en/product/index.asp?id=6
|
2619
2742
|
#########
|
2620
|
-
- regex: ';
|
2743
|
+
- regex: '; {0,2}(MID-?\d{4}C[EM])(?: Build|\) AppleWebKit)'
|
2621
2744
|
device_replacement: 'Hena $1'
|
2622
2745
|
brand_replacement: 'Hena'
|
2623
2746
|
model_replacement: '$1'
|
@@ -2626,11 +2749,11 @@ device_parsers:
|
|
2626
2749
|
# Hisense
|
2627
2750
|
# @ref: http://www.hisense.com/
|
2628
2751
|
#########
|
2629
|
-
- regex: ';
|
2752
|
+
- regex: '; {0,2}(EG\d{2,}|HS-[^;/]{1,100}|MIRA[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2630
2753
|
device_replacement: 'Hisense $1'
|
2631
2754
|
brand_replacement: 'Hisense'
|
2632
2755
|
model_replacement: '$1'
|
2633
|
-
- regex: ';
|
2756
|
+
- regex: '; {0,2}(andromax[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2634
2757
|
regex_flag: 'i'
|
2635
2758
|
device_replacement: 'Hisense $1'
|
2636
2759
|
brand_replacement: 'Hisense'
|
@@ -2640,7 +2763,7 @@ device_parsers:
|
|
2640
2763
|
# hitech
|
2641
2764
|
# @ref: http://www.hitech-mobiles.com/
|
2642
2765
|
#########
|
2643
|
-
- regex: ';
|
2766
|
+
- regex: '; {0,2}(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE)(?: Build|\) AppleWebKit)'
|
2644
2767
|
device_replacement: 'AMAZE $1$2'
|
2645
2768
|
brand_replacement: 'hitech'
|
2646
2769
|
model_replacement: 'AMAZE $1$2'
|
@@ -2649,15 +2772,15 @@ device_parsers:
|
|
2649
2772
|
# HP
|
2650
2773
|
# @ref: http://www.hp.com/
|
2651
2774
|
#########
|
2652
|
-
- regex: ';
|
2775
|
+
- regex: '; {0,2}(PlayBook)(?: Build|\) AppleWebKit)'
|
2653
2776
|
device_replacement: 'HP $1'
|
2654
2777
|
brand_replacement: 'HP'
|
2655
2778
|
model_replacement: '$1'
|
2656
|
-
- regex: ';
|
2779
|
+
- regex: '; {0,2}HP ([^/]{1,50})(?: Build|\) AppleWebKit)'
|
2657
2780
|
device_replacement: 'HP $1'
|
2658
2781
|
brand_replacement: 'HP'
|
2659
2782
|
model_replacement: '$1'
|
2660
|
-
- regex: ';
|
2783
|
+
- regex: '; {0,2}([^/]{1,30}_tenderloin)(?: Build|\) AppleWebKit)'
|
2661
2784
|
device_replacement: 'HP TouchPad'
|
2662
2785
|
brand_replacement: 'HP'
|
2663
2786
|
model_replacement: 'TouchPad'
|
@@ -2667,62 +2790,66 @@ device_parsers:
|
|
2667
2790
|
# @ref: http://www.huaweidevice.com
|
2668
2791
|
# @note: Needs to be before HTC due to Desire HD Build on U8815
|
2669
2792
|
#########
|
2670
|
-
- regex: ';
|
2793
|
+
- regex: '; {0,2}(HUAWEI |Huawei-|)([UY][^;/]{1,100}) Build/(?:Huawei|HUAWEI)([UY][^\);]+)\)'
|
2671
2794
|
device_replacement: '$1$2'
|
2672
2795
|
brand_replacement: 'Huawei'
|
2673
2796
|
model_replacement: '$2'
|
2674
|
-
- regex: ';
|
2797
|
+
- regex: '; {0,2}([^;/]{1,100}) Build[/ ]Huawei(MT1-U06|[A-Z]{1,50}\d+[^\);]{1,50})\)'
|
2675
2798
|
device_replacement: '$1'
|
2676
2799
|
brand_replacement: 'Huawei'
|
2677
2800
|
model_replacement: '$2'
|
2678
|
-
- regex: ';
|
2801
|
+
- regex: '; {0,2}(S7|M860) Build'
|
2679
2802
|
device_replacement: '$1'
|
2680
2803
|
brand_replacement: 'Huawei'
|
2681
2804
|
model_replacement: '$1'
|
2682
|
-
- regex: ';
|
2805
|
+
- regex: '; {0,2}((?:HUAWEI|Huawei)[ \-]?)(MediaPad) Build'
|
2683
2806
|
device_replacement: '$1$2'
|
2684
2807
|
brand_replacement: 'Huawei'
|
2685
2808
|
model_replacement: '$2'
|
2686
|
-
- regex: ';
|
2809
|
+
- regex: '; {0,2}((?:HUAWEI[ _]?|Huawei[ _]|)Ascend[ _])([^;/]{1,100}) Build'
|
2687
2810
|
device_replacement: '$1$2'
|
2688
2811
|
brand_replacement: 'Huawei'
|
2689
2812
|
model_replacement: '$2'
|
2690
|
-
- regex: ';
|
2813
|
+
- regex: '; {0,2}((?:HUAWEI|Huawei)[ _\-]?)((?:G700-|MT-)[^;/]{1,100}) Build'
|
2691
2814
|
device_replacement: '$1$2'
|
2692
2815
|
brand_replacement: 'Huawei'
|
2693
2816
|
model_replacement: '$2'
|
2694
|
-
- regex: ';
|
2817
|
+
- regex: '; {0,2}((?:HUAWEI|Huawei)[ _\-]?)([^;/]{1,100}) Build'
|
2695
2818
|
device_replacement: '$1$2'
|
2696
2819
|
brand_replacement: 'Huawei'
|
2697
2820
|
model_replacement: '$2'
|
2698
|
-
- regex: ';
|
2821
|
+
- regex: '; {0,2}(MediaPad[^;]{1,200}|SpringBoard) Build/Huawei'
|
2699
2822
|
device_replacement: '$1'
|
2700
2823
|
brand_replacement: 'Huawei'
|
2701
2824
|
model_replacement: '$1'
|
2702
|
-
- regex: ';
|
2825
|
+
- regex: '; {0,2}([^;]{1,200}) Build/(?:Huawei|HUAWEI)'
|
2703
2826
|
device_replacement: '$1'
|
2704
2827
|
brand_replacement: 'Huawei'
|
2705
2828
|
model_replacement: '$1'
|
2706
|
-
- regex: ';
|
2829
|
+
- regex: '; {0,2}([Uu])([89]\d{3}) Build'
|
2707
2830
|
device_replacement: '$1$2'
|
2708
2831
|
brand_replacement: 'Huawei'
|
2709
2832
|
model_replacement: 'U$2'
|
2710
|
-
- regex: ';
|
2833
|
+
- regex: '; {0,2}(?:Ideos |IDEOS )(S7) Build'
|
2711
2834
|
device_replacement: 'Huawei Ideos$1'
|
2712
2835
|
brand_replacement: 'Huawei'
|
2713
2836
|
model_replacement: 'Ideos$1'
|
2714
|
-
- regex: ';
|
2837
|
+
- regex: '; {0,2}(?:Ideos |IDEOS )([^;/]{1,50}\s{0,5}|\s{0,5})Build'
|
2715
2838
|
device_replacement: 'Huawei Ideos$1'
|
2716
2839
|
brand_replacement: 'Huawei'
|
2717
2840
|
model_replacement: 'Ideos$1'
|
2718
|
-
- regex: ';
|
2841
|
+
- regex: '; {0,2}(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.{1,200}?) Build[/ ]'
|
2719
2842
|
device_replacement: 'Huawei $1'
|
2720
2843
|
brand_replacement: 'Huawei'
|
2721
2844
|
model_replacement: '$1'
|
2722
|
-
- regex: ';
|
2845
|
+
- regex: '; {0,2}((?:[A-Z]{3})\-L[A-Za0-9]{2})[\)]'
|
2723
2846
|
device_replacement: 'Huawei $1'
|
2724
2847
|
brand_replacement: 'Huawei'
|
2725
2848
|
model_replacement: '$1'
|
2849
|
+
- regex: '; {0,2}([^;]{1,200}) Build/(HONOR|Honor)'
|
2850
|
+
device_replacement: 'Huawei Honor $1'
|
2851
|
+
brand_replacement: 'Huawei'
|
2852
|
+
model_replacement: 'Honor $1'
|
2726
2853
|
|
2727
2854
|
#########
|
2728
2855
|
# HTC
|
@@ -2730,7 +2857,7 @@ device_parsers:
|
|
2730
2857
|
# @ref: http://en.wikipedia.org/wiki/List_of_HTC_phones
|
2731
2858
|
#########
|
2732
2859
|
|
2733
|
-
- regex: ';
|
2860
|
+
- regex: '; {0,2}HTC[ _]([^;]{1,200}); Windows Phone'
|
2734
2861
|
device_replacement: 'HTC $1'
|
2735
2862
|
brand_replacement: 'HTC'
|
2736
2863
|
model_replacement: '$1'
|
@@ -2738,59 +2865,59 @@ device_parsers:
|
|
2738
2865
|
# Android HTC with Version Number matcher
|
2739
2866
|
# ; HTC_0P3Z11/1.12.161.3 Build
|
2740
2867
|
# ;HTC_A3335 V2.38.841.1 Build
|
2741
|
-
- regex: ';
|
2868
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
2742
2869
|
device_replacement: 'HTC $1'
|
2743
2870
|
brand_replacement: 'HTC'
|
2744
2871
|
model_replacement: '$1'
|
2745
|
-
- regex: ';
|
2872
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
2746
2873
|
device_replacement: 'HTC $1 $2'
|
2747
2874
|
brand_replacement: 'HTC'
|
2748
2875
|
model_replacement: '$1 $2'
|
2749
|
-
- regex: ';
|
2876
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
2750
2877
|
device_replacement: 'HTC $1 $2 $3'
|
2751
2878
|
brand_replacement: 'HTC'
|
2752
2879
|
model_replacement: '$1 $2 $3'
|
2753
|
-
- regex: ';
|
2880
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
2754
2881
|
device_replacement: 'HTC $1 $2 $3 $4'
|
2755
2882
|
brand_replacement: 'HTC'
|
2756
2883
|
model_replacement: '$1 $2 $3 $4'
|
2757
2884
|
|
2758
2885
|
# Android HTC without Version Number matcher
|
2759
|
-
- regex: ';
|
2886
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/;]+)(?: {0,2}Build|[;\)]| - )'
|
2760
2887
|
device_replacement: 'HTC $1'
|
2761
2888
|
brand_replacement: 'HTC'
|
2762
2889
|
model_replacement: '$1'
|
2763
|
-
- regex: ';
|
2890
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/;\)]+)|)(?: {0,2}Build|[;\)]| - )'
|
2764
2891
|
device_replacement: 'HTC $1 $2'
|
2765
2892
|
brand_replacement: 'HTC'
|
2766
2893
|
model_replacement: '$1 $2'
|
2767
|
-
- regex: ';
|
2894
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\)]+)|)|)(?: {0,2}Build|[;\)]| - )'
|
2768
2895
|
device_replacement: 'HTC $1 $2 $3'
|
2769
2896
|
brand_replacement: 'HTC'
|
2770
2897
|
model_replacement: '$1 $2 $3'
|
2771
|
-
- regex: ';
|
2898
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+)|)|)|)(?: {0,2}Build|[;\)]| - )'
|
2772
2899
|
device_replacement: 'HTC $1 $2 $3 $4'
|
2773
2900
|
brand_replacement: 'HTC'
|
2774
2901
|
model_replacement: '$1 $2 $3 $4'
|
2775
2902
|
|
2776
2903
|
# HTC Streaming Player
|
2777
|
-
- regex: 'HTC Streaming Player [^\/]
|
2904
|
+
- regex: 'HTC Streaming Player [^\/]{0,30}/[^\/]{0,10}/ htc_([^/]{1,10}) /'
|
2778
2905
|
device_replacement: 'HTC $1'
|
2779
2906
|
brand_replacement: 'HTC'
|
2780
2907
|
model_replacement: '$1'
|
2781
2908
|
# general matcher for anything else
|
2782
|
-
- regex: '(?:[;,]
|
2909
|
+
- regex: '(?:[;,] {0,2}|^)(?:htccn_chs-|)HTC[ _-]?([^;]{1,200}?)(?: {0,2}Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\(\)]|$)'
|
2783
2910
|
regex_flag: 'i'
|
2784
2911
|
device_replacement: 'HTC $1'
|
2785
2912
|
brand_replacement: 'HTC'
|
2786
2913
|
model_replacement: '$1'
|
2787
2914
|
# Android matchers without HTC
|
2788
|
-
- regex: ';
|
2915
|
+
- regex: '; {0,2}(A6277|ADR6200|ADR6300|ADR6350|ADR6400[A-Z]*|ADR6425[A-Z]*|APX515CKT|ARIA|Desire[^_ ]*|Dream|EndeavorU|Eris|Evo|Flyer|HD2|Hero|HERO200|Hero CDMA|HTL21|Incredible|Inspire[A-Z0-9]*|Legend|Liberty|Nexus ?(?:One|HD2)|One|One S C2|One[ _]?(?:S|V|X\+?)\w*|PC36100|PG06100|PG86100|S31HT|Sensation|Wildfire)(?: Build|[/;\(\)])'
|
2789
2916
|
regex_flag: 'i'
|
2790
2917
|
device_replacement: 'HTC $1'
|
2791
2918
|
brand_replacement: 'HTC'
|
2792
2919
|
model_replacement: '$1'
|
2793
|
-
- regex: ';
|
2920
|
+
- regex: '; {0,2}(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.{1,200}?)(?:[/;\)]|Build|MIUI|1\.0)'
|
2794
2921
|
regex_flag: 'i'
|
2795
2922
|
device_replacement: 'HTC $1 $2'
|
2796
2923
|
brand_replacement: 'HTC'
|
@@ -2800,16 +2927,16 @@ device_parsers:
|
|
2800
2927
|
# Hyundai
|
2801
2928
|
# @ref: http://www.hyundaitechnologies.com
|
2802
2929
|
#########
|
2803
|
-
- regex: ';
|
2930
|
+
- regex: '; {0,2}HYUNDAI (T\d[^/]{0,10})(?: Build|\) AppleWebKit)'
|
2804
2931
|
device_replacement: 'Hyundai $1'
|
2805
2932
|
brand_replacement: 'Hyundai'
|
2806
2933
|
model_replacement: '$1'
|
2807
|
-
- regex: ';
|
2934
|
+
- regex: '; {0,2}HYUNDAI ([^;/]{1,10}?)(?: Build|\) AppleWebKit)'
|
2808
2935
|
device_replacement: 'Hyundai $1'
|
2809
2936
|
brand_replacement: 'Hyundai'
|
2810
2937
|
model_replacement: '$1'
|
2811
2938
|
# X900? http://www.amazon.com/Hyundai-X900-Retina-Android-Bluetooth/dp/B00AO07H3O
|
2812
|
-
- regex: ';
|
2939
|
+
- regex: '; {0,2}(X700|Hold X|MB-6900)(?: Build|\) AppleWebKit)'
|
2813
2940
|
device_replacement: 'Hyundai $1'
|
2814
2941
|
brand_replacement: 'Hyundai'
|
2815
2942
|
model_replacement: '$1'
|
@@ -2818,12 +2945,12 @@ device_parsers:
|
|
2818
2945
|
# iBall
|
2819
2946
|
# @ref: http://www.iball.co.in/Category/Mobiles/22
|
2820
2947
|
#########
|
2821
|
-
- regex: ';
|
2948
|
+
- regex: '; {0,2}(?:iBall[ _\-]|)(Andi)[ _]?(\d[^;/]*)(?: Build|\) AppleWebKit)'
|
2822
2949
|
regex_flag: 'i'
|
2823
2950
|
device_replacement: '$1 $2'
|
2824
2951
|
brand_replacement: 'iBall'
|
2825
2952
|
model_replacement: '$1 $2'
|
2826
|
-
- regex: ';
|
2953
|
+
- regex: '; {0,2}(IBall)(?:[ _]([^;/]{1,100}?)|)(?: Build|\) AppleWebKit)'
|
2827
2954
|
regex_flag: 'i'
|
2828
2955
|
device_replacement: '$1 $2'
|
2829
2956
|
brand_replacement: 'iBall'
|
@@ -2833,7 +2960,7 @@ device_parsers:
|
|
2833
2960
|
# IconBIT
|
2834
2961
|
# @ref: http://www.iconbit.com/catalog/tablets/
|
2835
2962
|
#########
|
2836
|
-
- regex: ';
|
2963
|
+
- regex: '; {0,2}(NT-\d+[^ ;/]{0,50}|Net[Tt]AB [^;/]{1,50}|Mercury [A-Z]{1,50}|iconBIT)(?: S/N:[^;/]{1,50}|)(?: Build|\) AppleWebKit)'
|
2837
2964
|
device_replacement: '$1'
|
2838
2965
|
brand_replacement: 'IconBIT'
|
2839
2966
|
model_replacement: '$1'
|
@@ -2842,7 +2969,7 @@ device_parsers:
|
|
2842
2969
|
# IMO
|
2843
2970
|
# @ref: http://www.ponselimo.com/
|
2844
2971
|
#########
|
2845
|
-
- regex: ';
|
2972
|
+
- regex: '; {0,2}(IMO)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2846
2973
|
regex_flag: 'i'
|
2847
2974
|
device_replacement: '$1 $2'
|
2848
2975
|
brand_replacement: 'IMO'
|
@@ -2852,12 +2979,12 @@ device_parsers:
|
|
2852
2979
|
# i-mobile
|
2853
2980
|
# @ref: http://www.i-mobilephone.com/
|
2854
2981
|
#########
|
2855
|
-
- regex: ';
|
2982
|
+
- regex: '; {0,2}i-?mobile[ _]([^/]{1,50})(?: Build|\) AppleWebKit)'
|
2856
2983
|
regex_flag: 'i'
|
2857
2984
|
device_replacement: 'i-mobile $1'
|
2858
2985
|
brand_replacement: 'imobile'
|
2859
2986
|
model_replacement: '$1'
|
2860
|
-
- regex: ';
|
2987
|
+
- regex: '; {0,2}(i-(?:style|note)[^/]{0,10})(?: Build|\) AppleWebKit)'
|
2861
2988
|
regex_flag: 'i'
|
2862
2989
|
device_replacement: 'i-mobile $1'
|
2863
2990
|
brand_replacement: 'imobile'
|
@@ -2867,7 +2994,7 @@ device_parsers:
|
|
2867
2994
|
# Impression
|
2868
2995
|
# @ref: http://impression.ua/planshetnye-kompyutery
|
2869
2996
|
#########
|
2870
|
-
- regex: ';
|
2997
|
+
- regex: '; {0,2}(ImPAD) ?(\d+(?:.){0,100}?)(?: Build|\) AppleWebKit)'
|
2871
2998
|
device_replacement: '$1 $2'
|
2872
2999
|
brand_replacement: 'Impression'
|
2873
3000
|
model_replacement: '$1 $2'
|
@@ -2876,7 +3003,7 @@ device_parsers:
|
|
2876
3003
|
# Infinix
|
2877
3004
|
# @ref: http://www.infinixmobility.com/index.html
|
2878
3005
|
#########
|
2879
|
-
- regex: ';
|
3006
|
+
- regex: '; {0,2}(Infinix)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2880
3007
|
device_replacement: '$1 $2'
|
2881
3008
|
brand_replacement: 'Infinix'
|
2882
3009
|
model_replacement: '$2'
|
@@ -2885,7 +3012,7 @@ device_parsers:
|
|
2885
3012
|
# Informer
|
2886
3013
|
# @ref: ??
|
2887
3014
|
#########
|
2888
|
-
- regex: ';
|
3015
|
+
- regex: '; {0,2}(Informer)[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2889
3016
|
device_replacement: '$1 $2'
|
2890
3017
|
brand_replacement: 'Informer'
|
2891
3018
|
model_replacement: '$2'
|
@@ -2895,7 +3022,7 @@ device_parsers:
|
|
2895
3022
|
# @ref: http://www.intenso.de
|
2896
3023
|
# @models: 7":TAB 714,TAB 724;8":TAB 814,TAB 824;10":TAB 1004
|
2897
3024
|
#########
|
2898
|
-
- regex: ';
|
3025
|
+
- regex: '; {0,2}(TAB) ?([78][12]4)(?: Build|\) AppleWebKit)'
|
2899
3026
|
device_replacement: 'Intenso $1'
|
2900
3027
|
brand_replacement: 'Intenso'
|
2901
3028
|
model_replacement: '$1 $2'
|
@@ -2906,21 +3033,21 @@ device_parsers:
|
|
2906
3033
|
# @note: Zync also offers a "Cloud Z5" device
|
2907
3034
|
#########
|
2908
3035
|
# smartphones
|
2909
|
-
- regex: ';
|
3036
|
+
- regex: '; {0,2}(?:Intex[ _]|)(AQUA|Aqua)([ _\.\-])([^;/]{1,100}?) {0,2}(?:Build|;)'
|
2910
3037
|
device_replacement: '$1$2$3'
|
2911
3038
|
brand_replacement: 'Intex'
|
2912
3039
|
model_replacement: '$1 $3'
|
2913
3040
|
# matches "INTEX CLOUD X1"
|
2914
|
-
- regex: ';
|
3041
|
+
- regex: '; {0,2}(?:INTEX|Intex)(?:[_ ]([^\ _;/]+))(?:[_ ]([^\ _;/]+)|) {0,2}(?:Build|;)'
|
2915
3042
|
device_replacement: '$1 $2'
|
2916
3043
|
brand_replacement: 'Intex'
|
2917
3044
|
model_replacement: '$1 $2'
|
2918
3045
|
# tablets
|
2919
|
-
- regex: ';
|
3046
|
+
- regex: '; {0,2}([iI]Buddy)[ _]?(Connect)(?:_|\?_| |)([^;/]{0,50}) {0,2}(?:Build|;)'
|
2920
3047
|
device_replacement: '$1 $2 $3'
|
2921
3048
|
brand_replacement: 'Intex'
|
2922
3049
|
model_replacement: 'iBuddy $2 $3'
|
2923
|
-
- regex: ';
|
3050
|
+
- regex: '; {0,2}(I-Buddy)[ _]([^;/]{1,100}?) {0,2}(?:Build|;)'
|
2924
3051
|
device_replacement: '$1 $2'
|
2925
3052
|
brand_replacement: 'Intex'
|
2926
3053
|
model_replacement: 'iBuddy $2'
|
@@ -2929,7 +3056,7 @@ device_parsers:
|
|
2929
3056
|
# iOCEAN
|
2930
3057
|
# @ref: http://www.iocean.cc/
|
2931
3058
|
#########
|
2932
|
-
- regex: ';
|
3059
|
+
- regex: '; {0,2}(iOCEAN) ([^/]{1,50})(?: Build|\) AppleWebKit)'
|
2933
3060
|
regex_flag: 'i'
|
2934
3061
|
device_replacement: '$1 $2'
|
2935
3062
|
brand_replacement: 'iOCEAN'
|
@@ -2939,7 +3066,7 @@ device_parsers:
|
|
2939
3066
|
# i.onik
|
2940
3067
|
# @ref: http://www.i-onik.de/
|
2941
3068
|
#########
|
2942
|
-
- regex: ';
|
3069
|
+
- regex: '; {0,2}(TP\d+(?:\.\d+|)\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2943
3070
|
device_replacement: 'ionik $1'
|
2944
3071
|
brand_replacement: 'ionik'
|
2945
3072
|
model_replacement: '$1'
|
@@ -2948,7 +3075,7 @@ device_parsers:
|
|
2948
3075
|
# IRU.ru
|
2949
3076
|
# @ref: http://www.iru.ru/catalog/soho/planetable/
|
2950
3077
|
#########
|
2951
|
-
- regex: ';
|
3078
|
+
- regex: '; {0,2}(M702pro)(?: Build|\) AppleWebKit)'
|
2952
3079
|
device_replacement: '$1'
|
2953
3080
|
brand_replacement: 'Iru'
|
2954
3081
|
model_replacement: '$1'
|
@@ -2957,7 +3084,7 @@ device_parsers:
|
|
2957
3084
|
# Itel Mobile
|
2958
3085
|
# @ref: https://www.itel-mobile.com/global/products/
|
2959
3086
|
#########
|
2960
|
-
- regex: ';
|
3087
|
+
- regex: '; {0,2}itel ([^;/]*)(?: Build|\) AppleWebKit)'
|
2961
3088
|
device_replacement: 'Itel $1'
|
2962
3089
|
brand_replacement: 'Itel'
|
2963
3090
|
model_replacement: '$1'
|
@@ -2967,11 +3094,11 @@ device_parsers:
|
|
2967
3094
|
# @ref: http://www.ivio.com/mobile.php
|
2968
3095
|
# @models: DG80,DG20,DE38,DE88,MD70
|
2969
3096
|
#########
|
2970
|
-
- regex: ';
|
3097
|
+
- regex: '; {0,2}(DE88Plus|MD70)(?: Build|\) AppleWebKit)'
|
2971
3098
|
device_replacement: '$1'
|
2972
3099
|
brand_replacement: 'Ivio'
|
2973
3100
|
model_replacement: '$1'
|
2974
|
-
- regex: ';
|
3101
|
+
- regex: '; {0,2}IVIO[_\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
2975
3102
|
device_replacement: '$1'
|
2976
3103
|
brand_replacement: 'Ivio'
|
2977
3104
|
model_replacement: '$1'
|
@@ -2980,7 +3107,7 @@ device_parsers:
|
|
2980
3107
|
# Jaytech
|
2981
3108
|
# @ref: http://www.jay-tech.de/jaytech/servlet/frontend/
|
2982
3109
|
#########
|
2983
|
-
- regex: ';
|
3110
|
+
- regex: '; {0,2}(TPC-\d+|JAY-TECH)(?: Build|\) AppleWebKit)'
|
2984
3111
|
device_replacement: '$1'
|
2985
3112
|
brand_replacement: 'Jaytech'
|
2986
3113
|
model_replacement: '$1'
|
@@ -2989,7 +3116,7 @@ device_parsers:
|
|
2989
3116
|
# Jiayu
|
2990
3117
|
# @ref: http://www.ejiayu.com/en/Product.html
|
2991
3118
|
#########
|
2992
|
-
- regex: ';
|
3119
|
+
- regex: '; {0,2}(JY-[^;/]{1,100}|G[234]S?)(?: Build|\) AppleWebKit)'
|
2993
3120
|
device_replacement: '$1'
|
2994
3121
|
brand_replacement: 'Jiayu'
|
2995
3122
|
model_replacement: '$1'
|
@@ -2998,7 +3125,7 @@ device_parsers:
|
|
2998
3125
|
# JXD
|
2999
3126
|
# @ref: http://www.jxd.hk/
|
3000
3127
|
#########
|
3001
|
-
- regex: ';
|
3128
|
+
- regex: '; {0,2}(JXD)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3002
3129
|
device_replacement: '$1 $2'
|
3003
3130
|
brand_replacement: 'JXD'
|
3004
3131
|
model_replacement: '$2'
|
@@ -3007,16 +3134,16 @@ device_parsers:
|
|
3007
3134
|
# Karbonn
|
3008
3135
|
# @ref: http://www.karbonnmobiles.com/products_tablet.php
|
3009
3136
|
#########
|
3010
|
-
- regex: ';
|
3137
|
+
- regex: '; {0,2}Karbonn[ _]?([^;/]{1,100}) {0,2}(?:Build|;)'
|
3011
3138
|
regex_flag: 'i'
|
3012
3139
|
device_replacement: '$1'
|
3013
3140
|
brand_replacement: 'Karbonn'
|
3014
3141
|
model_replacement: '$1'
|
3015
|
-
- regex: ';
|
3142
|
+
- regex: '; {0,2}([^;]{1,200}) Build/Karbonn'
|
3016
3143
|
device_replacement: '$1'
|
3017
3144
|
brand_replacement: 'Karbonn'
|
3018
3145
|
model_replacement: '$1'
|
3019
|
-
- regex: ';
|
3146
|
+
- regex: '; {0,2}(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\d) +Build'
|
3020
3147
|
device_replacement: '$1'
|
3021
3148
|
brand_replacement: 'Karbonn'
|
3022
3149
|
model_replacement: '$1'
|
@@ -3025,84 +3152,84 @@ device_parsers:
|
|
3025
3152
|
# KDDI (Operator Branded Device)
|
3026
3153
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
3027
3154
|
#########
|
3028
|
-
- regex: ';
|
3155
|
+
- regex: '; {0,2}(IS01|IS03|IS05|IS\d{2}SH)(?: Build|\) AppleWebKit)'
|
3029
3156
|
device_replacement: '$1'
|
3030
3157
|
brand_replacement: 'Sharp'
|
3031
3158
|
model_replacement: '$1'
|
3032
|
-
- regex: ';
|
3159
|
+
- regex: '; {0,2}(IS04)(?: Build|\) AppleWebKit)'
|
3033
3160
|
device_replacement: '$1'
|
3034
3161
|
brand_replacement: 'Regza'
|
3035
3162
|
model_replacement: '$1'
|
3036
|
-
- regex: ';
|
3163
|
+
- regex: '; {0,2}(IS06|IS\d{2}PT)(?: Build|\) AppleWebKit)'
|
3037
3164
|
device_replacement: '$1'
|
3038
3165
|
brand_replacement: 'Pantech'
|
3039
3166
|
model_replacement: '$1'
|
3040
|
-
- regex: ';
|
3167
|
+
- regex: '; {0,2}(IS11S)(?: Build|\) AppleWebKit)'
|
3041
3168
|
device_replacement: '$1'
|
3042
3169
|
brand_replacement: 'SonyEricsson'
|
3043
3170
|
model_replacement: 'Xperia Acro'
|
3044
|
-
- regex: ';
|
3171
|
+
- regex: '; {0,2}(IS11CA)(?: Build|\) AppleWebKit)'
|
3045
3172
|
device_replacement: '$1'
|
3046
3173
|
brand_replacement: 'Casio'
|
3047
3174
|
model_replacement: 'GzOne $1'
|
3048
|
-
- regex: ';
|
3175
|
+
- regex: '; {0,2}(IS11LG)(?: Build|\) AppleWebKit)'
|
3049
3176
|
device_replacement: '$1'
|
3050
3177
|
brand_replacement: 'LG'
|
3051
3178
|
model_replacement: 'Optimus X'
|
3052
|
-
- regex: ';
|
3179
|
+
- regex: '; {0,2}(IS11N)(?: Build|\) AppleWebKit)'
|
3053
3180
|
device_replacement: '$1'
|
3054
3181
|
brand_replacement: 'Medias'
|
3055
3182
|
model_replacement: '$1'
|
3056
|
-
- regex: ';
|
3183
|
+
- regex: '; {0,2}(IS11PT)(?: Build|\) AppleWebKit)'
|
3057
3184
|
device_replacement: '$1'
|
3058
3185
|
brand_replacement: 'Pantech'
|
3059
3186
|
model_replacement: 'MIRACH'
|
3060
|
-
- regex: ';
|
3187
|
+
- regex: '; {0,2}(IS12F)(?: Build|\) AppleWebKit)'
|
3061
3188
|
device_replacement: '$1'
|
3062
3189
|
brand_replacement: 'Fujitsu'
|
3063
3190
|
model_replacement: 'Arrows ES'
|
3064
3191
|
# @ref: https://ja.wikipedia.org/wiki/IS12M
|
3065
|
-
- regex: ';
|
3192
|
+
- regex: '; {0,2}(IS12M)(?: Build|\) AppleWebKit)'
|
3066
3193
|
device_replacement: '$1'
|
3067
3194
|
brand_replacement: 'Motorola'
|
3068
3195
|
model_replacement: 'XT909'
|
3069
|
-
- regex: ';
|
3196
|
+
- regex: '; {0,2}(IS12S)(?: Build|\) AppleWebKit)'
|
3070
3197
|
device_replacement: '$1'
|
3071
3198
|
brand_replacement: 'SonyEricsson'
|
3072
3199
|
model_replacement: 'Xperia Acro HD'
|
3073
|
-
- regex: ';
|
3200
|
+
- regex: '; {0,2}(ISW11F)(?: Build|\) AppleWebKit)'
|
3074
3201
|
device_replacement: '$1'
|
3075
3202
|
brand_replacement: 'Fujitsu'
|
3076
3203
|
model_replacement: 'Arrowz Z'
|
3077
|
-
- regex: ';
|
3204
|
+
- regex: '; {0,2}(ISW11HT)(?: Build|\) AppleWebKit)'
|
3078
3205
|
device_replacement: '$1'
|
3079
3206
|
brand_replacement: 'HTC'
|
3080
3207
|
model_replacement: 'EVO'
|
3081
|
-
- regex: ';
|
3208
|
+
- regex: '; {0,2}(ISW11K)(?: Build|\) AppleWebKit)'
|
3082
3209
|
device_replacement: '$1'
|
3083
3210
|
brand_replacement: 'Kyocera'
|
3084
3211
|
model_replacement: 'DIGNO'
|
3085
|
-
- regex: ';
|
3212
|
+
- regex: '; {0,2}(ISW11M)(?: Build|\) AppleWebKit)'
|
3086
3213
|
device_replacement: '$1'
|
3087
3214
|
brand_replacement: 'Motorola'
|
3088
3215
|
model_replacement: 'Photon'
|
3089
|
-
- regex: ';
|
3216
|
+
- regex: '; {0,2}(ISW11SC)(?: Build|\) AppleWebKit)'
|
3090
3217
|
device_replacement: '$1'
|
3091
3218
|
brand_replacement: 'Samsung'
|
3092
3219
|
model_replacement: 'GALAXY S II WiMAX'
|
3093
|
-
- regex: ';
|
3220
|
+
- regex: '; {0,2}(ISW12HT)(?: Build|\) AppleWebKit)'
|
3094
3221
|
device_replacement: '$1'
|
3095
3222
|
brand_replacement: 'HTC'
|
3096
3223
|
model_replacement: 'EVO 3D'
|
3097
|
-
- regex: ';
|
3224
|
+
- regex: '; {0,2}(ISW13HT)(?: Build|\) AppleWebKit)'
|
3098
3225
|
device_replacement: '$1'
|
3099
3226
|
brand_replacement: 'HTC'
|
3100
3227
|
model_replacement: 'J'
|
3101
|
-
- regex: ';
|
3228
|
+
- regex: '; {0,2}(ISW?[0-9]{2}[A-Z]{0,2})(?: Build|\) AppleWebKit)'
|
3102
3229
|
device_replacement: '$1'
|
3103
3230
|
brand_replacement: 'KDDI'
|
3104
3231
|
model_replacement: '$1'
|
3105
|
-
- regex: ';
|
3232
|
+
- regex: '; {0,2}(INFOBAR [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3106
3233
|
device_replacement: '$1'
|
3107
3234
|
brand_replacement: 'KDDI'
|
3108
3235
|
model_replacement: '$1'
|
@@ -3111,7 +3238,7 @@ device_parsers:
|
|
3111
3238
|
# Kingcom
|
3112
3239
|
# @ref: http://www.e-kingcom.com
|
3113
3240
|
#########
|
3114
|
-
- regex: ';
|
3241
|
+
- regex: '; {0,2}(JOYPAD|Joypad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3115
3242
|
device_replacement: '$1 $2'
|
3116
3243
|
brand_replacement: 'Kingcom'
|
3117
3244
|
model_replacement: '$1 $2'
|
@@ -3121,7 +3248,7 @@ device_parsers:
|
|
3121
3248
|
# @ref: https://en.wikipedia.org/wiki/Kobo_Inc.
|
3122
3249
|
# @ref: http://www.kobo.com/devices#tablets
|
3123
3250
|
#########
|
3124
|
-
- regex: ';
|
3251
|
+
- regex: '; {0,2}(Vox|VOX|Arc|K080)(?: Build|\) AppleWebKit)'
|
3125
3252
|
regex_flag: 'i'
|
3126
3253
|
device_replacement: '$1'
|
3127
3254
|
brand_replacement: 'Kobo'
|
@@ -3135,7 +3262,7 @@ device_parsers:
|
|
3135
3262
|
# K-Touch
|
3136
3263
|
# @ref: ??
|
3137
3264
|
#########
|
3138
|
-
- regex: ';
|
3265
|
+
- regex: '; {0,2}(K-Touch)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3139
3266
|
regex_flag: 'i'
|
3140
3267
|
device_replacement: '$1 $2'
|
3141
3268
|
brand_replacement: 'Ktouch'
|
@@ -3145,7 +3272,7 @@ device_parsers:
|
|
3145
3272
|
# KT Tech
|
3146
3273
|
# @ref: http://www.kttech.co.kr
|
3147
3274
|
#########
|
3148
|
-
- regex: ';
|
3275
|
+
- regex: '; {0,2}((?:EV|KM)-S\d+[A-Z]?)(?: Build|\) AppleWebKit)'
|
3149
3276
|
regex_flag: 'i'
|
3150
3277
|
device_replacement: '$1'
|
3151
3278
|
brand_replacement: 'KTtech'
|
@@ -3155,7 +3282,7 @@ device_parsers:
|
|
3155
3282
|
# Kyocera
|
3156
3283
|
# @ref: http://www.android.com/devices/?country=all&m=kyocera
|
3157
3284
|
#########
|
3158
|
-
- regex: ';
|
3285
|
+
- regex: '; {0,2}(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\d{2})(?: Build|\) AppleWebKit)'
|
3159
3286
|
device_replacement: '$1'
|
3160
3287
|
brand_replacement: 'Kyocera'
|
3161
3288
|
model_replacement: '$1'
|
@@ -3164,12 +3291,12 @@ device_parsers:
|
|
3164
3291
|
# Lava
|
3165
3292
|
# @ref: http://www.lavamobiles.com/
|
3166
3293
|
#########
|
3167
|
-
- regex: ';
|
3294
|
+
- regex: '; {0,2}(?:LAVA[ _]|)IRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)'
|
3168
3295
|
regex_flag: 'i'
|
3169
3296
|
device_replacement: 'Iris $1'
|
3170
3297
|
brand_replacement: 'Lava'
|
3171
3298
|
model_replacement: 'Iris $1'
|
3172
|
-
- regex: ';
|
3299
|
+
- regex: '; {0,2}LAVA[ _]([^;/]{1,100}) Build'
|
3173
3300
|
device_replacement: '$1'
|
3174
3301
|
brand_replacement: 'Lava'
|
3175
3302
|
model_replacement: '$1'
|
@@ -3178,7 +3305,7 @@ device_parsers:
|
|
3178
3305
|
# Lemon
|
3179
3306
|
# @ref: http://www.lemonmobiles.com/products.php?type=1
|
3180
3307
|
#########
|
3181
|
-
- regex: ';
|
3308
|
+
- regex: '; {0,2}(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]{1,100}))_?(?: Build|\) AppleWebKit)'
|
3182
3309
|
device_replacement: 'Lemon $1$2'
|
3183
3310
|
brand_replacement: 'Lemon'
|
3184
3311
|
model_replacement: '$1$2'
|
@@ -3187,11 +3314,11 @@ device_parsers:
|
|
3187
3314
|
# Lenco
|
3188
3315
|
# @ref: http://www.lenco.com/c/tablets/
|
3189
3316
|
#########
|
3190
|
-
- regex: ';
|
3317
|
+
- regex: '; {0,2}(TAB-1012)(?: Build|\) AppleWebKit)'
|
3191
3318
|
device_replacement: 'Lenco $1'
|
3192
3319
|
brand_replacement: 'Lenco'
|
3193
3320
|
model_replacement: '$1'
|
3194
|
-
- regex: '; Lenco ([^;/]
|
3321
|
+
- regex: '; Lenco ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3195
3322
|
device_replacement: 'Lenco $1'
|
3196
3323
|
brand_replacement: 'Lenco'
|
3197
3324
|
model_replacement: '$1'
|
@@ -3200,23 +3327,23 @@ device_parsers:
|
|
3200
3327
|
# Lenovo
|
3201
3328
|
# @ref: http://support.lenovo.com/en_GB/downloads/default.page?#
|
3202
3329
|
#########
|
3203
|
-
- regex: ';
|
3330
|
+
- regex: '; {0,2}(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build'
|
3204
3331
|
device_replacement: '$1'
|
3205
3332
|
brand_replacement: 'Lenovo'
|
3206
3333
|
model_replacement: '$1'
|
3207
|
-
- regex: ';
|
3334
|
+
- regex: '; {0,2}(Idea[Tp]ab)[ _]([^;/]{1,100});? Build'
|
3208
3335
|
device_replacement: 'Lenovo $1 $2'
|
3209
3336
|
brand_replacement: 'Lenovo'
|
3210
3337
|
model_replacement: '$1 $2'
|
3211
|
-
- regex: ';
|
3338
|
+
- regex: '; {0,2}(Idea(?:Tab|pad)) ?([^;/]{1,100}) Build'
|
3212
3339
|
device_replacement: 'Lenovo $1 $2'
|
3213
3340
|
brand_replacement: 'Lenovo'
|
3214
3341
|
model_replacement: '$1 $2'
|
3215
|
-
- regex: ';
|
3342
|
+
- regex: '; {0,2}(ThinkPad) ?(Tablet) Build/'
|
3216
3343
|
device_replacement: 'Lenovo $1 $2'
|
3217
3344
|
brand_replacement: 'Lenovo'
|
3218
3345
|
model_replacement: '$1 $2'
|
3219
|
-
- regex: ';
|
3346
|
+
- regex: '; {0,2}(?:LNV-|)(?:=?[Ll]enovo[ _\-]?|LENOVO[ _])(.{1,200}?)(?:Build|[;/\)])'
|
3220
3347
|
device_replacement: 'Lenovo $1'
|
3221
3348
|
brand_replacement: 'Lenovo'
|
3222
3349
|
model_replacement: '$1'
|
@@ -3224,11 +3351,11 @@ device_parsers:
|
|
3224
3351
|
device_replacement: 'Lenovo $1 $2 $3'
|
3225
3352
|
brand_replacement: 'Lenovo'
|
3226
3353
|
model_replacement: '$1 $2 $3'
|
3227
|
-
- regex: ';
|
3354
|
+
- regex: '; {0,2}(?:Ideapad |)K1 Build/'
|
3228
3355
|
device_replacement: 'Lenovo Ideapad K1'
|
3229
3356
|
brand_replacement: 'Lenovo'
|
3230
3357
|
model_replacement: 'Ideapad K1'
|
3231
|
-
- regex: ';
|
3358
|
+
- regex: '; {0,2}(3GC101|3GW10[01]|A390) Build/'
|
3232
3359
|
device_replacement: '$1'
|
3233
3360
|
brand_replacement: 'Lenovo'
|
3234
3361
|
model_replacement: '$1'
|
@@ -3241,7 +3368,7 @@ device_parsers:
|
|
3241
3368
|
# Lexibook
|
3242
3369
|
# @ref: http://www.lexibook.com/fr
|
3243
3370
|
#########
|
3244
|
-
- regex: ';
|
3371
|
+
- regex: '; {0,2}(MFC\d+)[A-Z]{2}([^;,/]*),?(?: Build|\) AppleWebKit)'
|
3245
3372
|
device_replacement: '$1$2'
|
3246
3373
|
brand_replacement: 'Lexibook'
|
3247
3374
|
model_replacement: '$1$2'
|
@@ -3250,23 +3377,23 @@ device_parsers:
|
|
3250
3377
|
# LG
|
3251
3378
|
# @ref: http://www.lg.com/uk/mobile
|
3252
3379
|
#########
|
3253
|
-
- regex: ';
|
3380
|
+
- regex: '; {0,2}(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]{1,30}|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) {0,2}(?:Build|;)'
|
3254
3381
|
device_replacement: '$1'
|
3255
3382
|
brand_replacement: 'LG'
|
3256
3383
|
model_replacement: '$1'
|
3257
|
-
- regex: '[;:]
|
3384
|
+
- regex: '[;:] {0,2}(L-\d+[A-Z]|LGL\d+[A-Z]?)(?:/V\d+|) {0,2}(?:Build|[;\)])'
|
3258
3385
|
device_replacement: '$1'
|
3259
3386
|
brand_replacement: 'LG'
|
3260
3387
|
model_replacement: '$1'
|
3261
|
-
- regex: ';
|
3388
|
+
- regex: '; {0,2}(LG-)([A-Z]{1,2}\d{2,}[^,;/\)\(]*?)(?:Build| V\d+|[,;/\)\(]|$)'
|
3262
3389
|
device_replacement: '$1$2'
|
3263
3390
|
brand_replacement: 'LG'
|
3264
3391
|
model_replacement: '$2'
|
3265
|
-
- regex: ';
|
3392
|
+
- regex: '; {0,2}(LG[ \-]|LG)([^;/]{1,100})[;/]? Build'
|
3266
3393
|
device_replacement: '$1$2'
|
3267
3394
|
brand_replacement: 'LG'
|
3268
3395
|
model_replacement: '$2'
|
3269
|
-
- regex: '^(LG)-([^;/]
|
3396
|
+
- regex: '^(LG)-([^;/]{1,100})/ Mozilla/.{0,200}; Android'
|
3270
3397
|
device_replacement: '$1 $2'
|
3271
3398
|
brand_replacement: 'LG'
|
3272
3399
|
model_replacement: '$2'
|
@@ -3279,11 +3406,11 @@ device_parsers:
|
|
3279
3406
|
# Malata
|
3280
3407
|
# @ref: http://www.malata.com/en/products.aspx?classid=680
|
3281
3408
|
#########
|
3282
|
-
- regex: ';
|
3409
|
+
- regex: '; {0,2}((?:SMB|smb)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3283
3410
|
device_replacement: '$1'
|
3284
3411
|
brand_replacement: 'Malata'
|
3285
3412
|
model_replacement: '$1'
|
3286
|
-
- regex: ';
|
3413
|
+
- regex: '; {0,2}(?:Malata|MALATA) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3287
3414
|
device_replacement: '$1'
|
3288
3415
|
brand_replacement: 'Malata'
|
3289
3416
|
model_replacement: '$1'
|
@@ -3292,7 +3419,7 @@ device_parsers:
|
|
3292
3419
|
# Manta
|
3293
3420
|
# @ref: http://www.manta.com.pl/en
|
3294
3421
|
#########
|
3295
|
-
- regex: ';
|
3422
|
+
- regex: '; {0,2}(MS[45][0-9]{3}|MID0[568][NS]?|MID[1-9]|MID[78]0[1-9]|MID970[1-9]|MID100[1-9])(?: Build|\) AppleWebKit)'
|
3296
3423
|
device_replacement: '$1'
|
3297
3424
|
brand_replacement: 'Manta'
|
3298
3425
|
model_replacement: '$1'
|
@@ -3301,7 +3428,7 @@ device_parsers:
|
|
3301
3428
|
# Match
|
3302
3429
|
# @ref: http://www.match.net.cn/products.asp
|
3303
3430
|
#########
|
3304
|
-
- regex: ';
|
3431
|
+
- regex: '; {0,2}(M1052|M806|M9000|M9100|M9701|MID100|MID120|MID125|MID130|MID135|MID140|MID701|MID710|MID713|MID727|MID728|MID731|MID732|MID733|MID735|MID736|MID737|MID760|MID800|MID810|MID820|MID830|MID833|MID835|MID860|MID900|MID930|MID933|MID960|MID980)(?: Build|\) AppleWebKit)'
|
3305
3432
|
device_replacement: '$1'
|
3306
3433
|
brand_replacement: 'Match'
|
3307
3434
|
model_replacement: '$1'
|
@@ -3315,7 +3442,7 @@ device_parsers:
|
|
3315
3442
|
# Maxx MT150, Maxx MQ601, Maxx M2020, Maxx Sleek MX463neo, Maxx MX525, Maxx MX192-Tune, Maxx Genx Droid 7 AX353,
|
3316
3443
|
# @note: Need more User-Agents!!!
|
3317
3444
|
#########
|
3318
|
-
- regex: ';
|
3445
|
+
- regex: '; {0,2}(GenxDroid7|MSD7.{0,200}?|AX\d.{0,200}?|Tab 701|Tab 722)(?: Build|\) AppleWebKit)'
|
3319
3446
|
device_replacement: 'Maxx $1'
|
3320
3447
|
brand_replacement: 'Maxx'
|
3321
3448
|
model_replacement: '$1'
|
@@ -3324,11 +3451,11 @@ device_parsers:
|
|
3324
3451
|
# Mediacom
|
3325
3452
|
# @ref: http://www.mediacomeurope.it/
|
3326
3453
|
#########
|
3327
|
-
- regex: ';
|
3454
|
+
- regex: '; {0,2}(M-PP[^;/]{1,30}|PhonePad ?\d{2,}[^;/]{1,30}?)(?: Build|\) AppleWebKit)'
|
3328
3455
|
device_replacement: 'Mediacom $1'
|
3329
3456
|
brand_replacement: 'Mediacom'
|
3330
3457
|
model_replacement: '$1'
|
3331
|
-
- regex: ';
|
3458
|
+
- regex: '; {0,2}(M-MP[^;/]{1,30}|SmartPad ?\d{2,}[^;/]{1,30}?)(?: Build|\) AppleWebKit)'
|
3332
3459
|
device_replacement: 'Mediacom $1'
|
3333
3460
|
brand_replacement: 'Mediacom'
|
3334
3461
|
model_replacement: '$1'
|
@@ -3337,12 +3464,12 @@ device_parsers:
|
|
3337
3464
|
# Medion
|
3338
3465
|
# @ref: http://www.medion.com/en/
|
3339
3466
|
#########
|
3340
|
-
- regex: ';
|
3467
|
+
- regex: '; {0,2}(?:MD_|)LIFETAB[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3341
3468
|
regex_flag: 'i'
|
3342
3469
|
device_replacement: 'Medion Lifetab $1'
|
3343
3470
|
brand_replacement: 'Medion'
|
3344
3471
|
model_replacement: 'Lifetab $1'
|
3345
|
-
- regex: ';
|
3472
|
+
- regex: '; {0,2}MEDION ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3346
3473
|
device_replacement: 'Medion $1'
|
3347
3474
|
brand_replacement: 'Medion'
|
3348
3475
|
model_replacement: '$1'
|
@@ -3351,11 +3478,11 @@ device_parsers:
|
|
3351
3478
|
# Meizu
|
3352
3479
|
# @ref: http://www.meizu.com
|
3353
3480
|
#########
|
3354
|
-
- regex: ';
|
3481
|
+
- regex: '; {0,2}(M030|M031|M035|M040|M065|m9)(?: Build|\) AppleWebKit)'
|
3355
3482
|
device_replacement: 'Meizu $1'
|
3356
3483
|
brand_replacement: 'Meizu'
|
3357
3484
|
model_replacement: '$1'
|
3358
|
-
- regex: ';
|
3485
|
+
- regex: '; {0,2}(?:meizu_|MEIZU )(.{1,200}?) {0,2}(?:Build|[;\)])'
|
3359
3486
|
device_replacement: 'Meizu $1'
|
3360
3487
|
brand_replacement: 'Meizu'
|
3361
3488
|
model_replacement: '$1'
|
@@ -3364,28 +3491,28 @@ device_parsers:
|
|
3364
3491
|
# Micromax
|
3365
3492
|
# @ref: http://www.micromaxinfo.com
|
3366
3493
|
#########
|
3367
|
-
- regex: ';
|
3494
|
+
- regex: '; {0,2}(?:Micromax[ _](A111|A240)|(A111|A240)) Build'
|
3368
3495
|
regex_flag: 'i'
|
3369
3496
|
device_replacement: 'Micromax $1$2'
|
3370
3497
|
brand_replacement: 'Micromax'
|
3371
3498
|
model_replacement: '$1$2'
|
3372
|
-
- regex: ';
|
3499
|
+
- regex: '; {0,2}Micromax[ _](A\d{2,3}[^;/]*) Build'
|
3373
3500
|
regex_flag: 'i'
|
3374
3501
|
device_replacement: 'Micromax $1'
|
3375
3502
|
brand_replacement: 'Micromax'
|
3376
3503
|
model_replacement: '$1'
|
3377
3504
|
# be carefull here with Acer e.g. A500
|
3378
|
-
- regex: ';
|
3505
|
+
- regex: '; {0,2}(A\d{2}|A[12]\d{2}|A90S|A110Q) Build'
|
3379
3506
|
regex_flag: 'i'
|
3380
3507
|
device_replacement: 'Micromax $1'
|
3381
3508
|
brand_replacement: 'Micromax'
|
3382
3509
|
model_replacement: '$1'
|
3383
|
-
- regex: ';
|
3510
|
+
- regex: '; {0,2}Micromax[ _](P\d{3}[^;/]*) Build'
|
3384
3511
|
regex_flag: 'i'
|
3385
3512
|
device_replacement: 'Micromax $1'
|
3386
3513
|
brand_replacement: 'Micromax'
|
3387
3514
|
model_replacement: '$1'
|
3388
|
-
- regex: ';
|
3515
|
+
- regex: '; {0,2}(P\d{3}|P\d{3}\(Funbook\)) Build'
|
3389
3516
|
regex_flag: 'i'
|
3390
3517
|
device_replacement: 'Micromax $1'
|
3391
3518
|
brand_replacement: 'Micromax'
|
@@ -3395,7 +3522,7 @@ device_parsers:
|
|
3395
3522
|
# Mito
|
3396
3523
|
# @ref: http://new.mitomobile.com/
|
3397
3524
|
#########
|
3398
|
-
- regex: ';
|
3525
|
+
- regex: '; {0,2}(MITO)[ _\-]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3399
3526
|
regex_flag: 'i'
|
3400
3527
|
device_replacement: '$1 $2'
|
3401
3528
|
brand_replacement: 'Mito'
|
@@ -3405,7 +3532,7 @@ device_parsers:
|
|
3405
3532
|
# Mobistel
|
3406
3533
|
# @ref: http://www.mobistel.com/
|
3407
3534
|
#########
|
3408
|
-
- regex: ';
|
3535
|
+
- regex: '; {0,2}(Cynus)[ _](F5|T\d|.{1,200}?) {0,2}(?:Build|[;/\)])'
|
3409
3536
|
regex_flag: 'i'
|
3410
3537
|
device_replacement: '$1 $2'
|
3411
3538
|
brand_replacement: 'Mobistel'
|
@@ -3415,12 +3542,12 @@ device_parsers:
|
|
3415
3542
|
# Modecom
|
3416
3543
|
# @ref: http://www.modecom.eu/tablets/portal/
|
3417
3544
|
#########
|
3418
|
-
- regex: ';
|
3545
|
+
- regex: '; {0,2}(MODECOM |)(FreeTab) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3419
3546
|
regex_flag: 'i'
|
3420
3547
|
device_replacement: '$1$2 $3'
|
3421
3548
|
brand_replacement: 'Modecom'
|
3422
3549
|
model_replacement: '$2 $3'
|
3423
|
-
- regex: ';
|
3550
|
+
- regex: '; {0,2}(MODECOM )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3424
3551
|
regex_flag: 'i'
|
3425
3552
|
device_replacement: '$1 $2'
|
3426
3553
|
brand_replacement: 'Modecom'
|
@@ -3430,32 +3557,32 @@ device_parsers:
|
|
3430
3557
|
# Motorola
|
3431
3558
|
# @ref: http://www.motorola.com/us/shop-all-mobile-phones/
|
3432
3559
|
#########
|
3433
|
-
- regex: ';
|
3560
|
+
- regex: '; {0,2}(MZ\d{3}\+?|MZ\d{3} 4G|Xoom|XOOM[^;/]*) Build'
|
3434
3561
|
device_replacement: 'Motorola $1'
|
3435
3562
|
brand_replacement: 'Motorola'
|
3436
3563
|
model_replacement: '$1'
|
3437
|
-
- regex: ';
|
3564
|
+
- regex: '; {0,2}(Milestone )(XT[^;/]*) Build'
|
3438
3565
|
device_replacement: 'Motorola $1$2'
|
3439
3566
|
brand_replacement: 'Motorola'
|
3440
3567
|
model_replacement: '$2'
|
3441
|
-
- regex: ';
|
3568
|
+
- regex: '; {0,2}(Motoroi ?x|Droid X|DROIDX) Build'
|
3442
3569
|
regex_flag: 'i'
|
3443
3570
|
device_replacement: 'Motorola $1'
|
3444
3571
|
brand_replacement: 'Motorola'
|
3445
3572
|
model_replacement: 'DROID X'
|
3446
|
-
- regex: ';
|
3573
|
+
- regex: '; {0,2}(Droid[^;/]*|DROID[^;/]*|Milestone[^;/]*|Photon|Triumph|Devour|Titanium) Build'
|
3447
3574
|
device_replacement: 'Motorola $1'
|
3448
3575
|
brand_replacement: 'Motorola'
|
3449
3576
|
model_replacement: '$1'
|
3450
|
-
- regex: ';
|
3577
|
+
- regex: '; {0,2}(A555|A85[34][^;/]*|A95[356]|ME[58]\d{2}\+?|ME600|ME632|ME722|MB\d{3}\+?|MT680|MT710|MT870|MT887|MT917|WX435|WX453|WX44[25]|XT\d{3,4}[A-Z\+]*|CL[iI]Q|CL[iI]Q XT) Build'
|
3451
3578
|
device_replacement: '$1'
|
3452
3579
|
brand_replacement: 'Motorola'
|
3453
3580
|
model_replacement: '$1'
|
3454
|
-
- regex: ';
|
3581
|
+
- regex: '; {0,2}(Motorola MOT-|Motorola[ _\-]|MOT\-?)([^;/]{1,100}) Build'
|
3455
3582
|
device_replacement: '$1$2'
|
3456
3583
|
brand_replacement: 'Motorola'
|
3457
3584
|
model_replacement: '$2'
|
3458
|
-
- regex: ';
|
3585
|
+
- regex: '; {0,2}(Moto[_ ]?|MOT\-)([^;/]{1,100}) Build'
|
3459
3586
|
device_replacement: '$1$2'
|
3460
3587
|
brand_replacement: 'Motorola'
|
3461
3588
|
model_replacement: '$2'
|
@@ -3464,7 +3591,7 @@ device_parsers:
|
|
3464
3591
|
# MpMan
|
3465
3592
|
# @ref: http://www.mpmaneurope.com
|
3466
3593
|
#########
|
3467
|
-
- regex: ';
|
3594
|
+
- regex: '; {0,2}((?:MP[DQ]C|MPG\d{1,4}|MP\d{3,4}|MID(?:(?:10[234]|114|43|7[247]|8[24]|7)C|8[01]1))[^;/]*)(?: Build|\) AppleWebKit)'
|
3468
3595
|
device_replacement: '$1'
|
3469
3596
|
brand_replacement: 'Mpman'
|
3470
3597
|
model_replacement: '$1'
|
@@ -3473,7 +3600,7 @@ device_parsers:
|
|
3473
3600
|
# MSI
|
3474
3601
|
# @ref: http://www.msi.com/product/windpad/
|
3475
3602
|
#########
|
3476
|
-
- regex: ';
|
3603
|
+
- regex: '; {0,2}(?:MSI[ _]|)(Primo\d+|Enjoy[ _\-][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3477
3604
|
regex_flag: 'i'
|
3478
3605
|
device_replacement: '$1'
|
3479
3606
|
brand_replacement: 'Msi'
|
@@ -3483,7 +3610,7 @@ device_parsers:
|
|
3483
3610
|
# Multilaser
|
3484
3611
|
# http://www.multilaser.com.br/listagem_produtos.php?cat=5
|
3485
3612
|
#########
|
3486
|
-
- regex: ';
|
3613
|
+
- regex: '; {0,2}Multilaser[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3487
3614
|
device_replacement: '$1'
|
3488
3615
|
brand_replacement: 'Multilaser'
|
3489
3616
|
model_replacement: '$1'
|
@@ -3492,15 +3619,15 @@ device_parsers:
|
|
3492
3619
|
# MyPhone
|
3493
3620
|
# @ref: http://myphone.com.ph/
|
3494
3621
|
#########
|
3495
|
-
- regex: ';
|
3622
|
+
- regex: '; {0,2}(My)[_]?(Pad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3496
3623
|
device_replacement: '$1$2 $3'
|
3497
3624
|
brand_replacement: 'MyPhone'
|
3498
3625
|
model_replacement: '$1$2 $3'
|
3499
|
-
- regex: ';
|
3626
|
+
- regex: '; {0,2}(My)\|?(Phone)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3500
3627
|
device_replacement: '$1$2 $3'
|
3501
3628
|
brand_replacement: 'MyPhone'
|
3502
3629
|
model_replacement: '$3'
|
3503
|
-
- regex: ';
|
3630
|
+
- regex: '; {0,2}(A\d+)[ _](Duo|)(?: Build|\) AppleWebKit)'
|
3504
3631
|
regex_flag: 'i'
|
3505
3632
|
device_replacement: '$1 $2'
|
3506
3633
|
brand_replacement: 'MyPhone'
|
@@ -3510,7 +3637,7 @@ device_parsers:
|
|
3510
3637
|
# Mytab
|
3511
3638
|
# @ref: http://www.mytab.eu/en/category/mytab-products/
|
3512
3639
|
#########
|
3513
|
-
- regex: ';
|
3640
|
+
- regex: '; {0,2}(myTab[^;/]*)(?: Build|\) AppleWebKit)'
|
3514
3641
|
device_replacement: '$1'
|
3515
3642
|
brand_replacement: 'Mytab'
|
3516
3643
|
model_replacement: '$1'
|
@@ -3519,7 +3646,7 @@ device_parsers:
|
|
3519
3646
|
# Nabi
|
3520
3647
|
# @ref: https://www.nabitablet.com
|
3521
3648
|
#########
|
3522
|
-
- regex: ';
|
3649
|
+
- regex: '; {0,2}(NABI2?-)([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3523
3650
|
device_replacement: '$1$2'
|
3524
3651
|
brand_replacement: 'Nabi'
|
3525
3652
|
model_replacement: '$2'
|
@@ -3528,15 +3655,15 @@ device_parsers:
|
|
3528
3655
|
# Nec Medias
|
3529
3656
|
# @ref: http://www.n-keitai.com/
|
3530
3657
|
#########
|
3531
|
-
- regex: ';
|
3658
|
+
- regex: '; {0,2}(N-\d+[CDE])(?: Build|\) AppleWebKit)'
|
3532
3659
|
device_replacement: '$1'
|
3533
3660
|
brand_replacement: 'Nec'
|
3534
3661
|
model_replacement: '$1'
|
3535
|
-
- regex: '; ?(NEC-)(
|
3662
|
+
- regex: '; ?(NEC-)(.{0,200}?)(?: Build|\) AppleWebKit)'
|
3536
3663
|
device_replacement: '$1$2'
|
3537
3664
|
brand_replacement: 'Nec'
|
3538
3665
|
model_replacement: '$2'
|
3539
|
-
- regex: ';
|
3666
|
+
- regex: '; {0,2}(LT-NA7)(?: Build|\) AppleWebKit)'
|
3540
3667
|
device_replacement: '$1'
|
3541
3668
|
brand_replacement: 'Nec'
|
3542
3669
|
model_replacement: 'Lifetouch Note'
|
@@ -3545,7 +3672,7 @@ device_parsers:
|
|
3545
3672
|
# Nextbook
|
3546
3673
|
# @ref: http://nextbookusa.com
|
3547
3674
|
#########
|
3548
|
-
- regex: ';
|
3675
|
+
- regex: '; {0,2}(NXM\d+[A-Za-z0-9_]{0,50}|Next\d[A-Za-z0-9_ \-]{0,50}|NEXT\d[A-Za-z0-9_ \-]{0,50}|Nextbook [A-Za-z0-9_ ]{0,50}|DATAM803HC|M805)(?: Build|[\);])'
|
3549
3676
|
device_replacement: '$1'
|
3550
3677
|
brand_replacement: 'Nextbook'
|
3551
3678
|
model_replacement: '$1'
|
@@ -3554,12 +3681,12 @@ device_parsers:
|
|
3554
3681
|
# Nokia
|
3555
3682
|
# @ref: http://www.nokia.com
|
3556
3683
|
#########
|
3557
|
-
- regex: ';
|
3684
|
+
- regex: '; {0,2}(Nokia)([ _\-]{0,5})([^;/]{0,50}) Build'
|
3558
3685
|
regex_flag: 'i'
|
3559
3686
|
device_replacement: '$1$2$3'
|
3560
3687
|
brand_replacement: 'Nokia'
|
3561
3688
|
model_replacement: '$3'
|
3562
|
-
- regex: ';
|
3689
|
+
- regex: '; {0,2}(TA\-\d{4})(?: Build|\) AppleWebKit)'
|
3563
3690
|
device_replacement: 'Nokia $1'
|
3564
3691
|
brand_replacement: 'Nokia'
|
3565
3692
|
model_replacement: '$1'
|
@@ -3569,11 +3696,11 @@ device_parsers:
|
|
3569
3696
|
# @ref:
|
3570
3697
|
# TODO nook browser/1.0
|
3571
3698
|
#########
|
3572
|
-
- regex: ';
|
3699
|
+
- regex: '; {0,2}(Nook ?|Barnes & Noble Nook |BN )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3573
3700
|
device_replacement: '$1$2'
|
3574
3701
|
brand_replacement: 'Nook'
|
3575
3702
|
model_replacement: '$2'
|
3576
|
-
- regex: ';
|
3703
|
+
- regex: '; {0,2}(NOOK |)(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2)(?: Build|\) AppleWebKit)'
|
3577
3704
|
device_replacement: '$1$2'
|
3578
3705
|
brand_replacement: 'Nook'
|
3579
3706
|
model_replacement: '$2'
|
@@ -3586,7 +3713,7 @@ device_parsers:
|
|
3586
3713
|
# Olivetti
|
3587
3714
|
# @ref: http://www.olivetti.de/EN/Page/t02/view_html?idp=348
|
3588
3715
|
#########
|
3589
|
-
- regex: ';
|
3716
|
+
- regex: '; {0,2}(OP110|OliPad[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3590
3717
|
device_replacement: 'Olivetti $1'
|
3591
3718
|
brand_replacement: 'Olivetti'
|
3592
3719
|
model_replacement: '$1'
|
@@ -3597,7 +3724,7 @@ device_parsers:
|
|
3597
3724
|
# @note: MID tablets might get matched by CobyKyros first
|
3598
3725
|
# @models: (T107|MID(?:700[2-5]|7031|7108|7132|750[02]|8001|8500|9001|971[12])
|
3599
3726
|
#########
|
3600
|
-
- regex: ';
|
3727
|
+
- regex: '; {0,2}OMEGA[ _\-](MID[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3601
3728
|
device_replacement: 'Omega $1'
|
3602
3729
|
brand_replacement: 'Omega'
|
3603
3730
|
model_replacement: '$1'
|
@@ -3610,7 +3737,7 @@ device_parsers:
|
|
3610
3737
|
# OpenPeak
|
3611
3738
|
# @ref: https://support.google.com/googleplay/answer/1727131?hl=en
|
3612
3739
|
#########
|
3613
|
-
- regex: ';
|
3740
|
+
- regex: '; {0,2}((?:CIUS|cius)[^;/]*)(?: Build|\) AppleWebKit)'
|
3614
3741
|
device_replacement: 'Openpeak $1'
|
3615
3742
|
brand_replacement: 'Openpeak'
|
3616
3743
|
model_replacement: '$1'
|
@@ -3619,18 +3746,18 @@ device_parsers:
|
|
3619
3746
|
# Oppo
|
3620
3747
|
# @ref: http://en.oppo.com/products/
|
3621
3748
|
#########
|
3622
|
-
- regex: ';
|
3749
|
+
- regex: '; {0,2}(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)'
|
3623
3750
|
device_replacement: 'Oppo $1'
|
3624
3751
|
brand_replacement: 'Oppo'
|
3625
3752
|
model_replacement: '$1'
|
3626
|
-
- regex: ';
|
3753
|
+
- regex: '; {0,2}OPPO ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3627
3754
|
device_replacement: 'Oppo $1'
|
3628
3755
|
brand_replacement: 'Oppo'
|
3629
3756
|
model_replacement: '$1'
|
3630
|
-
- regex: ';
|
3757
|
+
- regex: '; {0,2}(CPH\d{1,4}|RMX\d{1,4}|P[A-Z]{3}\d{2})(?: Build|\) AppleWebKit)'
|
3631
3758
|
device_replacement: 'Oppo $1'
|
3632
3759
|
brand_replacement: 'Oppo'
|
3633
|
-
- regex: ';
|
3760
|
+
- regex: '; {0,2}(A1601)(?: Build|\) AppleWebKit)'
|
3634
3761
|
device_replacement: 'Oppo F1s'
|
3635
3762
|
brand_replacement: 'Oppo'
|
3636
3763
|
model_replacement: '$1'
|
@@ -3639,20 +3766,20 @@ device_parsers:
|
|
3639
3766
|
# Odys
|
3640
3767
|
# @ref: http://odys.de
|
3641
3768
|
#########
|
3642
|
-
- regex: ';
|
3769
|
+
- regex: '; {0,2}(?:Odys\-|ODYS\-|ODYS )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3643
3770
|
device_replacement: 'Odys $1'
|
3644
3771
|
brand_replacement: 'Odys'
|
3645
3772
|
model_replacement: '$1'
|
3646
|
-
- regex: ';
|
3773
|
+
- regex: '; {0,2}(SELECT) ?(7)(?: Build|\) AppleWebKit)'
|
3647
3774
|
device_replacement: 'Odys $1 $2'
|
3648
3775
|
brand_replacement: 'Odys'
|
3649
3776
|
model_replacement: '$1 $2'
|
3650
|
-
- regex: ';
|
3777
|
+
- regex: '; {0,2}(PEDI)_(PLUS)_(W)(?: Build|\) AppleWebKit)'
|
3651
3778
|
device_replacement: 'Odys $1 $2 $3'
|
3652
3779
|
brand_replacement: 'Odys'
|
3653
3780
|
model_replacement: '$1 $2 $3'
|
3654
3781
|
# Weltbild - Tablet PC 4 = Cat Phoenix = Odys Tablet PC 4?
|
3655
|
-
- regex: ';
|
3782
|
+
- regex: '; {0,2}(AEON|BRAVIO|FUSION|FUSION2IN1|Genio|EOS10|IEOS[^;/]*|IRON|Loox|LOOX|LOOX Plus|Motion|NOON|NOON_PRO|NEXT|OPOS|PEDI[^;/]*|PRIME[^;/]*|STUDYTAB|TABLO|Tablet-PC-4|UNO_X8|XELIO[^;/]*|Xelio ?\d+ ?[Pp]ro|XENO10|XPRESS PRO)(?: Build|\) AppleWebKit)'
|
3656
3783
|
device_replacement: 'Odys $1'
|
3657
3784
|
brand_replacement: 'Odys'
|
3658
3785
|
model_replacement: '$1'
|
@@ -3674,7 +3801,7 @@ device_parsers:
|
|
3674
3801
|
# Orion
|
3675
3802
|
# @ref: http://www.orion.ua/en/products/computer-products/tablet-pcs.html
|
3676
3803
|
#########
|
3677
|
-
- regex: ';
|
3804
|
+
- regex: '; {0,2}(TP-\d+)(?: Build|\) AppleWebKit)'
|
3678
3805
|
device_replacement: 'Orion $1'
|
3679
3806
|
brand_replacement: 'Orion'
|
3680
3807
|
model_replacement: '$1'
|
@@ -3683,7 +3810,7 @@ device_parsers:
|
|
3683
3810
|
# PackardBell
|
3684
3811
|
# @ref: http://www.packardbell.com/pb/en/AE/content/productgroup/tablets
|
3685
3812
|
#########
|
3686
|
-
- regex: ';
|
3813
|
+
- regex: '; {0,2}(G100W?)(?: Build|\) AppleWebKit)'
|
3687
3814
|
device_replacement: 'PackardBell $1'
|
3688
3815
|
brand_replacement: 'PackardBell'
|
3689
3816
|
model_replacement: '$1'
|
@@ -3694,17 +3821,17 @@ device_parsers:
|
|
3694
3821
|
# @models: T11, T21, T31, P11, P51, Eluga Power, Eluga DL1
|
3695
3822
|
# @models: (tab) Toughpad FZ-A1, Toughpad JT-B1
|
3696
3823
|
#########
|
3697
|
-
- regex: ';
|
3824
|
+
- regex: '; {0,2}(Panasonic)[_ ]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3698
3825
|
device_replacement: '$1 $2'
|
3699
3826
|
brand_replacement: '$1'
|
3700
3827
|
model_replacement: '$2'
|
3701
3828
|
# Toughpad
|
3702
|
-
- regex: ';
|
3829
|
+
- regex: '; {0,2}(FZ-A1B|JT-B1)(?: Build|\) AppleWebKit)'
|
3703
3830
|
device_replacement: 'Panasonic $1'
|
3704
3831
|
brand_replacement: 'Panasonic'
|
3705
3832
|
model_replacement: '$1'
|
3706
3833
|
# Eluga Power
|
3707
|
-
- regex: ';
|
3834
|
+
- regex: '; {0,2}(dL1|DL1)(?: Build|\) AppleWebKit)'
|
3708
3835
|
device_replacement: 'Panasonic $1'
|
3709
3836
|
brand_replacement: 'Panasonic'
|
3710
3837
|
model_replacement: '$1'
|
@@ -3715,15 +3842,15 @@ device_parsers:
|
|
3715
3842
|
# @href: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA
|
3716
3843
|
# @models: ADR8995, ADR910L, ADR930VW, C790, CDM8992, CDM8999, IS06, IS11PT, P2000, P2020, P2030, P4100, P5000, P6010, P6020, P6030, P7000, P7040, P8000, P8010, P9020, P9050, P9060, P9070, P9090, PT001, PT002, PT003, TXT8040, TXT8045, VEGA PTL21
|
3717
3844
|
#########
|
3718
|
-
- regex: ';
|
3845
|
+
- regex: '; {0,2}(SKY[ _]|)(IM\-[AT]\d{3}[^;/]{1,100}).{0,30} Build/'
|
3719
3846
|
device_replacement: 'Pantech $1$2'
|
3720
3847
|
brand_replacement: 'Pantech'
|
3721
3848
|
model_replacement: '$1$2'
|
3722
|
-
- regex: ';
|
3849
|
+
- regex: '; {0,2}((?:ADR8995|ADR910L|ADR930L|ADR930VW|PTL21|P8000)(?: 4G|)) Build/'
|
3723
3850
|
device_replacement: '$1'
|
3724
3851
|
brand_replacement: 'Pantech'
|
3725
3852
|
model_replacement: '$1'
|
3726
|
-
- regex: ';
|
3853
|
+
- regex: '; {0,2}Pantech([^;/]{1,30}).{0,200}? Build/'
|
3727
3854
|
device_replacement: 'Pantech $1'
|
3728
3855
|
brand_replacement: 'Pantech'
|
3729
3856
|
model_replacement: '$1'
|
@@ -3732,7 +3859,7 @@ device_parsers:
|
|
3732
3859
|
# Papayre
|
3733
3860
|
# @ref: http://grammata.es/
|
3734
3861
|
#########
|
3735
|
-
- regex: ';
|
3862
|
+
- regex: '; {0,2}(papyre)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3736
3863
|
regex_flag: 'i'
|
3737
3864
|
device_replacement: '$1 $2'
|
3738
3865
|
brand_replacement: 'Papyre'
|
@@ -3742,7 +3869,7 @@ device_parsers:
|
|
3742
3869
|
# Pearl
|
3743
3870
|
# @ref: http://www.pearl.de/c-1540.shtml
|
3744
3871
|
#########
|
3745
|
-
- regex: ';
|
3872
|
+
- regex: '; {0,2}(?:Touchlet )?(X10\.[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3746
3873
|
device_replacement: 'Pearl $1'
|
3747
3874
|
brand_replacement: 'Pearl'
|
3748
3875
|
model_replacement: '$1'
|
@@ -3755,11 +3882,11 @@ device_parsers:
|
|
3755
3882
|
device_replacement: 'Phicomm $1'
|
3756
3883
|
brand_replacement: 'Phicomm'
|
3757
3884
|
model_replacement: '$1'
|
3758
|
-
- regex: '; PHICOMM ([^;/]
|
3885
|
+
- regex: '; PHICOMM ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3759
3886
|
device_replacement: 'Phicomm $1'
|
3760
3887
|
brand_replacement: 'Phicomm'
|
3761
3888
|
model_replacement: '$1'
|
3762
|
-
- regex: ';
|
3889
|
+
- regex: '; {0,2}(FWS\d{3}[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3763
3890
|
device_replacement: 'Phicomm $1'
|
3764
3891
|
brand_replacement: 'Phicomm'
|
3765
3892
|
model_replacement: '$1'
|
@@ -3771,11 +3898,11 @@ device_parsers:
|
|
3771
3898
|
# @ref: http://www.support.philips.com/support/catalog/products.jsp?_dyncharset=UTF-8&country=&categoryid=ENTERTAINMENT_TABLETS_SU_CN_CARE&userLanguage=en&navCount=0&groupId=&catalogType=&navAction=push&userCountry=cn&title=Entertainment+Tablets&cateId=TABLETS_CA_CN_CARE
|
3772
3899
|
#########
|
3773
3900
|
# @note: this a best guess according to available philips models. Need more User-Agents
|
3774
|
-
- regex: ';
|
3901
|
+
- regex: '; {0,2}(D633|D822|D833|T539|T939|V726|W335|W336|W337|W3568|W536|W5510|W626|W632|W6350|W6360|W6500|W732|W736|W737|W7376|W820|W832|W8355|W8500|W8510|W930)(?: Build|\) AppleWebKit)'
|
3775
3902
|
device_replacement: '$1'
|
3776
3903
|
brand_replacement: 'Philips'
|
3777
3904
|
model_replacement: '$1'
|
3778
|
-
- regex: ';
|
3905
|
+
- regex: '; {0,2}(?:Philips|PHILIPS)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3779
3906
|
device_replacement: 'Philips $1'
|
3780
3907
|
brand_replacement: 'Philips'
|
3781
3908
|
model_replacement: '$1'
|
@@ -3784,7 +3911,7 @@ device_parsers:
|
|
3784
3911
|
# Pipo
|
3785
3912
|
# @ref: http://www.pipo.cn/En/
|
3786
3913
|
#########
|
3787
|
-
- regex: 'Android 4
|
3914
|
+
- regex: 'Android 4\..{0,200}; {0,2}(M[12356789]|U[12368]|S[123])\ ?(pro)?(?: Build|\) AppleWebKit)'
|
3788
3915
|
device_replacement: 'Pipo $1$2'
|
3789
3916
|
brand_replacement: 'Pipo'
|
3790
3917
|
model_replacement: '$1$2'
|
@@ -3793,7 +3920,7 @@ device_parsers:
|
|
3793
3920
|
# Ployer
|
3794
3921
|
# @ref: http://en.ployer.cn/
|
3795
3922
|
#########
|
3796
|
-
- regex: ';
|
3923
|
+
- regex: '; {0,2}(MOMO[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3797
3924
|
device_replacement: '$1'
|
3798
3925
|
brand_replacement: 'Ployer'
|
3799
3926
|
model_replacement: '$1'
|
@@ -3802,11 +3929,11 @@ device_parsers:
|
|
3802
3929
|
# Polaroid/ Acho
|
3803
3930
|
# @ref: http://polaroidstore.com/store/start.asp?category_id=382&category_id2=0&order=title&filter1=&filter2=&filter3=&view=all
|
3804
3931
|
#########
|
3805
|
-
- regex: ';
|
3932
|
+
- regex: '; {0,2}(?:Polaroid[ _]|)((?:MIDC\d{3,}|PMID\d{2,}|PTAB\d{3,})[^;/]{0,30}?)(\/[^;/]{0,30}|)(?: Build|\) AppleWebKit)'
|
3806
3933
|
device_replacement: '$1'
|
3807
3934
|
brand_replacement: 'Polaroid'
|
3808
3935
|
model_replacement: '$1'
|
3809
|
-
- regex: ';
|
3936
|
+
- regex: '; {0,2}(?:Polaroid )(Tablet)(?: Build|\) AppleWebKit)'
|
3810
3937
|
device_replacement: '$1'
|
3811
3938
|
brand_replacement: 'Polaroid'
|
3812
3939
|
model_replacement: '$1'
|
@@ -3816,7 +3943,7 @@ device_parsers:
|
|
3816
3943
|
# @ref: http://pompmobileshop.com/
|
3817
3944
|
#########
|
3818
3945
|
#~ TODO
|
3819
|
-
- regex: ';
|
3946
|
+
- regex: '; {0,2}(POMP)[ _\-](.{1,200}?) {0,2}(?:Build|[;/\)])'
|
3820
3947
|
device_replacement: '$1 $2'
|
3821
3948
|
brand_replacement: 'Pomp'
|
3822
3949
|
model_replacement: '$2'
|
@@ -3825,11 +3952,11 @@ device_parsers:
|
|
3825
3952
|
# Positivo
|
3826
3953
|
# @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
|
3827
3954
|
#########
|
3828
|
-
- regex: ';
|
3955
|
+
- regex: '; {0,2}(TB07STA|TB10STA|TB07FTA|TB10FTA)(?: Build|\) AppleWebKit)'
|
3829
3956
|
device_replacement: '$1'
|
3830
3957
|
brand_replacement: 'Positivo'
|
3831
3958
|
model_replacement: '$1'
|
3832
|
-
- regex: ';
|
3959
|
+
- regex: '; {0,2}(?:Positivo |)((?:YPY|Ypy)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3833
3960
|
device_replacement: '$1'
|
3834
3961
|
brand_replacement: 'Positivo'
|
3835
3962
|
model_replacement: '$1'
|
@@ -3839,15 +3966,15 @@ device_parsers:
|
|
3839
3966
|
# @ref: http://www.pointofview-online.com/default2.php
|
3840
3967
|
# @TODO: Smartphone Models MOB-3515, MOB-5045-B missing
|
3841
3968
|
#########
|
3842
|
-
- regex: ';
|
3969
|
+
- regex: '; {0,2}(MOB-[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3843
3970
|
device_replacement: '$1'
|
3844
3971
|
brand_replacement: 'POV'
|
3845
3972
|
model_replacement: '$1'
|
3846
|
-
- regex: ';
|
3973
|
+
- regex: '; {0,2}POV[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3847
3974
|
device_replacement: 'POV $1'
|
3848
3975
|
brand_replacement: 'POV'
|
3849
3976
|
model_replacement: '$1'
|
3850
|
-
- regex: ';
|
3977
|
+
- regex: '; {0,2}((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\-]|TAB-P)[^;/]*)(?: Build|\) AppleWebKit)'
|
3851
3978
|
device_replacement: 'POV $1'
|
3852
3979
|
brand_replacement: 'POV'
|
3853
3980
|
model_replacement: '$1'
|
@@ -3857,7 +3984,7 @@ device_parsers:
|
|
3857
3984
|
# @ref: http://www.prestigio.com/catalogue/MultiPhones
|
3858
3985
|
# @ref: http://www.prestigio.com/catalogue/MultiPads
|
3859
3986
|
#########
|
3860
|
-
- regex: ';
|
3987
|
+
- regex: '; {0,2}(?:Prestigio |)((?:PAP|PMP)\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3861
3988
|
device_replacement: 'Prestigio $1'
|
3862
3989
|
brand_replacement: 'Prestigio'
|
3863
3990
|
model_replacement: '$1'
|
@@ -3866,7 +3993,7 @@ device_parsers:
|
|
3866
3993
|
# Proscan
|
3867
3994
|
# @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
|
3868
3995
|
#########
|
3869
|
-
- regex: ';
|
3996
|
+
- regex: '; {0,2}(PLT[0-9]{4}.{0,200}?)(?: Build|\) AppleWebKit)'
|
3870
3997
|
device_replacement: '$1'
|
3871
3998
|
brand_replacement: 'Proscan'
|
3872
3999
|
model_replacement: '$1'
|
@@ -3875,15 +4002,15 @@ device_parsers:
|
|
3875
4002
|
# QMobile
|
3876
4003
|
# @ref: http://www.qmobile.com.pk/
|
3877
4004
|
#########
|
3878
|
-
- regex: ';
|
4005
|
+
- regex: '; {0,2}(A2|A5|A8|A900)_?(Classic|)(?: Build|\) AppleWebKit)'
|
3879
4006
|
device_replacement: '$1 $2'
|
3880
4007
|
brand_replacement: 'Qmobile'
|
3881
4008
|
model_replacement: '$1 $2'
|
3882
|
-
- regex: ';
|
4009
|
+
- regex: '; {0,2}(Q[Mm]obile)_([^_]+)_([^_]+?)(?: Build|\) AppleWebKit)'
|
3883
4010
|
device_replacement: 'Qmobile $2 $3'
|
3884
4011
|
brand_replacement: 'Qmobile'
|
3885
4012
|
model_replacement: '$2 $3'
|
3886
|
-
- regex: ';
|
4013
|
+
- regex: '; {0,2}(Q\-?[Mm]obile)[_ ](A[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3887
4014
|
device_replacement: 'Qmobile $2'
|
3888
4015
|
brand_replacement: 'Qmobile'
|
3889
4016
|
model_replacement: '$2'
|
@@ -3892,11 +4019,11 @@ device_parsers:
|
|
3892
4019
|
# Qmobilevn
|
3893
4020
|
# @ref: http://qmobile.vn/san-pham.html
|
3894
4021
|
#########
|
3895
|
-
- regex: ';
|
4022
|
+
- regex: '; {0,2}(Q\-Smart)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3896
4023
|
device_replacement: '$1 $2'
|
3897
4024
|
brand_replacement: 'Qmobilevn'
|
3898
4025
|
model_replacement: '$2'
|
3899
|
-
- regex: ';
|
4026
|
+
- regex: '; {0,2}(Q\-?[Mm]obile)[ _\-](S[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
3900
4027
|
device_replacement: '$1 $2'
|
3901
4028
|
brand_replacement: 'Qmobilevn'
|
3902
4029
|
model_replacement: '$2'
|
@@ -3905,7 +4032,7 @@ device_parsers:
|
|
3905
4032
|
# Quanta
|
3906
4033
|
# @ref: ?
|
3907
4034
|
#########
|
3908
|
-
- regex: ';
|
4035
|
+
- regex: '; {0,2}(TA1013)(?: Build|\) AppleWebKit)'
|
3909
4036
|
device_replacement: '$1'
|
3910
4037
|
brand_replacement: 'Quanta'
|
3911
4038
|
model_replacement: '$1'
|
@@ -3928,7 +4055,7 @@ device_parsers:
|
|
3928
4055
|
# @ref: http://www.rock-chips.com/a/cn/product/index.html
|
3929
4056
|
# @note: manufacturer sells chipsets - I assume that these UAs are dev-boards
|
3930
4057
|
#########
|
3931
|
-
- regex: ';
|
4058
|
+
- regex: '; {0,2}(RK\d+),?(?: Build|\) AppleWebKit)'
|
3932
4059
|
device_replacement: '$1'
|
3933
4060
|
brand_replacement: 'Rockchip'
|
3934
4061
|
model_replacement: '$1'
|
@@ -3941,55 +4068,55 @@ device_parsers:
|
|
3941
4068
|
# Samsung Android Devices
|
3942
4069
|
# @ref: http://www.samsung.com/us/mobile/cell-phones/all-products
|
3943
4070
|
#########
|
3944
|
-
- regex: ';
|
4071
|
+
- regex: '; {0,2}(SAMSUNG |Samsung |)((?:Galaxy (?:Note II|S\d)|GT-I9082|GT-I9205|GT-N7\d{3}|SM-N9005)[^;/]{0,100})\/?[^;/]{0,50} Build/'
|
3945
4072
|
device_replacement: 'Samsung $1$2'
|
3946
4073
|
brand_replacement: 'Samsung'
|
3947
4074
|
model_replacement: '$2'
|
3948
|
-
- regex: ';
|
4075
|
+
- regex: '; {0,2}(Google |)(Nexus [Ss](?: 4G|)) Build/'
|
3949
4076
|
device_replacement: 'Samsung $1$2'
|
3950
4077
|
brand_replacement: 'Samsung'
|
3951
4078
|
model_replacement: '$2'
|
3952
|
-
- regex: ';
|
4079
|
+
- regex: '; {0,2}(SAMSUNG |Samsung )([^\/]{0,50})\/[^ ]{0,50} Build/'
|
3953
4080
|
device_replacement: 'Samsung $2'
|
3954
4081
|
brand_replacement: 'Samsung'
|
3955
4082
|
model_replacement: '$2'
|
3956
|
-
- regex: ';
|
4083
|
+
- regex: '; {0,2}(Galaxy(?: Ace| Nexus| S ?II+|Nexus S| with MCR 1.2| Mini Plus 4G|)) Build/'
|
3957
4084
|
device_replacement: 'Samsung $1'
|
3958
4085
|
brand_replacement: 'Samsung'
|
3959
4086
|
model_replacement: '$1'
|
3960
|
-
- regex: ';
|
4087
|
+
- regex: '; {0,2}(SAMSUNG[ _\-]|)(?:SAMSUNG[ _\-])([^;/]{1,100}) Build'
|
3961
4088
|
device_replacement: 'Samsung $2'
|
3962
4089
|
brand_replacement: 'Samsung'
|
3963
4090
|
model_replacement: '$2'
|
3964
|
-
- regex: ';
|
4091
|
+
- regex: '; {0,2}(SAMSUNG-|)(GT\-[BINPS]\d{4}[^\/]{0,50})(\/[^ ]{0,50}) Build'
|
3965
4092
|
device_replacement: 'Samsung $1$2$3'
|
3966
4093
|
brand_replacement: 'Samsung'
|
3967
4094
|
model_replacement: '$2'
|
3968
|
-
- regex: '(?:;
|
4095
|
+
- regex: '(?:; {0,2}|^)((?:GT\-[BIiNPS]\d{4}|I9\d{2}0[A-Za-z\+]?\b)[^;/\)]*?)(?:Build|Linux|MIUI|[;/\)])'
|
3969
4096
|
device_replacement: 'Samsung $1'
|
3970
4097
|
brand_replacement: 'Samsung'
|
3971
4098
|
model_replacement: '$1'
|
3972
|
-
- regex: '; (SAMSUNG-)([A-Za-z0-9\-]
|
4099
|
+
- regex: '; (SAMSUNG-)([A-Za-z0-9\-]{0,50}).{0,200} Build/'
|
3973
4100
|
device_replacement: 'Samsung $1$2'
|
3974
4101
|
brand_replacement: 'Samsung'
|
3975
4102
|
model_replacement: '$2'
|
3976
|
-
- regex: ';
|
4103
|
+
- regex: '; {0,2}((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\-[A-Za-z0-9 ]{1,50})(/?[^ ]*|) Build'
|
3977
4104
|
device_replacement: 'Samsung $1'
|
3978
4105
|
brand_replacement: 'Samsung'
|
3979
4106
|
model_replacement: '$1'
|
3980
|
-
- regex: ';
|
4107
|
+
- regex: '; {0,2}((?:SC)\-[A-Za-z0-9 ]{1,50})(/?[^ ]*|)\)'
|
3981
4108
|
device_replacement: 'Samsung $1'
|
3982
4109
|
brand_replacement: 'Samsung'
|
3983
4110
|
model_replacement: '$1'
|
3984
|
-
- regex: ' ((?:SCH)\-[A-Za-z0-9 ]
|
4111
|
+
- regex: ' ((?:SCH)\-[A-Za-z0-9 ]{1,50})(/?[^ ]*|) Build'
|
3985
4112
|
device_replacement: 'Samsung $1'
|
3986
4113
|
brand_replacement: 'Samsung'
|
3987
4114
|
model_replacement: '$1'
|
3988
|
-
- regex: ';
|
4115
|
+
- regex: '; {0,2}(Behold ?(?:2|II)|YP\-G[^;/]{1,100}|EK-GC100|SCL21|I9300) Build'
|
3989
4116
|
device_replacement: 'Samsung $1'
|
3990
4117
|
brand_replacement: 'Samsung'
|
3991
4118
|
model_replacement: '$1'
|
3992
|
-
- regex: ';
|
4119
|
+
- regex: '; {0,2}((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\-[A-Za-z0-9]{5,6})[\)]'
|
3993
4120
|
device_replacement: 'Samsung $1'
|
3994
4121
|
brand_replacement: 'Samsung'
|
3995
4122
|
model_replacement: '$1'
|
@@ -3999,11 +4126,11 @@ device_parsers:
|
|
3999
4126
|
# @ref: http://www.sharp-phone.com/en/index.html
|
4000
4127
|
# @ref: http://www.android.com/devices/?country=all&m=sharp
|
4001
4128
|
#########
|
4002
|
-
- regex: ';
|
4129
|
+
- regex: '; {0,2}(SH\-?\d\d[^;/]{1,100}|SBM\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4003
4130
|
device_replacement: '$1'
|
4004
4131
|
brand_replacement: 'Sharp'
|
4005
4132
|
model_replacement: '$1'
|
4006
|
-
- regex: ';
|
4133
|
+
- regex: '; {0,2}(SHARP[ -])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4007
4134
|
device_replacement: '$1$2'
|
4008
4135
|
brand_replacement: 'Sharp'
|
4009
4136
|
model_replacement: '$2'
|
@@ -4012,15 +4139,15 @@ device_parsers:
|
|
4012
4139
|
# Simvalley
|
4013
4140
|
# @ref: http://www.simvalley-mobile.de/
|
4014
4141
|
#########
|
4015
|
-
- regex: ';
|
4142
|
+
- regex: '; {0,2}(SPX[_\-]\d[^;/]*)(?: Build|\) AppleWebKit)'
|
4016
4143
|
device_replacement: '$1'
|
4017
4144
|
brand_replacement: 'Simvalley'
|
4018
4145
|
model_replacement: '$1'
|
4019
|
-
- regex: ';
|
4146
|
+
- regex: '; {0,2}(SX7\-PEARL\.GmbH)(?: Build|\) AppleWebKit)'
|
4020
4147
|
device_replacement: '$1'
|
4021
4148
|
brand_replacement: 'Simvalley'
|
4022
4149
|
model_replacement: '$1'
|
4023
|
-
- regex: ';
|
4150
|
+
- regex: '; {0,2}(SP[T]?\-\d{2}[^;/]*)(?: Build|\) AppleWebKit)'
|
4024
4151
|
device_replacement: '$1'
|
4025
4152
|
brand_replacement: 'Simvalley'
|
4026
4153
|
model_replacement: '$1'
|
@@ -4030,7 +4157,7 @@ device_parsers:
|
|
4030
4157
|
# @ref: http://www.sk-w.com/phone/phone_list.jsp
|
4031
4158
|
# @ref: http://www.android.com/devices/?country=all&m=sk-telesys
|
4032
4159
|
#########
|
4033
|
-
- regex: ';
|
4160
|
+
- regex: '; {0,2}(SK\-.{0,200}?)(?: Build|\) AppleWebKit)'
|
4034
4161
|
device_replacement: '$1'
|
4035
4162
|
brand_replacement: 'SKtelesys'
|
4036
4163
|
model_replacement: '$1'
|
@@ -4039,11 +4166,11 @@ device_parsers:
|
|
4039
4166
|
# Skytex
|
4040
4167
|
# @ref: http://skytex.com/android
|
4041
4168
|
#########
|
4042
|
-
- regex: ';
|
4169
|
+
- regex: '; {0,2}(?:SKYTEX|SX)-([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4043
4170
|
device_replacement: '$1'
|
4044
4171
|
brand_replacement: 'Skytex'
|
4045
4172
|
model_replacement: '$1'
|
4046
|
-
- regex: ';
|
4173
|
+
- regex: '; {0,2}(IMAGINE [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4047
4174
|
device_replacement: '$1'
|
4048
4175
|
brand_replacement: 'Skytex'
|
4049
4176
|
model_replacement: '$1'
|
@@ -4053,7 +4180,7 @@ device_parsers:
|
|
4053
4180
|
# @ref: http://en.smartdevices.com.cn/Products/
|
4054
4181
|
# @models: Z8, X7, U7H, U7, T30, T20, Ten3, V5-II, T7-3G, SmartQ5, K7, S7, Q8, T19, Ten2, Ten, R10, T7, R7, V5, V7, SmartQ7
|
4055
4182
|
#########
|
4056
|
-
- regex: ';
|
4183
|
+
- regex: '; {0,2}(SmartQ) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4057
4184
|
device_replacement: '$1 $2'
|
4058
4185
|
brand_replacement: '$1'
|
4059
4186
|
model_replacement: '$2'
|
@@ -4063,7 +4190,7 @@ device_parsers:
|
|
4063
4190
|
# @ref: http://www.smartbitt.com/
|
4064
4191
|
# @missing: SBT Useragents
|
4065
4192
|
#########
|
4066
|
-
- regex: ';
|
4193
|
+
- regex: '; {0,2}(WF7C|WF10C|SBT[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4067
4194
|
device_replacement: '$1'
|
4068
4195
|
brand_replacement: 'Smartbitt'
|
4069
4196
|
model_replacement: '$1'
|
@@ -4072,15 +4199,15 @@ device_parsers:
|
|
4072
4199
|
# Softbank (Operator Branded Devices)
|
4073
4200
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
4074
4201
|
#########
|
4075
|
-
- regex: ';
|
4202
|
+
- regex: '; {0,2}(SBM(?:003SH|005SH|006SH|007SH|102SH)) Build'
|
4076
4203
|
device_replacement: '$1'
|
4077
4204
|
brand_replacement: 'Sharp'
|
4078
4205
|
model_replacement: '$1'
|
4079
|
-
- regex: ';
|
4206
|
+
- regex: '; {0,2}(003P|101P|101P11C|102P) Build'
|
4080
4207
|
device_replacement: '$1'
|
4081
4208
|
brand_replacement: 'Panasonic'
|
4082
4209
|
model_replacement: '$1'
|
4083
|
-
- regex: ';
|
4210
|
+
- regex: '; {0,2}(00\dZ) Build/'
|
4084
4211
|
device_replacement: '$1'
|
4085
4212
|
brand_replacement: 'ZTE'
|
4086
4213
|
model_replacement: '$1'
|
@@ -4088,11 +4215,11 @@ device_parsers:
|
|
4088
4215
|
device_replacement: '$1'
|
4089
4216
|
brand_replacement: 'HTC'
|
4090
4217
|
model_replacement: '$1'
|
4091
|
-
- regex: ';
|
4218
|
+
- regex: '; {0,2}(001HT|X06HT) Build'
|
4092
4219
|
device_replacement: '$1'
|
4093
4220
|
brand_replacement: 'HTC'
|
4094
4221
|
model_replacement: '$1'
|
4095
|
-
- regex: ';
|
4222
|
+
- regex: '; {0,2}(201M) Build'
|
4096
4223
|
device_replacement: '$1'
|
4097
4224
|
brand_replacement: 'Motorola'
|
4098
4225
|
model_replacement: 'XT902'
|
@@ -4102,11 +4229,11 @@ device_parsers:
|
|
4102
4229
|
# @ref: http://www.trekstor.co.uk/surftabs-en.html
|
4103
4230
|
# @note: Must come before SonyEricsson
|
4104
4231
|
#########
|
4105
|
-
- regex: ';
|
4232
|
+
- regex: '; {0,2}(ST\d{4}.{0,200})Build/ST'
|
4106
4233
|
device_replacement: 'Trekstor $1'
|
4107
4234
|
brand_replacement: 'Trekstor'
|
4108
4235
|
model_replacement: '$1'
|
4109
|
-
- regex: ';
|
4236
|
+
- regex: '; {0,2}(ST\d{4}.{0,200}?)(?: Build|\) AppleWebKit)'
|
4110
4237
|
device_replacement: 'Trekstor $1'
|
4111
4238
|
brand_replacement: 'Trekstor'
|
4112
4239
|
model_replacement: '$1'
|
@@ -4118,16 +4245,16 @@ device_parsers:
|
|
4118
4245
|
# @TODO: type!
|
4119
4246
|
#########
|
4120
4247
|
# android matchers
|
4121
|
-
- regex: ';
|
4248
|
+
- regex: '; {0,2}(Sony ?Ericsson ?)([^;/]{1,100}) Build'
|
4122
4249
|
device_replacement: '$1$2'
|
4123
4250
|
brand_replacement: 'SonyEricsson'
|
4124
4251
|
model_replacement: '$2'
|
4125
|
-
- regex: ';
|
4252
|
+
- regex: '; {0,2}((?:SK|ST|E|X|LT|MK|MT|WT)\d{2}[a-z0-9]*(?:-o|)|R800i|U20i) Build'
|
4126
4253
|
device_replacement: '$1'
|
4127
4254
|
brand_replacement: 'SonyEricsson'
|
4128
4255
|
model_replacement: '$1'
|
4129
4256
|
# TODO X\d+ is wrong
|
4130
|
-
- regex: ';
|
4257
|
+
- regex: '; {0,2}(Xperia (?:A8|Arc|Acro|Active|Live with Walkman|Mini|Neo|Play|Pro|Ray|X\d+)[^;/]{0,50}) Build'
|
4131
4258
|
regex_flag: 'i'
|
4132
4259
|
device_replacement: '$1'
|
4133
4260
|
brand_replacement: 'SonyEricsson'
|
@@ -4139,31 +4266,31 @@ device_parsers:
|
|
4139
4266
|
# @ref: http://www.sonymobile.com/global-en/products/phones/
|
4140
4267
|
# @ref: http://www.sony.jp/tablet/
|
4141
4268
|
#########
|
4142
|
-
- regex: '; Sony (Tablet[^;/]
|
4269
|
+
- regex: '; Sony (Tablet[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4143
4270
|
device_replacement: 'Sony $1'
|
4144
4271
|
brand_replacement: 'Sony'
|
4145
4272
|
model_replacement: '$1'
|
4146
|
-
- regex: '; Sony ([^;/]
|
4273
|
+
- regex: '; Sony ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4147
4274
|
device_replacement: 'Sony $1'
|
4148
4275
|
brand_replacement: 'Sony'
|
4149
4276
|
model_replacement: '$1'
|
4150
|
-
- regex: ';
|
4277
|
+
- regex: '; {0,2}(Sony)([A-Za-z0-9\-]+)(?: Build|\) AppleWebKit)'
|
4151
4278
|
device_replacement: '$1 $2'
|
4152
4279
|
brand_replacement: '$1'
|
4153
4280
|
model_replacement: '$2'
|
4154
|
-
- regex: ';
|
4281
|
+
- regex: '; {0,2}(Xperia [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4155
4282
|
device_replacement: '$1'
|
4156
4283
|
brand_replacement: 'Sony'
|
4157
4284
|
model_replacement: '$1'
|
4158
|
-
- regex: ';
|
4285
|
+
- regex: '; {0,2}(C(?:1[0-9]|2[0-9]|53|55|6[0-9])[0-9]{2}|D[25]\d{3}|D6[56]\d{2})(?: Build|\) AppleWebKit)'
|
4159
4286
|
device_replacement: '$1'
|
4160
4287
|
brand_replacement: 'Sony'
|
4161
4288
|
model_replacement: '$1'
|
4162
|
-
- regex: ';
|
4289
|
+
- regex: '; {0,2}(SGP\d{3}|SGPT\d{2})(?: Build|\) AppleWebKit)'
|
4163
4290
|
device_replacement: '$1'
|
4164
4291
|
brand_replacement: 'Sony'
|
4165
4292
|
model_replacement: '$1'
|
4166
|
-
- regex: ';
|
4293
|
+
- regex: '; {0,2}(NW-Z1000Series)(?: Build|\) AppleWebKit)'
|
4167
4294
|
device_replacement: '$1'
|
4168
4295
|
brand_replacement: 'Sony'
|
4169
4296
|
model_replacement: '$1'
|
@@ -4186,7 +4313,7 @@ device_parsers:
|
|
4186
4313
|
# Spice
|
4187
4314
|
# @ref: http://www.spicemobilephones.co.in/
|
4188
4315
|
#########
|
4189
|
-
- regex: ';
|
4316
|
+
- regex: '; {0,2}((?:CSL_Spice|Spice|SPICE|CSL)[ _\-]?|)([Mm][Ii])([ _\-]|)(\d{3}[^;/]*)(?: Build|\) AppleWebKit)'
|
4190
4317
|
device_replacement: '$1$2$3$4'
|
4191
4318
|
brand_replacement: 'Spice'
|
4192
4319
|
model_replacement: 'Mi$4'
|
@@ -4195,7 +4322,7 @@ device_parsers:
|
|
4195
4322
|
# Sprint (Operator Branded Devices)
|
4196
4323
|
# @ref:
|
4197
4324
|
#########
|
4198
|
-
- regex: ';
|
4325
|
+
- regex: '; {0,2}(Sprint )(.{1,200}?) {0,2}(?:Build|[;/])'
|
4199
4326
|
device_replacement: '$1$2'
|
4200
4327
|
brand_replacement: 'Sprint'
|
4201
4328
|
model_replacement: '$2'
|
@@ -4208,7 +4335,7 @@ device_parsers:
|
|
4208
4335
|
# Tagi
|
4209
4336
|
# @ref: ??
|
4210
4337
|
#########
|
4211
|
-
- regex: ';
|
4338
|
+
- regex: '; {0,2}(TAGI[ ]?)(MID) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4212
4339
|
device_replacement: '$1$2$3'
|
4213
4340
|
brand_replacement: 'Tagi'
|
4214
4341
|
model_replacement: '$2$3'
|
@@ -4217,7 +4344,7 @@ device_parsers:
|
|
4217
4344
|
# Tecmobile
|
4218
4345
|
# @ref: http://www.tecmobile.com/
|
4219
4346
|
#########
|
4220
|
-
- regex: ';
|
4347
|
+
- regex: '; {0,2}(Oyster500|Opal 800)(?: Build|\) AppleWebKit)'
|
4221
4348
|
device_replacement: 'Tecmobile $1'
|
4222
4349
|
brand_replacement: 'Tecmobile'
|
4223
4350
|
model_replacement: '$1'
|
@@ -4226,7 +4353,7 @@ device_parsers:
|
|
4226
4353
|
# Tecno
|
4227
4354
|
# @ref: www.tecno-mobile.com/
|
4228
4355
|
#########
|
4229
|
-
- regex: ';
|
4356
|
+
- regex: '; {0,2}(TECNO[ _])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4230
4357
|
device_replacement: '$1$2'
|
4231
4358
|
brand_replacement: 'Tecno'
|
4232
4359
|
model_replacement: '$2'
|
@@ -4235,7 +4362,7 @@ device_parsers:
|
|
4235
4362
|
# Telechips, Techvision evaluation boards
|
4236
4363
|
# @ref:
|
4237
4364
|
#########
|
4238
|
-
- regex: ';
|
4365
|
+
- regex: '; {0,2}Android for (Telechips|Techvision) ([^ ]+) '
|
4239
4366
|
regex_flag: 'i'
|
4240
4367
|
device_replacement: '$1 $2'
|
4241
4368
|
brand_replacement: '$1'
|
@@ -4246,7 +4373,7 @@ device_parsers:
|
|
4246
4373
|
# @ref: http://www.telstra.com.au/home-phone/thub-2/
|
4247
4374
|
# @ref: https://support.google.com/googleplay/answer/1727131?hl=en
|
4248
4375
|
#########
|
4249
|
-
- regex: ';
|
4376
|
+
- regex: '; {0,2}(T-Hub2)(?: Build|\) AppleWebKit)'
|
4250
4377
|
device_replacement: '$1'
|
4251
4378
|
brand_replacement: 'Telstra'
|
4252
4379
|
model_replacement: '$1'
|
@@ -4255,7 +4382,7 @@ device_parsers:
|
|
4255
4382
|
# Terra
|
4256
4383
|
# @ref: http://www.wortmann.de/
|
4257
4384
|
#########
|
4258
|
-
- regex: ';
|
4385
|
+
- regex: '; {0,2}(PAD) ?(100[12])(?: Build|\) AppleWebKit)'
|
4259
4386
|
device_replacement: 'Terra $1$2'
|
4260
4387
|
brand_replacement: 'Terra'
|
4261
4388
|
model_replacement: '$1$2'
|
@@ -4264,7 +4391,7 @@ device_parsers:
|
|
4264
4391
|
# Texet
|
4265
4392
|
# @ref: http://www.texet.ru/tablet/
|
4266
4393
|
#########
|
4267
|
-
- regex: ';
|
4394
|
+
- regex: '; {0,2}(T[BM]-\d{3}[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4268
4395
|
device_replacement: '$1'
|
4269
4396
|
brand_replacement: 'Texet'
|
4270
4397
|
model_replacement: '$1'
|
@@ -4273,11 +4400,11 @@ device_parsers:
|
|
4273
4400
|
# Thalia
|
4274
4401
|
# @ref: http://www.thalia.de/shop/tolino-shine-ereader/show/
|
4275
4402
|
#########
|
4276
|
-
- regex: ';
|
4403
|
+
- regex: '; {0,2}(tolino [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4277
4404
|
device_replacement: '$1'
|
4278
4405
|
brand_replacement: 'Thalia'
|
4279
4406
|
model_replacement: '$1'
|
4280
|
-
- regex: ';
|
4407
|
+
- regex: '; {0,2}Build/.{0,200} (TOLINO_BROWSER)'
|
4281
4408
|
device_replacement: '$1'
|
4282
4409
|
brand_replacement: 'Thalia'
|
4283
4410
|
model_replacement: 'Tolino Shine'
|
@@ -4287,11 +4414,11 @@ device_parsers:
|
|
4287
4414
|
# @ref: http://en.thl.com.cn/Mobile
|
4288
4415
|
# @ref: http://thlmobilestore.com
|
4289
4416
|
#########
|
4290
|
-
- regex: ';
|
4417
|
+
- regex: '; {0,2}(?:CJ[ -])?(ThL|THL)[ -]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4291
4418
|
device_replacement: '$1 $2'
|
4292
4419
|
brand_replacement: 'Thl'
|
4293
4420
|
model_replacement: '$2'
|
4294
|
-
- regex: ';
|
4421
|
+
- regex: '; {0,2}(T100|T200|T5|W100|W200|W8s)(?: Build|\) AppleWebKit)'
|
4295
4422
|
device_replacement: '$1'
|
4296
4423
|
brand_replacement: 'Thl'
|
4297
4424
|
model_replacement: '$1'
|
@@ -4300,28 +4427,28 @@ device_parsers:
|
|
4300
4427
|
# T-Mobile (Operator Branded Devices)
|
4301
4428
|
#########
|
4302
4429
|
# @ref: https://en.wikipedia.org/wiki/HTC_Hero
|
4303
|
-
- regex: ';
|
4430
|
+
- regex: '; {0,2}(T-Mobile[ _]G2[ _]Touch) Build'
|
4304
4431
|
device_replacement: '$1'
|
4305
4432
|
brand_replacement: 'HTC'
|
4306
4433
|
model_replacement: 'Hero'
|
4307
4434
|
# @ref: https://en.wikipedia.org/wiki/HTC_Desire_Z
|
4308
|
-
- regex: ';
|
4435
|
+
- regex: '; {0,2}(T-Mobile[ _]G2) Build'
|
4309
4436
|
device_replacement: '$1'
|
4310
4437
|
brand_replacement: 'HTC'
|
4311
4438
|
model_replacement: 'Desire Z'
|
4312
|
-
- regex: ';
|
4439
|
+
- regex: '; {0,2}(T-Mobile myTouch Q) Build'
|
4313
4440
|
device_replacement: '$1'
|
4314
4441
|
brand_replacement: 'Huawei'
|
4315
4442
|
model_replacement: 'U8730'
|
4316
|
-
- regex: ';
|
4443
|
+
- regex: '; {0,2}(T-Mobile myTouch) Build'
|
4317
4444
|
device_replacement: '$1'
|
4318
4445
|
brand_replacement: 'Huawei'
|
4319
4446
|
model_replacement: 'U8680'
|
4320
|
-
- regex: ';
|
4447
|
+
- regex: '; {0,2}(T-Mobile_Espresso) Build'
|
4321
4448
|
device_replacement: '$1'
|
4322
4449
|
brand_replacement: 'HTC'
|
4323
4450
|
model_replacement: 'Espresso'
|
4324
|
-
- regex: ';
|
4451
|
+
- regex: '; {0,2}(T-Mobile G1) Build'
|
4325
4452
|
device_replacement: '$1'
|
4326
4453
|
brand_replacement: 'HTC'
|
4327
4454
|
model_replacement: 'Dream'
|
@@ -4329,11 +4456,11 @@ device_parsers:
|
|
4329
4456
|
device_replacement: '$1$2 $3 $4'
|
4330
4457
|
brand_replacement: 'HTC'
|
4331
4458
|
model_replacement: '$2 $3 $4'
|
4332
|
-
- regex: '\b(T-Mobile)_([^_]+)_(
|
4459
|
+
- regex: '\b(T-Mobile)_([^_]+)_(.{0,200}) Build'
|
4333
4460
|
device_replacement: '$1 $2 $3'
|
4334
4461
|
brand_replacement: 'Tmobile'
|
4335
4462
|
model_replacement: '$2 $3'
|
4336
|
-
- regex: '\b(T-Mobile)[_ ]?(
|
4463
|
+
- regex: '\b(T-Mobile)[_ ]?(.{0,200}?)Build'
|
4337
4464
|
device_replacement: '$1 $2'
|
4338
4465
|
brand_replacement: 'Tmobile'
|
4339
4466
|
model_replacement: '$2'
|
@@ -4351,7 +4478,7 @@ device_parsers:
|
|
4351
4478
|
# Tooky
|
4352
4479
|
# @ref: http://www.tookymobile.com/
|
4353
4480
|
#########
|
4354
|
-
- regex: '
|
4481
|
+
- regex: ' ?(TOOKY)[ _\-]([^;/]{1,100}) ?(?:Build|;)'
|
4355
4482
|
regex_flag: 'i'
|
4356
4483
|
device_replacement: '$1 $2'
|
4357
4484
|
brand_replacement: 'Tooky'
|
@@ -4366,11 +4493,11 @@ device_parsers:
|
|
4366
4493
|
device_replacement: '$1'
|
4367
4494
|
brand_replacement: 'Toshiba'
|
4368
4495
|
model_replacement: 'Folio 100'
|
4369
|
-
- regex: ';
|
4496
|
+
- regex: '; {0,2}([Ff]olio ?100)(?: Build|\) AppleWebKit)'
|
4370
4497
|
device_replacement: '$1'
|
4371
4498
|
brand_replacement: 'Toshiba'
|
4372
4499
|
model_replacement: 'Folio 100'
|
4373
|
-
- regex: ';
|
4500
|
+
- regex: '; {0,2}(AT[0-9]{2,3}(?:\-A|LE\-A|PE\-A|SE|a|)|AT7-A|AT1S0|Hikari-iFrame/WDPF-[^;/]{1,100}|THRiVE|Thrive)(?: Build|\) AppleWebKit)'
|
4374
4501
|
device_replacement: 'Toshiba $1'
|
4375
4502
|
brand_replacement: 'Toshiba'
|
4376
4503
|
model_replacement: '$1'
|
@@ -4379,12 +4506,12 @@ device_parsers:
|
|
4379
4506
|
# Touchmate
|
4380
4507
|
# @ref: http://touchmatepc.com/new/
|
4381
4508
|
#########
|
4382
|
-
- regex: ';
|
4509
|
+
- regex: '; {0,2}(TM-MID\d+[^;/]{1,50}|TOUCHMATE|MID-750)(?: Build|\) AppleWebKit)'
|
4383
4510
|
device_replacement: '$1'
|
4384
4511
|
brand_replacement: 'Touchmate'
|
4385
4512
|
model_replacement: '$1'
|
4386
4513
|
# @todo: needs verification user-agents missing
|
4387
|
-
- regex: ';
|
4514
|
+
- regex: '; {0,2}(TM-SM\d+[^;/]{1,50}?)(?: Build|\) AppleWebKit)'
|
4388
4515
|
device_replacement: '$1'
|
4389
4516
|
brand_replacement: 'Touchmate'
|
4390
4517
|
model_replacement: '$1'
|
@@ -4393,11 +4520,11 @@ device_parsers:
|
|
4393
4520
|
# Treq
|
4394
4521
|
# @ref: http://www.treq.co.id/product
|
4395
4522
|
#########
|
4396
|
-
- regex: ';
|
4523
|
+
- regex: '; {0,2}(A10 [Bb]asic2?)(?: Build|\) AppleWebKit)'
|
4397
4524
|
device_replacement: '$1'
|
4398
4525
|
brand_replacement: 'Treq'
|
4399
4526
|
model_replacement: '$1'
|
4400
|
-
- regex: ';
|
4527
|
+
- regex: '; {0,2}(TREQ[ _\-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4401
4528
|
regex_flag: 'i'
|
4402
4529
|
device_replacement: '$1$2'
|
4403
4530
|
brand_replacement: 'Treq'
|
@@ -4409,21 +4536,40 @@ device_parsers:
|
|
4409
4536
|
# @models: A936|A603|X-5|X-3
|
4410
4537
|
#########
|
4411
4538
|
# @todo: guessed markers
|
4412
|
-
- regex: ';
|
4539
|
+
- regex: '; {0,2}(X-?5|X-?3)(?: Build|\) AppleWebKit)'
|
4413
4540
|
device_replacement: '$1'
|
4414
4541
|
brand_replacement: 'Umeox'
|
4415
4542
|
model_replacement: '$1'
|
4416
4543
|
# @todo: guessed markers
|
4417
|
-
- regex: ';
|
4544
|
+
- regex: '; {0,2}(A502\+?|A936|A603|X1|X2)(?: Build|\) AppleWebKit)'
|
4418
4545
|
device_replacement: '$1'
|
4419
4546
|
brand_replacement: 'Umeox'
|
4420
4547
|
model_replacement: '$1'
|
4421
4548
|
|
4549
|
+
#########
|
4550
|
+
# Vernee
|
4551
|
+
# @ref: http://vernee.cc/
|
4552
|
+
# @models: Thor - Thor E
|
4553
|
+
#########
|
4554
|
+
- regex: '; thor Build/'
|
4555
|
+
device_replacement: 'Thor'
|
4556
|
+
brand_replacement: 'Vernee'
|
4557
|
+
model_replacement: 'Thor'
|
4558
|
+
# Regex to modidy for Thor Plus (don't find example UA)
|
4559
|
+
- regex: '; Thor (E)? Build/'
|
4560
|
+
device_replacement: 'Thor $1'
|
4561
|
+
brand_replacement: 'Vernee'
|
4562
|
+
model_replacement: 'Thor'
|
4563
|
+
- regex: '; Apollo Lite Build/'
|
4564
|
+
device_replacement: 'Apollo Lite'
|
4565
|
+
brand_replacement: 'Vernee'
|
4566
|
+
model_replacement: 'Apollo'
|
4567
|
+
|
4422
4568
|
#########
|
4423
4569
|
# Versus
|
4424
4570
|
# @ref: http://versusuk.com/support.html
|
4425
4571
|
#########
|
4426
|
-
- regex: '(TOUCH(?:TAB|PAD)
|
4572
|
+
- regex: '(TOUCH(?:TAB|PAD).{1,200}?)(?: Build|\) AppleWebKit)'
|
4427
4573
|
regex_flag: 'i'
|
4428
4574
|
device_replacement: 'Versus $1'
|
4429
4575
|
brand_replacement: 'Versus'
|
@@ -4433,7 +4579,7 @@ device_parsers:
|
|
4433
4579
|
# Vertu
|
4434
4580
|
# @ref: http://www.vertu.com/
|
4435
4581
|
#########
|
4436
|
-
- regex: '(VERTU) ([^;/]
|
4582
|
+
- regex: '(VERTU) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4437
4583
|
device_replacement: '$1 $2'
|
4438
4584
|
brand_replacement: 'Vertu'
|
4439
4585
|
model_replacement: '$2'
|
@@ -4442,7 +4588,7 @@ device_parsers:
|
|
4442
4588
|
# Videocon
|
4443
4589
|
# @ref: http://www.videoconmobiles.com
|
4444
4590
|
#########
|
4445
|
-
- regex: ';
|
4591
|
+
- regex: '; {0,2}(Videocon)[ _\-]([^;/]{1,100}?) {0,2}(?:Build|;)'
|
4446
4592
|
device_replacement: '$1 $2'
|
4447
4593
|
brand_replacement: 'Videocon'
|
4448
4594
|
model_replacement: '$2'
|
@@ -4455,15 +4601,15 @@ device_parsers:
|
|
4455
4601
|
# Viewsonic
|
4456
4602
|
# @ref: http://viewsonic.com
|
4457
4603
|
#########
|
4458
|
-
- regex: ';
|
4604
|
+
- regex: '; {0,2}((?:ViewPad|ViewPhone|VSD)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4459
4605
|
device_replacement: '$1'
|
4460
4606
|
brand_replacement: 'Viewsonic'
|
4461
4607
|
model_replacement: '$1'
|
4462
|
-
- regex: ';
|
4608
|
+
- regex: '; {0,2}(ViewSonic-)([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4463
4609
|
device_replacement: '$1$2'
|
4464
4610
|
brand_replacement: 'Viewsonic'
|
4465
4611
|
model_replacement: '$2'
|
4466
|
-
- regex: ';
|
4612
|
+
- regex: '; {0,2}(GTablet.{0,200}?)(?: Build|\) AppleWebKit)'
|
4467
4613
|
device_replacement: '$1'
|
4468
4614
|
brand_replacement: 'Viewsonic'
|
4469
4615
|
model_replacement: '$1'
|
@@ -4472,7 +4618,7 @@ device_parsers:
|
|
4472
4618
|
# vivo
|
4473
4619
|
# @ref: http://vivo.cn/
|
4474
4620
|
#########
|
4475
|
-
- regex: ';
|
4621
|
+
- regex: '; {0,2}([Vv]ivo)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4476
4622
|
device_replacement: '$1 $2'
|
4477
4623
|
brand_replacement: 'vivo'
|
4478
4624
|
model_replacement: '$2'
|
@@ -4481,7 +4627,7 @@ device_parsers:
|
|
4481
4627
|
# Vodafone (Operator Branded Devices)
|
4482
4628
|
# @ref: ??
|
4483
4629
|
#########
|
4484
|
-
- regex: '(Vodafone) (
|
4630
|
+
- regex: '(Vodafone) (.{0,200}?)(?: Build|\) AppleWebKit)'
|
4485
4631
|
device_replacement: '$1 $2'
|
4486
4632
|
brand_replacement: '$1'
|
4487
4633
|
model_replacement: '$2'
|
@@ -4490,7 +4636,7 @@ device_parsers:
|
|
4490
4636
|
# Walton
|
4491
4637
|
# @ref: http://www.waltonbd.com/
|
4492
4638
|
#########
|
4493
|
-
- regex: ';
|
4639
|
+
- regex: '; {0,2}(?:Walton[ _\-]|)(Primo[ _\-][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4494
4640
|
regex_flag: 'i'
|
4495
4641
|
device_replacement: 'Walton $1'
|
4496
4642
|
brand_replacement: 'Walton'
|
@@ -4500,7 +4646,7 @@ device_parsers:
|
|
4500
4646
|
# Wiko
|
4501
4647
|
# @ref: http://fr.wikomobile.com/collection.php?s=Smartphones
|
4502
4648
|
#########
|
4503
|
-
- regex: ';
|
4649
|
+
- regex: '; {0,2}(?:WIKO[ \-]|)(CINK\+?|BARRY|BLOOM|DARKFULL|DARKMOON|DARKNIGHT|DARKSIDE|FIZZ|HIGHWAY|IGGY|OZZY|RAINBOW|STAIRWAY|SUBLIM|WAX|CINK [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4504
4650
|
regex_flag: 'i'
|
4505
4651
|
device_replacement: 'Wiko $1'
|
4506
4652
|
brand_replacement: 'Wiko'
|
@@ -4510,7 +4656,7 @@ device_parsers:
|
|
4510
4656
|
# WellcoM
|
4511
4657
|
# @ref: ??
|
4512
4658
|
#########
|
4513
|
-
- regex: ';
|
4659
|
+
- regex: '; {0,2}WellcoM-([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4514
4660
|
device_replacement: 'Wellcom $1'
|
4515
4661
|
brand_replacement: 'Wellcom'
|
4516
4662
|
model_replacement: '$1'
|
@@ -4528,7 +4674,7 @@ device_parsers:
|
|
4528
4674
|
# Wolfgang
|
4529
4675
|
# @ref: http://wolfgangmobile.com/
|
4530
4676
|
#########
|
4531
|
-
- regex: ';
|
4677
|
+
- regex: '; {0,2}(AT-AS[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4532
4678
|
device_replacement: 'Wolfgang $1'
|
4533
4679
|
brand_replacement: 'Wolfgang'
|
4534
4680
|
model_replacement: '$1'
|
@@ -4537,7 +4683,7 @@ device_parsers:
|
|
4537
4683
|
# Woxter
|
4538
4684
|
# @ref: http://www.woxter.es/es-es/categories/index
|
4539
4685
|
#########
|
4540
|
-
- regex: ';
|
4686
|
+
- regex: '; {0,2}(?:Woxter|Wxt) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4541
4687
|
device_replacement: 'Woxter $1'
|
4542
4688
|
brand_replacement: 'Woxter'
|
4543
4689
|
model_replacement: '$1'
|
@@ -4546,7 +4692,7 @@ device_parsers:
|
|
4546
4692
|
# Yarvik Zania
|
4547
4693
|
# @ref: http://yarvik.com
|
4548
4694
|
#########
|
4549
|
-
- regex: ';
|
4695
|
+
- regex: '; {0,2}(?:Xenta |Luna |)(TAB[234][0-9]{2}|TAB0[78]-\d{3}|TAB0?9-\d{3}|TAB1[03]-\d{3}|SMP\d{2}-\d{3})(?: Build|\) AppleWebKit)'
|
4550
4696
|
device_replacement: 'Yarvik $1'
|
4551
4697
|
brand_replacement: 'Yarvik'
|
4552
4698
|
model_replacement: '$1'
|
@@ -4560,7 +4706,7 @@ device_parsers:
|
|
4560
4706
|
# M778, M7000, M7000AD, M7000NBD, M7001, M7002, M7002KBD, M777, M767,
|
4561
4707
|
# M789, M799, M769, M757, M755, M753, M752, M739, M729, M723, M712, M727
|
4562
4708
|
#########
|
4563
|
-
- regex: ';
|
4709
|
+
- regex: '; {0,2}([A-Z]{2,4})(M\d{3,}[A-Z]{2})([^;\)\/]*)(?: Build|[;\)])'
|
4564
4710
|
device_replacement: 'Yifang $1$2$3'
|
4565
4711
|
brand_replacement: 'Yifang'
|
4566
4712
|
model_replacement: '$2'
|
@@ -4569,19 +4715,19 @@ device_parsers:
|
|
4569
4715
|
# XiaoMi
|
4570
4716
|
# @ref: http://www.xiaomi.com/event/buyphone
|
4571
4717
|
#########
|
4572
|
-
- regex: ';
|
4718
|
+
- regex: '; {0,2}((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/]*) (Build|MIUI)/'
|
4573
4719
|
device_replacement: 'XiaoMi $1'
|
4574
4720
|
brand_replacement: 'XiaoMi'
|
4575
4721
|
model_replacement: '$1'
|
4576
|
-
- regex: ';
|
4722
|
+
- regex: '; {0,2}((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/\)]*)'
|
4577
4723
|
device_replacement: 'XiaoMi $1'
|
4578
4724
|
brand_replacement: 'XiaoMi'
|
4579
4725
|
model_replacement: '$1'
|
4580
|
-
- regex: ';
|
4726
|
+
- regex: '; {0,2}(MIX) (Build|MIUI)/'
|
4581
4727
|
device_replacement: 'XiaoMi $1'
|
4582
4728
|
brand_replacement: 'XiaoMi'
|
4583
4729
|
model_replacement: '$1'
|
4584
|
-
- regex: ';
|
4730
|
+
- regex: '; {0,2}((MIX) ([^;/]*)) (Build|MIUI)/'
|
4585
4731
|
device_replacement: 'XiaoMi $1'
|
4586
4732
|
brand_replacement: 'XiaoMi'
|
4587
4733
|
model_replacement: '$1'
|
@@ -4590,17 +4736,17 @@ device_parsers:
|
|
4590
4736
|
# Xolo
|
4591
4737
|
# @ref: http://www.xolo.in/
|
4592
4738
|
#########
|
4593
|
-
- regex: ';
|
4739
|
+
- regex: '; {0,2}XOLO[ _]([^;/]{0,30}tab.{0,30})(?: Build|\) AppleWebKit)'
|
4594
4740
|
regex_flag: 'i'
|
4595
4741
|
device_replacement: 'Xolo $1'
|
4596
4742
|
brand_replacement: 'Xolo'
|
4597
4743
|
model_replacement: '$1'
|
4598
|
-
- regex: ';
|
4744
|
+
- regex: '; {0,2}XOLO[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4599
4745
|
regex_flag: 'i'
|
4600
4746
|
device_replacement: 'Xolo $1'
|
4601
4747
|
brand_replacement: 'Xolo'
|
4602
4748
|
model_replacement: '$1'
|
4603
|
-
- regex: ';
|
4749
|
+
- regex: '; {0,2}(q\d0{2,3}[a-z]?)(?: Build|\) AppleWebKit)'
|
4604
4750
|
regex_flag: 'i'
|
4605
4751
|
device_replacement: 'Xolo $1'
|
4606
4752
|
brand_replacement: 'Xolo'
|
@@ -4610,7 +4756,7 @@ device_parsers:
|
|
4610
4756
|
# Xoro
|
4611
4757
|
# @ref: http://www.xoro.de/produkte/
|
4612
4758
|
#########
|
4613
|
-
- regex: ';
|
4759
|
+
- regex: '; {0,2}(PAD ?[79]\d+[^;/]{0,50}|TelePAD\d+[^;/])(?: Build|\) AppleWebKit)'
|
4614
4760
|
device_replacement: 'Xoro $1'
|
4615
4761
|
brand_replacement: 'Xoro'
|
4616
4762
|
model_replacement: '$1'
|
@@ -4619,7 +4765,7 @@ device_parsers:
|
|
4619
4765
|
# Zopo
|
4620
4766
|
# @ref: http://www.zopomobiles.com/products.html
|
4621
4767
|
#########
|
4622
|
-
- regex: ';
|
4768
|
+
- regex: '; {0,2}(?:(?:ZOPO|Zopo)[ _]([^;/]{1,100}?)|(ZP ?(?:\d{2}[^;/]{1,100}|C2))|(C[2379]))(?: Build|\) AppleWebKit)'
|
4623
4769
|
device_replacement: '$1$2$3'
|
4624
4770
|
brand_replacement: 'Zopo'
|
4625
4771
|
model_replacement: '$1$2$3'
|
@@ -4628,11 +4774,11 @@ device_parsers:
|
|
4628
4774
|
# ZiiLabs
|
4629
4775
|
# @ref: http://www.ziilabs.com/products/platforms/androidreferencetablets.php
|
4630
4776
|
#########
|
4631
|
-
- regex: ';
|
4777
|
+
- regex: '; {0,2}(ZiiLABS) (Zii[^;/]*)(?: Build|\) AppleWebKit)'
|
4632
4778
|
device_replacement: '$1 $2'
|
4633
4779
|
brand_replacement: 'ZiiLabs'
|
4634
4780
|
model_replacement: '$2'
|
4635
|
-
- regex: ';
|
4781
|
+
- regex: '; {0,2}(Zii)_([^;/]*)(?: Build|\) AppleWebKit)'
|
4636
4782
|
device_replacement: '$1 $2'
|
4637
4783
|
brand_replacement: 'ZiiLabs'
|
4638
4784
|
model_replacement: '$2'
|
@@ -4641,36 +4787,36 @@ device_parsers:
|
|
4641
4787
|
# ZTE
|
4642
4788
|
# @ref: http://www.ztedevices.com/
|
4643
4789
|
#########
|
4644
|
-
- regex: ';
|
4790
|
+
- regex: '; {0,2}(ARIZONA|(?:ATLAS|Atlas) W|D930|Grand (?:[SX][^;]{0,200}?|Era|Memo[^;]{0,200}?)|JOE|(?:Kis|KIS)\b[^;]{0,200}?|Libra|Light [^;]{0,200}?|N8[056][01]|N850L|N8000|N9[15]\d{2}|N9810|NX501|Optik|(?:Vip )Racer[^;]{0,200}?|RacerII|RACERII|San Francisco[^;]{0,200}?|V9[AC]|V55|V881|Z[679][0-9]{2}[A-z]?)(?: Build|\) AppleWebKit)'
|
4645
4791
|
device_replacement: '$1'
|
4646
4792
|
brand_replacement: 'ZTE'
|
4647
4793
|
model_replacement: '$1'
|
4648
|
-
- regex: ';
|
4794
|
+
- regex: '; {0,2}([A-Z]\d+)_USA_[^;]{0,200}(?: Build|\) AppleWebKit)'
|
4649
4795
|
device_replacement: '$1'
|
4650
4796
|
brand_replacement: 'ZTE'
|
4651
4797
|
model_replacement: '$1'
|
4652
|
-
- regex: ';
|
4798
|
+
- regex: '; {0,2}(SmartTab\d+)[^;]{0,50}(?: Build|\) AppleWebKit)'
|
4653
4799
|
device_replacement: '$1'
|
4654
4800
|
brand_replacement: 'ZTE'
|
4655
4801
|
model_replacement: '$1'
|
4656
|
-
- regex: ';
|
4802
|
+
- regex: '; {0,2}(?:Blade|BLADE|ZTE-BLADE)([^;/]*)(?: Build|\) AppleWebKit)'
|
4657
4803
|
device_replacement: 'ZTE Blade$1'
|
4658
4804
|
brand_replacement: 'ZTE'
|
4659
4805
|
model_replacement: 'Blade$1'
|
4660
|
-
- regex: ';
|
4806
|
+
- regex: '; {0,2}(?:Skate|SKATE|ZTE-SKATE)([^;/]*)(?: Build|\) AppleWebKit)'
|
4661
4807
|
device_replacement: 'ZTE Skate$1'
|
4662
4808
|
brand_replacement: 'ZTE'
|
4663
4809
|
model_replacement: 'Skate$1'
|
4664
|
-
- regex: ';
|
4810
|
+
- regex: '; {0,2}(Orange |Optimus )(Monte Carlo|San Francisco)(?: Build|\) AppleWebKit)'
|
4665
4811
|
device_replacement: '$1$2'
|
4666
4812
|
brand_replacement: 'ZTE'
|
4667
4813
|
model_replacement: '$1$2'
|
4668
|
-
- regex: ';
|
4814
|
+
- regex: '; {0,2}(?:ZXY-ZTE_|ZTE\-U |ZTE[\- _]|ZTE-C[_ ])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
4669
4815
|
device_replacement: 'ZTE $1'
|
4670
4816
|
brand_replacement: 'ZTE'
|
4671
4817
|
model_replacement: '$1'
|
4672
4818
|
# operator specific
|
4673
|
-
- regex: '; (BASE) (lutea|Lutea 2|Tab[^;]
|
4819
|
+
- regex: '; (BASE) (lutea|Lutea 2|Tab[^;]{0,200}?)(?: Build|\) AppleWebKit)'
|
4674
4820
|
device_replacement: '$1 $2'
|
4675
4821
|
brand_replacement: 'ZTE'
|
4676
4822
|
model_replacement: '$1 $2'
|
@@ -4679,7 +4825,7 @@ device_parsers:
|
|
4679
4825
|
device_replacement: '$1'
|
4680
4826
|
brand_replacement: 'ZTE'
|
4681
4827
|
model_replacement: '$1'
|
4682
|
-
- regex: ';
|
4828
|
+
- regex: '; {0,2}(vp9plus)\)'
|
4683
4829
|
device_replacement: '$1'
|
4684
4830
|
brand_replacement: 'ZTE'
|
4685
4831
|
model_replacement: '$1'
|
@@ -4739,7 +4885,7 @@ device_parsers:
|
|
4739
4885
|
device_replacement: 'Kindle Fire HDX 8.9" 4G'
|
4740
4886
|
brand_replacement: 'Amazon'
|
4741
4887
|
model_replacement: 'Kindle Fire HDX 8.9" 4G'
|
4742
|
-
- regex: '; ?Amazon ([^;/]
|
4888
|
+
- regex: '; ?Amazon ([^;/]{1,100}) Build\b'
|
4743
4889
|
device_replacement: '$1'
|
4744
4890
|
brand_replacement: 'Amazon'
|
4745
4891
|
model_replacement: '$1'
|
@@ -4762,22 +4908,22 @@ device_parsers:
|
|
4762
4908
|
|
4763
4909
|
#########
|
4764
4910
|
# Devices from chinese manufacturer(s)
|
4765
|
-
# @note: identified by x-wap-profile http://218.249.47.94/Xianghe
|
4911
|
+
# @note: identified by x-wap-profile http://218.249.47.94/Xianghe/.{0,200}
|
4766
4912
|
#########
|
4767
|
-
- regex: '(sprd)\-([^/]
|
4913
|
+
- regex: '(sprd)\-([^/]{1,50})/'
|
4768
4914
|
device_replacement: '$1 $2'
|
4769
4915
|
brand_replacement: '$1'
|
4770
4916
|
model_replacement: '$2'
|
4771
4917
|
# @ref: http://eshinechina.en.alibaba.com/
|
4772
|
-
- regex: ';
|
4918
|
+
- regex: '; {0,2}(H\d{2}00\+?) Build'
|
4773
4919
|
device_replacement: '$1'
|
4774
4920
|
brand_replacement: 'Hero'
|
4775
4921
|
model_replacement: '$1'
|
4776
|
-
- regex: ';
|
4922
|
+
- regex: '; {0,2}(iphone|iPhone5) Build/'
|
4777
4923
|
device_replacement: 'Xianghe $1'
|
4778
4924
|
brand_replacement: 'Xianghe'
|
4779
4925
|
model_replacement: '$1'
|
4780
|
-
- regex: ';
|
4926
|
+
- regex: '; {0,2}(e\d{4}[a-z]?_?v\d+|v89_[^;/]{1,100})[^;/]{1,30} Build/'
|
4781
4927
|
device_replacement: 'Xianghe $1'
|
4782
4928
|
brand_replacement: 'Xianghe'
|
4783
4929
|
model_replacement: '$1'
|
@@ -4799,7 +4945,7 @@ device_parsers:
|
|
4799
4945
|
#########
|
4800
4946
|
# Alcatel Windows Phones
|
4801
4947
|
#########
|
4802
|
-
- regex: 'Windows Phone [^;]
|
4948
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:ALCATEL)[^;]{0,200}; {0,2}([^;,\)]+)'
|
4803
4949
|
device_replacement: 'Alcatel $1'
|
4804
4950
|
brand_replacement: 'Alcatel'
|
4805
4951
|
model_replacement: '$1'
|
@@ -4807,8 +4953,7 @@ device_parsers:
|
|
4807
4953
|
#########
|
4808
4954
|
# Asus Windows Phones
|
4809
4955
|
#########
|
4810
|
-
|
4811
|
-
- regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:ASUS|Asus)[^;]*; *([^;,\)]+)'
|
4956
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:ASUS|Asus)[^;]{0,200}; {0,2}([^;,\)]+)'
|
4812
4957
|
device_replacement: 'Asus $1'
|
4813
4958
|
brand_replacement: 'Asus'
|
4814
4959
|
model_replacement: '$1'
|
@@ -4816,7 +4961,7 @@ device_parsers:
|
|
4816
4961
|
#########
|
4817
4962
|
# Dell Windows Phones
|
4818
4963
|
#########
|
4819
|
-
- regex: 'Windows Phone [^;]
|
4964
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:DELL|Dell)[^;]{0,200}; {0,2}([^;,\)]+)'
|
4820
4965
|
device_replacement: 'Dell $1'
|
4821
4966
|
brand_replacement: 'Dell'
|
4822
4967
|
model_replacement: '$1'
|
@@ -4824,7 +4969,7 @@ device_parsers:
|
|
4824
4969
|
#########
|
4825
4970
|
# HTC Windows Phones
|
4826
4971
|
#########
|
4827
|
-
- regex: 'Windows Phone [^;]
|
4972
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:HTC|Htc|HTC_blocked[^;]{0,200})[^;]{0,200}; {0,2}(?:HTC|)([^;,\)]+)'
|
4828
4973
|
device_replacement: 'HTC $1'
|
4829
4974
|
brand_replacement: 'HTC'
|
4830
4975
|
model_replacement: '$1'
|
@@ -4832,7 +4977,7 @@ device_parsers:
|
|
4832
4977
|
#########
|
4833
4978
|
# Huawei Windows Phones
|
4834
4979
|
#########
|
4835
|
-
- regex: 'Windows Phone [^;]
|
4980
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:HUAWEI)[^;]{0,200}; {0,2}(?:HUAWEI |)([^;,\)]+)'
|
4836
4981
|
device_replacement: 'Huawei $1'
|
4837
4982
|
brand_replacement: 'Huawei'
|
4838
4983
|
model_replacement: '$1'
|
@@ -4840,7 +4985,7 @@ device_parsers:
|
|
4840
4985
|
#########
|
4841
4986
|
# LG Windows Phones
|
4842
4987
|
#########
|
4843
|
-
- regex: 'Windows Phone [^;]
|
4988
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:LG|Lg)[^;]{0,200}; {0,2}(?:LG[ \-]|)([^;,\)]+)'
|
4844
4989
|
device_replacement: 'LG $1'
|
4845
4990
|
brand_replacement: 'LG'
|
4846
4991
|
model_replacement: '$1'
|
@@ -4848,15 +4993,15 @@ device_parsers:
|
|
4848
4993
|
#########
|
4849
4994
|
# Noka Windows Phones
|
4850
4995
|
#########
|
4851
|
-
- regex: 'Windows Phone [^;]
|
4996
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:rv:11; |)(?:NOKIA|Nokia)[^;]{0,200}; {0,2}(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?|)(\d{3,10}[^;\)]*)'
|
4852
4997
|
device_replacement: 'Lumia $1'
|
4853
4998
|
brand_replacement: 'Nokia'
|
4854
4999
|
model_replacement: 'Lumia $1'
|
4855
|
-
- regex: 'Windows Phone [^;]
|
5000
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]{0,200}; {0,2}(RM-\d{3,})'
|
4856
5001
|
device_replacement: 'Nokia $1'
|
4857
5002
|
brand_replacement: 'Nokia'
|
4858
5003
|
model_replacement: '$1'
|
4859
|
-
- regex: '(?:Windows Phone [^;]
|
5004
|
+
- regex: '(?:Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)]|WPDesktop;) ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]{0,200}; {0,2}(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?|)([^;\)]+)'
|
4860
5005
|
device_replacement: 'Nokia $1'
|
4861
5006
|
brand_replacement: 'Nokia'
|
4862
5007
|
model_replacement: '$1'
|
@@ -4864,7 +5009,7 @@ device_parsers:
|
|
4864
5009
|
#########
|
4865
5010
|
# Microsoft Windows Phones
|
4866
5011
|
#########
|
4867
|
-
- regex: 'Windows Phone [^;]
|
5012
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:Microsoft(?: Corporation|))[^;]{0,200}; {0,2}([^;,\)]+)'
|
4868
5013
|
device_replacement: 'Microsoft $1'
|
4869
5014
|
brand_replacement: 'Microsoft'
|
4870
5015
|
model_replacement: '$1'
|
@@ -4872,7 +5017,7 @@ device_parsers:
|
|
4872
5017
|
#########
|
4873
5018
|
# Samsung Windows Phones
|
4874
5019
|
#########
|
4875
|
-
- regex: 'Windows Phone [^;]
|
5020
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:SAMSUNG)[^;]{0,200}; {0,2}(?:SAMSUNG |)([^;,\.\)]+)'
|
4876
5021
|
device_replacement: 'Samsung $1'
|
4877
5022
|
brand_replacement: 'Samsung'
|
4878
5023
|
model_replacement: '$1'
|
@@ -4880,7 +5025,7 @@ device_parsers:
|
|
4880
5025
|
#########
|
4881
5026
|
# Toshiba Windows Phones
|
4882
5027
|
#########
|
4883
|
-
- regex: 'Windows Phone [^;]
|
5028
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:TOSHIBA|FujitsuToshibaMobileCommun)[^;]{0,200}; {0,2}([^;,\)]+)'
|
4884
5029
|
device_replacement: 'Toshiba $1'
|
4885
5030
|
brand_replacement: 'Toshiba'
|
4886
5031
|
model_replacement: '$1'
|
@@ -4888,7 +5033,7 @@ device_parsers:
|
|
4888
5033
|
#########
|
4889
5034
|
# Generic Windows Phones
|
4890
5035
|
#########
|
4891
|
-
- regex: 'Windows Phone [^;]
|
5036
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)([^;]{1,200}); {0,2}([^;,\)]+)'
|
4892
5037
|
device_replacement: '$1 $2'
|
4893
5038
|
brand_replacement: '$1'
|
4894
5039
|
model_replacement: '$2'
|
@@ -4900,7 +5045,7 @@ device_parsers:
|
|
4900
5045
|
#########
|
4901
5046
|
# Samsung Bada Phones
|
4902
5047
|
#########
|
4903
|
-
- regex: '(?:^|; )SAMSUNG\-([A-Za-z0-9\-]
|
5048
|
+
- regex: '(?:^|; )SAMSUNG\-([A-Za-z0-9\-]{1,50}).{0,200} Bada/'
|
4904
5049
|
device_replacement: 'Samsung $1'
|
4905
5050
|
brand_replacement: 'Samsung'
|
4906
5051
|
model_replacement: '$1'
|
@@ -4908,11 +5053,11 @@ device_parsers:
|
|
4908
5053
|
#########
|
4909
5054
|
# Firefox OS
|
4910
5055
|
#########
|
4911
|
-
- regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]
|
5056
|
+
- regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]{1,100}?)(?:/[^;]{1,200}|); rv:[^\)]{1,200}\) Gecko/[^\/]{1,200} Firefox/'
|
4912
5057
|
device_replacement: 'Alcatel $1 $2 $3'
|
4913
5058
|
brand_replacement: 'Alcatel'
|
4914
5059
|
model_replacement: 'One Touch $3'
|
4915
|
-
- regex: '\(Mobile; (?:ZTE([^;]
|
5060
|
+
- regex: '\(Mobile; (?:ZTE([^;]{1,200})|(OpenC)); rv:[^\)]{1,200}\) Gecko/[^\/]{1,200} Firefox/'
|
4916
5061
|
device_replacement: 'ZTE $1$2'
|
4917
5062
|
brand_replacement: 'ZTE'
|
4918
5063
|
model_replacement: '$1$2'
|
@@ -4920,15 +5065,15 @@ device_parsers:
|
|
4920
5065
|
#########
|
4921
5066
|
# KaiOS
|
4922
5067
|
#########
|
4923
|
-
- regex: '\(Mobile; ALCATEL([A-Za-z0-9\-]+); rv:[^\)]
|
5068
|
+
- regex: '\(Mobile; ALCATEL([A-Za-z0-9\-]+); rv:[^\)]{1,200}\) Gecko/[^\/]{1,200} Firefox/[^\/]{1,200} KaiOS/'
|
4924
5069
|
device_replacement: 'Alcatel $1'
|
4925
5070
|
brand_replacement: 'Alcatel'
|
4926
5071
|
model_replacement: '$1'
|
4927
|
-
- regex: '\(Mobile; LYF\/([A-Za-z0-9\-]
|
5072
|
+
- regex: '\(Mobile; LYF\/([A-Za-z0-9\-]{1,100})\/.{0,100};.{0,100}rv:[^\)]{1,100}\) Gecko/[^\/]{1,100} Firefox/[^\/]{1,100} KAIOS/'
|
4928
5073
|
device_replacement: 'LYF $1'
|
4929
5074
|
brand_replacement: 'LYF'
|
4930
5075
|
model_replacement: '$1'
|
4931
|
-
- regex: '\(Mobile; Nokia_([A-Za-z0-9\-]
|
5076
|
+
- regex: '\(Mobile; Nokia_([A-Za-z0-9\-]{1,100})_.{1,100}; rv:[^\)]{1,100}\) Gecko/[^\/]{1,100} Firefox/[^\/]{1,100} KAIOS/'
|
4932
5077
|
device_replacement: 'Nokia $1'
|
4933
5078
|
brand_replacement: 'Nokia'
|
4934
5079
|
model_replacement: '$1'
|
@@ -4941,7 +5086,7 @@ device_parsers:
|
|
4941
5086
|
device_replacement: 'Nokia $1'
|
4942
5087
|
brand_replacement: 'Nokia'
|
4943
5088
|
model_replacement: '$1$2'
|
4944
|
-
- regex: '(?:NOKIA|Nokia)(?:\-|
|
5089
|
+
- regex: '(?:NOKIA|Nokia)(?:\-| {0,2})(?:([A-Za-z0-9]+)\-[0-9a-f]{32}|([A-Za-z0-9\-]+)(?:UCBrowser)|([A-Za-z0-9\-]+))'
|
4945
5090
|
device_replacement: 'Nokia $1$2$3'
|
4946
5091
|
brand_replacement: 'Nokia'
|
4947
5092
|
model_replacement: '$1$2$3'
|
@@ -4950,12 +5095,12 @@ device_parsers:
|
|
4950
5095
|
brand_replacement: 'Nokia'
|
4951
5096
|
model_replacement: 'Lumia $1'
|
4952
5097
|
# UCWEB Browser on Symbian
|
4953
|
-
- regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]
|
5098
|
+
- regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]{1,100}?)\)'
|
4954
5099
|
device_replacement: '$1 $2'
|
4955
5100
|
brand_replacement: '$1'
|
4956
5101
|
model_replacement: '$2'
|
4957
5102
|
# Nokia Symbian
|
4958
|
-
- regex: '\(Symbian(?:/3|); U; ([^;]
|
5103
|
+
- regex: '\(Symbian(?:/3|); U; ([^;]{1,200});'
|
4959
5104
|
device_replacement: 'Nokia $1'
|
4960
5105
|
brand_replacement: 'Nokia'
|
4961
5106
|
model_replacement: '$1'
|
@@ -4968,7 +5113,7 @@ device_parsers:
|
|
4968
5113
|
device_replacement: 'BlackBerry $1'
|
4969
5114
|
brand_replacement: 'BlackBerry'
|
4970
5115
|
model_replacement: '$1'
|
4971
|
-
- regex: 'Play[Bb]ook
|
5116
|
+
- regex: 'Play[Bb]ook.{1,200}RIM Tablet OS'
|
4972
5117
|
device_replacement: 'BlackBerry Playbook'
|
4973
5118
|
brand_replacement: 'BlackBerry'
|
4974
5119
|
model_replacement: 'Playbook'
|
@@ -5000,7 +5145,7 @@ device_parsers:
|
|
5000
5145
|
device_replacement: 'Palm Treo $1'
|
5001
5146
|
brand_replacement: 'Palm'
|
5002
5147
|
model_replacement: 'Treo $1'
|
5003
|
-
- regex: 'webOS
|
5148
|
+
- regex: 'webOS.{0,200}(P160U(?:NA|))/(\d+).(\d+)'
|
5004
5149
|
device_replacement: 'HP Veer'
|
5005
5150
|
brand_replacement: 'HP'
|
5006
5151
|
model_replacement: 'Veer'
|
@@ -5008,7 +5153,7 @@ device_parsers:
|
|
5008
5153
|
device_replacement: 'HP TouchPad'
|
5009
5154
|
brand_replacement: 'HP'
|
5010
5155
|
model_replacement: 'TouchPad'
|
5011
|
-
- regex: 'HPiPAQ([A-Za-z0-9]
|
5156
|
+
- regex: 'HPiPAQ([A-Za-z0-9]{1,20})/\d+\.\d+'
|
5012
5157
|
device_replacement: 'HP iPAQ $1'
|
5013
5158
|
brand_replacement: 'HP'
|
5014
5159
|
model_replacement: 'iPAQ $1'
|
@@ -5076,18 +5221,18 @@ device_parsers:
|
|
5076
5221
|
brand_replacement: 'Apple'
|
5077
5222
|
model_replacement: 'iPhone'
|
5078
5223
|
# @note: desktop applications show device info
|
5079
|
-
- regex: 'CFNetwork
|
5224
|
+
- regex: 'CFNetwork/.{0,100} Darwin/\d.{0,100}\(((?:Mac|iMac|PowerMac|PowerBook)[^\d]*)(\d+)(?:,|%2C)(\d+)'
|
5080
5225
|
device_replacement: '$1$2,$3'
|
5081
5226
|
brand_replacement: 'Apple'
|
5082
5227
|
model_replacement: '$1$2,$3'
|
5083
5228
|
# @note: newer desktop applications don't show device info
|
5084
5229
|
# This is here so as to not have them recorded as iOS-Device
|
5085
|
-
- regex: 'CFNetwork
|
5230
|
+
- regex: 'CFNetwork/.{0,100} Darwin/\d+\.\d+\.\d+ \(x86_64\)'
|
5086
5231
|
device_replacement: 'Mac'
|
5087
5232
|
brand_replacement: 'Apple'
|
5088
5233
|
model_replacement: 'Mac'
|
5089
5234
|
# @note: iOS applications do not show device info
|
5090
|
-
- regex: 'CFNetwork
|
5235
|
+
- regex: 'CFNetwork/.{0,100} Darwin/\d'
|
5091
5236
|
device_replacement: 'iOS-Device'
|
5092
5237
|
brand_replacement: 'Apple'
|
5093
5238
|
model_replacement: 'iOS-Device'
|
@@ -5131,7 +5276,7 @@ device_parsers:
|
|
5131
5276
|
device_replacement: 'Asus $1'
|
5132
5277
|
brand_replacement: 'Asus'
|
5133
5278
|
model_replacement: '$1'
|
5134
|
-
- regex: '(?:asus
|
5279
|
+
- regex: '(?:asus.{0,200}?ASUS|Asus|ASUS|asus)[\- ;]*((?:Transformer (?:Pad|Prime) |Transformer |Padfone |Nexus[ _]|)[A-Za-z0-9]+)'
|
5135
5280
|
device_replacement: 'Asus $1'
|
5136
5281
|
brand_replacement: 'Asus'
|
5137
5282
|
model_replacement: '$1'
|
@@ -5164,11 +5309,11 @@ device_parsers:
|
|
5164
5309
|
device_replacement: 'DoCoMo $1'
|
5165
5310
|
brand_replacement: 'DoCoMo'
|
5166
5311
|
model_replacement: '$1'
|
5167
|
-
- regex: '([A-Za-z0-9]
|
5312
|
+
- regex: '^.{0,50}?([A-Za-z0-9]{1,30})_W;FOMA'
|
5168
5313
|
device_replacement: 'DoCoMo $1'
|
5169
5314
|
brand_replacement: 'DoCoMo'
|
5170
5315
|
model_replacement: '$1'
|
5171
|
-
- regex: '([A-Za-z0-9]
|
5316
|
+
- regex: '^.{0,50}?([A-Za-z0-9]{1,30});FOMA'
|
5172
5317
|
device_replacement: 'DoCoMo $1'
|
5173
5318
|
brand_replacement: 'DoCoMo'
|
5174
5319
|
model_replacement: '$1'
|
@@ -5176,7 +5321,7 @@ device_parsers:
|
|
5176
5321
|
##########
|
5177
5322
|
# htc
|
5178
5323
|
##########
|
5179
|
-
- regex: '\b(?:HTC/|HTC/[a-z0-9]
|
5324
|
+
- regex: '\b(?:HTC/|HTC/[a-z0-9]{1,20}/|)HTC[ _\-;]? {0,2}(.{0,200}?)(?:-?Mozilla|fingerPrint|[;/\(\)]|$)'
|
5180
5325
|
device_replacement: 'HTC $1'
|
5181
5326
|
brand_replacement: 'HTC'
|
5182
5327
|
model_replacement: '$1'
|
@@ -5237,18 +5382,18 @@ device_parsers:
|
|
5237
5382
|
device_replacement: '$1'
|
5238
5383
|
brand_replacement: '$2'
|
5239
5384
|
model_replacement: '$3'
|
5240
|
-
- regex: '(HbbTV)/1\.1\.1
|
5385
|
+
- regex: '(HbbTV)/1\.1\.1.{0,200}CE-HTML/1\.\d;(Vendor/|)(THOM[^;]{0,200}?)[;\s].{0,30}(LF[^;]{1,200});?'
|
5241
5386
|
device_replacement: '$1'
|
5242
5387
|
brand_replacement: 'Thomson'
|
5243
5388
|
model_replacement: '$4'
|
5244
|
-
- regex: '(HbbTV)(?:/1\.1\.1|) ?(?: \(;;;;;\)|);
|
5389
|
+
- regex: '(HbbTV)(?:/1\.1\.1|) ?(?: \(;;;;;\)|); {0,2}CE-HTML(?:/1\.\d|); {0,2}([^ ]{1,30}) ([^;]{1,200});'
|
5245
5390
|
device_replacement: '$1'
|
5246
5391
|
brand_replacement: '$2'
|
5247
5392
|
model_replacement: '$3'
|
5248
5393
|
- regex: '(HbbTV)/1\.1\.1 \(;;;;;\) Maple_2011'
|
5249
5394
|
device_replacement: '$1'
|
5250
5395
|
brand_replacement: 'Samsung'
|
5251
|
-
- regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]{0,30}; ?(?:CUS:([^;]
|
5396
|
+
- regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]{0,30}; ?(?:CUS:([^;]{0,200})|([^;]{1,200})) ?; ?([^;]{0,30})'
|
5252
5397
|
device_replacement: '$1'
|
5253
5398
|
brand_replacement: '$2$3'
|
5254
5399
|
model_replacement: '$4'
|
@@ -5258,7 +5403,7 @@ device_parsers:
|
|
5258
5403
|
##########
|
5259
5404
|
# LGE NetCast TV
|
5260
5405
|
##########
|
5261
|
-
- regex: 'LGE; (?:Media\/|)([^;]
|
5406
|
+
- regex: 'LGE; (?:Media\/|)([^;]{0,200});[^;]{0,200};[^;]{0,200};?\); "?LG NetCast(\.TV|\.Media|)-\d+'
|
5262
5407
|
device_replacement: 'NetCast$2'
|
5263
5408
|
brand_replacement: 'LG'
|
5264
5409
|
model_replacement: '$1'
|
@@ -5266,11 +5411,11 @@ device_parsers:
|
|
5266
5411
|
##########
|
5267
5412
|
# InettvBrowser
|
5268
5413
|
##########
|
5269
|
-
- regex: 'InettvBrowser/[0-9]
|
5414
|
+
- regex: 'InettvBrowser/[0-9]{1,30}\.[0-9A-Z]{1,30} \([^;]{0,200};(Sony)([^;]{0,200});[^;]{0,200};[^\)]{0,10}\)'
|
5270
5415
|
device_replacement: 'Inettv'
|
5271
5416
|
brand_replacement: '$1'
|
5272
5417
|
model_replacement: '$2'
|
5273
|
-
- regex: 'InettvBrowser/[0-9]
|
5418
|
+
- regex: 'InettvBrowser/[0-9]{1,30}\.[0-9A-Z]{1,30} \([^;]{0,200};([^;]{0,200});[^;]{0,200};[^\)]{0,10}\)'
|
5274
5419
|
device_replacement: 'Inettv'
|
5275
5420
|
brand_replacement: 'Generic_Inettv'
|
5276
5421
|
model_replacement: '$1'
|
@@ -5307,7 +5452,7 @@ device_parsers:
|
|
5307
5452
|
device_replacement: 'Microsoft $1'
|
5308
5453
|
brand_replacement: 'Microsoft'
|
5309
5454
|
model_replacement: '$1'
|
5310
|
-
- regex: '(?:MSIE|XBMC)
|
5455
|
+
- regex: '(?:MSIE|XBMC).{0,200}\b(Xbox)\b'
|
5311
5456
|
device_replacement: '$1'
|
5312
5457
|
brand_replacement: 'Microsoft'
|
5313
5458
|
model_replacement: '$1'
|
@@ -5368,12 +5513,12 @@ device_parsers:
|
|
5368
5513
|
# Samsung
|
5369
5514
|
##########
|
5370
5515
|
# Samsung Smart-TV
|
5371
|
-
- regex: '(SMART-TV);
|
5516
|
+
- regex: '(SMART-TV); .{0,200} Tizen '
|
5372
5517
|
device_replacement: 'Samsung $1'
|
5373
5518
|
brand_replacement: 'Samsung'
|
5374
5519
|
model_replacement: '$1'
|
5375
5520
|
# Samsung Symbian Devices
|
5376
|
-
- regex: 'SymbianOS/9\.\d
|
5521
|
+
- regex: 'SymbianOS/9\.\d.{0,200} Samsung[/\-]([A-Za-z0-9 \-]+)'
|
5377
5522
|
device_replacement: 'Samsung $1'
|
5378
5523
|
brand_replacement: 'Samsung'
|
5379
5524
|
model_replacement: '$1'
|
@@ -5381,7 +5526,7 @@ device_parsers:
|
|
5381
5526
|
device_replacement: '$1 $2$3'
|
5382
5527
|
brand_replacement: '$1'
|
5383
5528
|
model_replacement: '$2-$3'
|
5384
|
-
- regex: 'SAMSUNG-ANDROID-MMS/([^;/]
|
5529
|
+
- regex: 'SAMSUNG-ANDROID-MMS/([^;/]{1,100})'
|
5385
5530
|
device_replacement: '$1'
|
5386
5531
|
brand_replacement: 'Samsung'
|
5387
5532
|
model_replacement: '$1'
|
@@ -5428,7 +5573,7 @@ device_parsers:
|
|
5428
5573
|
##########
|
5429
5574
|
# Sony
|
5430
5575
|
##########
|
5431
|
-
- regex: 'Android [^;]
|
5576
|
+
- regex: 'Android [^;]{1,200}; ([^ ]+) (Sony)/'
|
5432
5577
|
device_replacement: '$2 $1'
|
5433
5578
|
brand_replacement: '$2'
|
5434
5579
|
model_replacement: '$1'
|
@@ -5462,33 +5607,33 @@ device_parsers:
|
|
5462
5607
|
#########
|
5463
5608
|
# Android General Device Matching (far from perfect)
|
5464
5609
|
#########
|
5465
|
-
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; WOWMobile (
|
5610
|
+
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; WOWMobile (.{1,200})( Build[/ ]|\))'
|
5466
5611
|
brand_replacement: 'Generic_Android'
|
5467
5612
|
model_replacement: '$1'
|
5468
|
-
- regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{0,2}
|
5613
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{0,2} {0,2}; {0,2}(.{1,200}?)( Build[/ ]|\))'
|
5469
5614
|
brand_replacement: 'Generic_Android'
|
5470
5615
|
model_replacement: '$1'
|
5471
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
5616
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,2}[A-Za-z]{2}[_\-][A-Za-z]{0,2}\-? {0,2}; {0,2}(.{1,200}?)( Build[/ ]|\))'
|
5472
5617
|
brand_replacement: 'Generic_Android'
|
5473
5618
|
model_replacement: '$1'
|
5474
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
5619
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,2}[A-Za-z]{0,2}\- {0,2}; {0,2}(.{1,200}?)( Build[/ ]|\))'
|
5475
5620
|
brand_replacement: 'Generic_Android'
|
5476
5621
|
model_replacement: '$1'
|
5477
5622
|
# No build info at all - "Build" follows locale immediately
|
5478
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
5623
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,2}[a-z]{0,2}[_\-]?[A-Za-z]{0,2};?( Build[/ ]|\))'
|
5479
5624
|
device_replacement: 'Generic Smartphone'
|
5480
5625
|
brand_replacement: 'Generic'
|
5481
5626
|
model_replacement: 'Smartphone'
|
5482
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
5627
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,3}\-?[A-Za-z]{2}; {0,2}(.{1,50}?)( Build[/ ]|\))'
|
5483
5628
|
brand_replacement: 'Generic_Android'
|
5484
5629
|
model_replacement: '$1'
|
5485
|
-
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]
|
5630
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]{1,100}?)(?: Build|\) AppleWebKit).{1,200}? Mobile Safari'
|
5486
5631
|
brand_replacement: 'Generic_Android'
|
5487
5632
|
model_replacement: '$1'
|
5488
|
-
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]
|
5633
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]{1,100}?)(?: Build|\) AppleWebKit).{1,200}? Safari'
|
5489
5634
|
brand_replacement: 'Generic_Android_Tablet'
|
5490
5635
|
model_replacement: '$1'
|
5491
|
-
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]
|
5636
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]{1,100}?)(?: Build|\))'
|
5492
5637
|
brand_replacement: 'Generic_Android'
|
5493
5638
|
model_replacement: '$1'
|
5494
5639
|
|
@@ -5513,7 +5658,7 @@ device_parsers:
|
|
5513
5658
|
##########
|
5514
5659
|
# Generic Tablet
|
5515
5660
|
##########
|
5516
|
-
- regex: '(Android 3\.\d|Opera Tablet|Tablet;
|
5661
|
+
- regex: '(Android 3\.\d|Opera Tablet|Tablet; .{1,100}Firefox/|Android.{0,100}(?:Tab|Pad))'
|
5517
5662
|
regex_flag: 'i'
|
5518
5663
|
device_replacement: 'Generic Tablet'
|
5519
5664
|
brand_replacement: 'Generic'
|
@@ -5522,7 +5667,7 @@ device_parsers:
|
|
5522
5667
|
##########
|
5523
5668
|
# Generic Smart Phone
|
5524
5669
|
##########
|
5525
|
-
- regex: '(Symbian|\bS60(Version|V\d)|\bS60\b|\((Series 60|Windows Mobile|Palm OS|Bada); Opera Mini|Windows CE|Opera Mobi|BREW|Brew|Mobile;
|
5670
|
+
- regex: '(Symbian|\bS60(Version|V\d)|\bS60\b|\((Series 60|Windows Mobile|Palm OS|Bada); Opera Mini|Windows CE|Opera Mobi|BREW|Brew|Mobile; .{1,200}Firefox/|iPhone OS|Android|MobileSafari|Windows {0,2}Phone|\(webOS/|PalmOS)'
|
5526
5671
|
device_replacement: 'Generic Smartphone'
|
5527
5672
|
brand_replacement: 'Generic'
|
5528
5673
|
model_replacement: 'Smartphone'
|
@@ -5535,7 +5680,7 @@ device_parsers:
|
|
5535
5680
|
##########
|
5536
5681
|
# Spiders (this is a hack...)
|
5537
5682
|
##########
|
5538
|
-
- regex: '(bot|BUbiNG|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Daum|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google
|
5683
|
+
- regex: '^.{0,100}(bot|BUbiNG|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Daum|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.{0,200}/\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|StatusCake|WhatsApp|masscan|Google Web Preview|Qwantify|Yeti|OgScrper)'
|
5539
5684
|
regex_flag: 'i'
|
5540
5685
|
device_replacement: 'Spider'
|
5541
5686
|
brand_replacement: 'Spider'
|