user_agent_parser 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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'
|