user_agent_parser 2.7.0 → 2.10.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 +787 -637
- 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,24 +128,24 @@ 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
|
|
138
138
|
- regex: '(DAVdroid)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
|
139
139
|
|
|
140
140
|
# Downloader ...
|
|
141
|
-
- regex: '(Google-HTTP-Java-Client|Apache-HttpClient|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
|
141
|
+
- regex: '(Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
|
142
142
|
|
|
143
143
|
# Pinterestbot
|
|
144
144
|
- regex: '(Pinterest(?:bot|))/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)[;\s(]+\+https://www.pinterest.com/bot.html'
|
|
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,20 @@ 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
|
+
|
|
1008
|
+
# SerenityOS (https://serenityos.org)
|
|
1009
|
+
# https://github.com/SerenityOS/serenity/blob/2e1bbcb0faeae92d7595b8e0b022a8cdcecca07e/Userland/Libraries/LibWeb/Loader/ResourceLoader.h#L27
|
|
1010
|
+
- regex: 'SerenityOS'
|
|
1011
|
+
family_replacement: 'SerenityOS Browser'
|
|
1012
|
+
|
|
943
1013
|
os_parsers:
|
|
944
1014
|
##########
|
|
945
1015
|
# HbbTV vendors
|
|
@@ -955,7 +1025,7 @@ os_parsers:
|
|
|
955
1025
|
# Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11
|
|
956
1026
|
# Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL40HX751; PKG1.902EUA; 2012;);; en) Presto/2.10.250 Version/11.60
|
|
957
1027
|
# 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)
|
|
1028
|
+
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(; (Sony);.{0,200};.{0,200}; ([0-9]{4});\)'
|
|
959
1029
|
|
|
960
1030
|
|
|
961
1031
|
# LG is consistent too, but we need to add manually the year model
|
|
@@ -975,9 +1045,9 @@ os_parsers:
|
|
|
975
1045
|
os_replacement: 'Samsung'
|
|
976
1046
|
os_v1_replacement: '2011'
|
|
977
1047
|
# manage the two models of 2013
|
|
978
|
-
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4})
|
|
1048
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.{0,200}FXPDEUC'
|
|
979
1049
|
os_v2_replacement: 'UE40F7000'
|
|
980
|
-
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4})
|
|
1050
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.{0,200}MST12DEUC'
|
|
981
1051
|
os_v2_replacement: 'UE32F4500'
|
|
982
1052
|
# generic Samsung (works starting in 2012)
|
|
983
1053
|
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});'
|
|
@@ -985,26 +1055,26 @@ os_parsers:
|
|
|
985
1055
|
# Philips : not found any other way than a manual mapping
|
|
986
1056
|
# 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
1057
|
# 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)
|
|
1058
|
+
- regex: 'HbbTV/1\.1\.1 \(; (Philips);.{0,200}NETTV/4'
|
|
989
1059
|
os_v1_replacement: '2013'
|
|
990
|
-
- regex: 'HbbTV/1\.1\.1 \(; (Philips)
|
|
1060
|
+
- regex: 'HbbTV/1\.1\.1 \(; (Philips);.{0,200}NETTV/3'
|
|
991
1061
|
os_v1_replacement: '2012'
|
|
992
|
-
- regex: 'HbbTV/1\.1\.1 \(; (Philips)
|
|
1062
|
+
- regex: 'HbbTV/1\.1\.1 \(; (Philips);.{0,200}NETTV/2'
|
|
993
1063
|
os_v1_replacement: '2011'
|
|
994
1064
|
|
|
995
1065
|
# the HbbTV emulator developers use HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20
|
|
996
|
-
- regex: 'HbbTV/\d+\.\d+\.\d
|
|
1066
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+.{0,100}(firetv)-firefox-plugin (\d+).(\d+).(\d+)'
|
|
997
1067
|
os_replacement: 'FireHbbTV'
|
|
998
1068
|
|
|
999
1069
|
# 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+ \(
|
|
1070
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(.{0,30}; ?([a-zA-Z]+) ?;.{0,30}(201[1-9]).{0,30}\)'
|
|
1001
1071
|
|
|
1002
1072
|
# aspiegel.com spider (owned by Huawei)
|
|
1003
1073
|
- regex: 'AspiegelBot'
|
|
1004
1074
|
os_replacement: 'Other'
|
|
1005
1075
|
|
|
1006
1076
|
##########
|
|
1007
|
-
# @note: Windows Phone needs to come before Windows NT 6.1
|
|
1077
|
+
# @note: Windows Phone needs to come before Windows NT 6.1 {0,2}and* before Android to catch cases such as:
|
|
1008
1078
|
# 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
1079
|
# 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
1080
|
# 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 +1083,12 @@ os_parsers:
|
|
|
1013
1083
|
|
|
1014
1084
|
- regex: '(Windows Phone) (?:OS[ /])?(\d+)\.(\d+)'
|
|
1015
1085
|
|
|
1016
|
-
# Again a MS-special one: iPhone
|
|
1017
|
-
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|)
|
|
1086
|
+
# Again a MS-special one: iPhone.{0,200}Outlook-iOS-Android/x.x is erroneously detected as Android
|
|
1087
|
+
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|).{0,100}Outlook-iOS-Android'
|
|
1018
1088
|
os_replacement: 'iOS'
|
|
1019
1089
|
|
|
1020
1090
|
# Special case for old ArcGIS Mobile products
|
|
1021
|
-
- regex: 'ArcGIS\.?(iOS|Android)-\d+\.\d+(?:\.\d+|)(?:[^\/]
|
|
1091
|
+
- regex: 'ArcGIS\.?(iOS|Android)-\d+\.\d+(?:\.\d+|)(?:[^\/]{1,50}|)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
|
|
1022
1092
|
|
|
1023
1093
|
# Special case for new ArcGIS Mobile products
|
|
1024
1094
|
- regex: 'ArcGISRuntime-(?:Android|iOS)\/\d+\.\d+(?:\.\d+|) \((Android|iOS) (\d+)(?:\.(\d+)(?:\.(\d+)|)|);'
|
|
@@ -1052,14 +1122,14 @@ os_parsers:
|
|
|
1052
1122
|
- regex: '(Android) (\d+);'
|
|
1053
1123
|
|
|
1054
1124
|
# UCWEB
|
|
1055
|
-
- regex: '^UCWEB
|
|
1125
|
+
- regex: '^UCWEB.{0,200}; (Adr) (\d+)\.(\d+)(?:[.\-]([a-z0-9]{1,100})|);'
|
|
1056
1126
|
os_replacement: 'Android'
|
|
1057
|
-
- regex: '^UCWEB
|
|
1127
|
+
- regex: '^UCWEB.{0,200}; (iPad|iPh|iPd) OS (\d+)_(\d+)(?:_(\d+)|);'
|
|
1058
1128
|
os_replacement: 'iOS'
|
|
1059
|
-
- regex: '^UCWEB
|
|
1129
|
+
- regex: '^UCWEB.{0,200}; (wds) (\d+)\.(\d+)(?:\.(\d+)|);'
|
|
1060
1130
|
os_replacement: 'Windows Phone'
|
|
1061
1131
|
# JUC
|
|
1062
|
-
- regex: '^(JUC)
|
|
1132
|
+
- regex: '^(JUC).{0,200}; ?U; ?(?:Android|)(\d+)\.(\d+)(?:[\.\-]([a-z0-9]{1,100})|)'
|
|
1063
1133
|
os_replacement: 'Android'
|
|
1064
1134
|
|
|
1065
1135
|
# Salesforce
|
|
@@ -1077,7 +1147,7 @@ os_parsers:
|
|
|
1077
1147
|
# properly identify as Chrome OS
|
|
1078
1148
|
#
|
|
1079
1149
|
# 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+)
|
|
1150
|
+
- regex: '(x86_64|aarch64)\ (\d+)\.(\d+)\.(\d+).{0,100}Chrome.{0,100}(?:CitrixChromeApp)$'
|
|
1081
1151
|
os_replacement: 'Chrome OS'
|
|
1082
1152
|
|
|
1083
1153
|
##########
|
|
@@ -1169,7 +1239,7 @@ os_parsers:
|
|
|
1169
1239
|
os_v1_replacement: '95'
|
|
1170
1240
|
|
|
1171
1241
|
# Box apps (Drive, Sync, Notes) on Windows https://www.box.com/resources/downloads
|
|
1172
|
-
- regex: '^Box
|
|
1242
|
+
- regex: '^Box.{0,200}Windows/([\d.]+);'
|
|
1173
1243
|
os_replacement: 'Windows'
|
|
1174
1244
|
os_v1_replacement: '$1'
|
|
1175
1245
|
|
|
@@ -1186,33 +1256,33 @@ os_parsers:
|
|
|
1186
1256
|
##########
|
|
1187
1257
|
- regex: '((?:Mac[ +]?|; )OS[ +]X)[\s+/](?:(\d+)[_.](\d+)(?:[_.](\d+)|)|Mach-O)'
|
|
1188
1258
|
os_replacement: 'Mac OS X'
|
|
1189
|
-
- regex: '
|
|
1259
|
+
- regex: 'Mac OS X\s.{1,50}\s(\d+).(\d+).(\d+)'
|
|
1190
1260
|
os_replacement: 'Mac OS X'
|
|
1191
1261
|
os_v1_replacement: '$1'
|
|
1192
1262
|
os_v2_replacement: '$2'
|
|
1193
1263
|
os_v3_replacement: '$3'
|
|
1194
1264
|
# Leopard
|
|
1195
|
-
- regex: ' (Dar)(win)/(9).(\d+)
|
|
1265
|
+
- regex: ' (Dar)(win)/(9).(\d+).{0,100}\((?:i386|x86_64|Power Macintosh)\)'
|
|
1196
1266
|
os_replacement: 'Mac OS X'
|
|
1197
1267
|
os_v1_replacement: '10'
|
|
1198
1268
|
os_v2_replacement: '5'
|
|
1199
1269
|
# Snow Leopard
|
|
1200
|
-
- regex: ' (Dar)(win)/(10).(\d+)
|
|
1270
|
+
- regex: ' (Dar)(win)/(10).(\d+).{0,100}\((?:i386|x86_64)\)'
|
|
1201
1271
|
os_replacement: 'Mac OS X'
|
|
1202
1272
|
os_v1_replacement: '10'
|
|
1203
1273
|
os_v2_replacement: '6'
|
|
1204
1274
|
# Lion
|
|
1205
|
-
- regex: ' (Dar)(win)/(11).(\d+)
|
|
1275
|
+
- regex: ' (Dar)(win)/(11).(\d+).{0,100}\((?:i386|x86_64)\)'
|
|
1206
1276
|
os_replacement: 'Mac OS X'
|
|
1207
1277
|
os_v1_replacement: '10'
|
|
1208
1278
|
os_v2_replacement: '7'
|
|
1209
1279
|
# Mountain Lion
|
|
1210
|
-
- regex: ' (Dar)(win)/(12).(\d+)
|
|
1280
|
+
- regex: ' (Dar)(win)/(12).(\d+).{0,100}\((?:i386|x86_64)\)'
|
|
1211
1281
|
os_replacement: 'Mac OS X'
|
|
1212
1282
|
os_v1_replacement: '10'
|
|
1213
1283
|
os_v2_replacement: '8'
|
|
1214
1284
|
# Mavericks
|
|
1215
|
-
- regex: ' (Dar)(win)/(13).(\d+)
|
|
1285
|
+
- regex: ' (Dar)(win)/(13).(\d+).{0,100}\((?:i386|x86_64)\)'
|
|
1216
1286
|
os_replacement: 'Mac OS X'
|
|
1217
1287
|
os_v1_replacement: '10'
|
|
1218
1288
|
os_v2_replacement: '9'
|
|
@@ -1229,7 +1299,7 @@ os_parsers:
|
|
|
1229
1299
|
- regex: '(?:PPC|Intel) (Mac OS X)'
|
|
1230
1300
|
|
|
1231
1301
|
# Box Drive and Box Sync on Mac OS X use OSX version numbers, not Darwin
|
|
1232
|
-
- regex: '^Box
|
|
1302
|
+
- regex: '^Box.{0,200};(Darwin)/(10)\.(1\d)(?:\.(\d+)|)'
|
|
1233
1303
|
os_replacement: 'Mac OS X'
|
|
1234
1304
|
|
|
1235
1305
|
##########
|
|
@@ -1240,7 +1310,7 @@ os_parsers:
|
|
|
1240
1310
|
- regex: '(Apple\s?TV)(?:/(\d+)\.(\d+)|)'
|
|
1241
1311
|
os_replacement: 'ATV OS X'
|
|
1242
1312
|
|
|
1243
|
-
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|)'
|
|
1313
|
+
- regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|)'
|
|
1244
1314
|
os_replacement: 'iOS'
|
|
1245
1315
|
|
|
1246
1316
|
# remaining cases are mostly only opera uas, so catch opera as to not catch iphone spoofs
|
|
@@ -1248,15 +1318,15 @@ os_parsers:
|
|
|
1248
1318
|
os_replacement: 'iOS'
|
|
1249
1319
|
|
|
1250
1320
|
# few more stragglers
|
|
1251
|
-
- regex: '(iPhone|iPad|iPod)
|
|
1321
|
+
- regex: '(iPhone|iPad|iPod).{0,100}Mac OS X.{0,100}Version/(\d+)\.(\d+)'
|
|
1252
1322
|
os_replacement: 'iOS'
|
|
1253
1323
|
|
|
1254
1324
|
# CFNetwork/Darwin - The specific CFNetwork or Darwin version determines
|
|
1255
1325
|
# whether the os maps to Mac OS, or iOS, or just Darwin.
|
|
1256
1326
|
# See: http://user-agents.me/cfnetwork-version-list
|
|
1257
|
-
- regex: '(CFNetwork)/(5)48\.0\.3
|
|
1327
|
+
- regex: '(CFNetwork)/(5)48\.0\.3.{0,100} Darwin/11\.0\.0'
|
|
1258
1328
|
os_replacement: 'iOS'
|
|
1259
|
-
- regex: '(CFNetwork)/(5)48\.(0)\.4
|
|
1329
|
+
- regex: '(CFNetwork)/(5)48\.(0)\.4.{0,100} Darwin/(1)1\.0\.0'
|
|
1260
1330
|
os_replacement: 'iOS'
|
|
1261
1331
|
- regex: '(CFNetwork)/(5)48\.(1)\.4'
|
|
1262
1332
|
os_replacement: 'iOS'
|
|
@@ -1291,17 +1361,17 @@ os_parsers:
|
|
|
1291
1361
|
os_replacement: 'Mac OS X'
|
|
1292
1362
|
os_v1_replacement: '10'
|
|
1293
1363
|
os_v2_replacement: '11'
|
|
1294
|
-
- regex: 'CFNetwork/7
|
|
1364
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/15\.4\.\d+'
|
|
1295
1365
|
os_replacement: 'iOS'
|
|
1296
1366
|
os_v1_replacement: '9'
|
|
1297
1367
|
os_v2_replacement: '3'
|
|
1298
1368
|
os_v3_replacement: '1'
|
|
1299
|
-
- regex: 'CFNetwork/7
|
|
1369
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/15\.5\.\d+'
|
|
1300
1370
|
os_replacement: 'iOS'
|
|
1301
1371
|
os_v1_replacement: '9'
|
|
1302
1372
|
os_v2_replacement: '3'
|
|
1303
1373
|
os_v3_replacement: '2'
|
|
1304
|
-
- regex: 'CFNetwork/7
|
|
1374
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/15\.6\.\d+'
|
|
1305
1375
|
os_replacement: 'iOS'
|
|
1306
1376
|
os_v1_replacement: '9'
|
|
1307
1377
|
os_v2_replacement: '3'
|
|
@@ -1322,15 +1392,15 @@ os_parsers:
|
|
|
1322
1392
|
# CFNetwork macOS Apps (must be before CFNetwork iOS Apps
|
|
1323
1393
|
# @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
|
|
1324
1394
|
##########
|
|
1325
|
-
- regex: 'CFNetwork
|
|
1395
|
+
- regex: 'CFNetwork/.{0,100} Darwin/17\.\d+.{0,100}\(x86_64\)'
|
|
1326
1396
|
os_replacement: 'Mac OS X'
|
|
1327
1397
|
os_v1_replacement: '10'
|
|
1328
1398
|
os_v2_replacement: '13'
|
|
1329
|
-
- regex: 'CFNetwork
|
|
1399
|
+
- regex: 'CFNetwork/.{0,100} Darwin/16\.\d+.{0,100}\(x86_64\)'
|
|
1330
1400
|
os_replacement: 'Mac OS X'
|
|
1331
1401
|
os_v1_replacement: '10'
|
|
1332
1402
|
os_v2_replacement: '12'
|
|
1333
|
-
- regex: 'CFNetwork/8
|
|
1403
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/15\.\d+.{0,100}\(x86_64\)'
|
|
1334
1404
|
os_replacement: 'Mac OS X'
|
|
1335
1405
|
os_v1_replacement: '10'
|
|
1336
1406
|
os_v2_replacement: '11'
|
|
@@ -1338,87 +1408,146 @@ os_parsers:
|
|
|
1338
1408
|
# CFNetwork iOS Apps
|
|
1339
1409
|
# @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
|
|
1340
1410
|
##########
|
|
1341
|
-
- regex: 'CFNetwork
|
|
1411
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(9)\.\d+'
|
|
1342
1412
|
os_replacement: 'iOS'
|
|
1343
1413
|
os_v1_replacement: '1'
|
|
1344
|
-
- regex: 'CFNetwork
|
|
1414
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(10)\.\d+'
|
|
1345
1415
|
os_replacement: 'iOS'
|
|
1346
1416
|
os_v1_replacement: '4'
|
|
1347
|
-
- regex: 'CFNetwork
|
|
1417
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(11)\.\d+'
|
|
1348
1418
|
os_replacement: 'iOS'
|
|
1349
1419
|
os_v1_replacement: '5'
|
|
1350
|
-
- regex: 'CFNetwork
|
|
1420
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(13)\.\d+'
|
|
1351
1421
|
os_replacement: 'iOS'
|
|
1352
1422
|
os_v1_replacement: '6'
|
|
1353
|
-
- regex: 'CFNetwork/6
|
|
1423
|
+
- regex: 'CFNetwork/6.{0,100} Darwin/(14)\.\d+'
|
|
1354
1424
|
os_replacement: 'iOS'
|
|
1355
1425
|
os_v1_replacement: '7'
|
|
1356
|
-
- regex: 'CFNetwork/7
|
|
1426
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/(14)\.\d+'
|
|
1357
1427
|
os_replacement: 'iOS'
|
|
1358
1428
|
os_v1_replacement: '8'
|
|
1359
1429
|
os_v2_replacement: '0'
|
|
1360
|
-
- regex: 'CFNetwork/7
|
|
1430
|
+
- regex: 'CFNetwork/7.{0,100} Darwin/(15)\.\d+'
|
|
1361
1431
|
os_replacement: 'iOS'
|
|
1362
1432
|
os_v1_replacement: '9'
|
|
1363
1433
|
os_v2_replacement: '0'
|
|
1364
|
-
- regex: 'CFNetwork/8
|
|
1434
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/16\.5\.\d+'
|
|
1365
1435
|
os_replacement: 'iOS'
|
|
1366
1436
|
os_v1_replacement: '10'
|
|
1367
1437
|
os_v2_replacement: '3'
|
|
1368
|
-
- regex: 'CFNetwork/8
|
|
1438
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/16\.6\.\d+'
|
|
1369
1439
|
os_replacement: 'iOS'
|
|
1370
1440
|
os_v1_replacement: '10'
|
|
1371
1441
|
os_v2_replacement: '3'
|
|
1372
1442
|
os_v3_replacement: '2'
|
|
1373
|
-
- regex: 'CFNetwork/8
|
|
1443
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/16\.7\.\d+'
|
|
1374
1444
|
os_replacement: 'iOS'
|
|
1375
1445
|
os_v1_replacement: '10'
|
|
1376
1446
|
os_v2_replacement: '3'
|
|
1377
1447
|
os_v3_replacement: '3'
|
|
1378
|
-
- regex: 'CFNetwork/8
|
|
1448
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/(16)\.\d+'
|
|
1379
1449
|
os_replacement: 'iOS'
|
|
1380
1450
|
os_v1_replacement: '10'
|
|
1381
|
-
- regex: 'CFNetwork/8
|
|
1451
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.0\.\d+'
|
|
1382
1452
|
os_replacement: 'iOS'
|
|
1383
1453
|
os_v1_replacement: '11'
|
|
1384
1454
|
os_v2_replacement: '0'
|
|
1385
|
-
- regex: 'CFNetwork/8
|
|
1455
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.2\.\d+'
|
|
1386
1456
|
os_replacement: 'iOS'
|
|
1387
1457
|
os_v1_replacement: '11'
|
|
1388
1458
|
os_v2_replacement: '1'
|
|
1389
|
-
- regex: 'CFNetwork/8
|
|
1459
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.3\.\d+'
|
|
1390
1460
|
os_replacement: 'iOS'
|
|
1391
1461
|
os_v1_replacement: '11'
|
|
1392
1462
|
os_v2_replacement: '2'
|
|
1393
|
-
- regex: 'CFNetwork/8
|
|
1463
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.4\.\d+'
|
|
1394
1464
|
os_replacement: 'iOS'
|
|
1395
1465
|
os_v1_replacement: '11'
|
|
1396
1466
|
os_v2_replacement: '2'
|
|
1397
1467
|
os_v3_replacement: '6'
|
|
1398
|
-
- regex: 'CFNetwork/8
|
|
1468
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/17\.5\.\d+'
|
|
1399
1469
|
os_replacement: 'iOS'
|
|
1400
1470
|
os_v1_replacement: '11'
|
|
1401
1471
|
os_v2_replacement: '3'
|
|
1402
|
-
- regex: 'CFNetwork/9
|
|
1472
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/17\.6\.\d+'
|
|
1403
1473
|
os_replacement: 'iOS'
|
|
1404
1474
|
os_v1_replacement: '11'
|
|
1405
1475
|
os_v2_replacement: '4'
|
|
1406
|
-
- regex: 'CFNetwork/9
|
|
1476
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/17\.7\.\d+'
|
|
1407
1477
|
os_replacement: 'iOS'
|
|
1408
1478
|
os_v1_replacement: '11'
|
|
1409
1479
|
os_v2_replacement: '4'
|
|
1410
1480
|
os_v3_replacement: '1'
|
|
1411
|
-
- regex: 'CFNetwork/8
|
|
1481
|
+
- regex: 'CFNetwork/8.{0,100} Darwin/(17)\.\d+'
|
|
1412
1482
|
os_replacement: 'iOS'
|
|
1413
1483
|
os_v1_replacement: '11'
|
|
1414
|
-
- regex: 'CFNetwork/9
|
|
1484
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.0\.\d+'
|
|
1415
1485
|
os_replacement: 'iOS'
|
|
1416
1486
|
os_v1_replacement: '12'
|
|
1417
1487
|
os_v2_replacement: '0'
|
|
1418
|
-
- regex: 'CFNetwork/9
|
|
1488
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.2\.\d+'
|
|
1419
1489
|
os_replacement: 'iOS'
|
|
1420
1490
|
os_v1_replacement: '12'
|
|
1421
|
-
|
|
1491
|
+
os_v2_replacement: '1'
|
|
1492
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.5\.\d+'
|
|
1493
|
+
os_replacement: 'iOS'
|
|
1494
|
+
os_v1_replacement: '12'
|
|
1495
|
+
os_v2_replacement: '2'
|
|
1496
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.6\.\d+'
|
|
1497
|
+
os_replacement: 'iOS'
|
|
1498
|
+
os_v1_replacement: '12'
|
|
1499
|
+
os_v2_replacement: '3'
|
|
1500
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/18\.7\.\d+'
|
|
1501
|
+
os_replacement: 'iOS'
|
|
1502
|
+
os_v1_replacement: '12'
|
|
1503
|
+
os_v2_replacement: '4'
|
|
1504
|
+
- regex: 'CFNetwork/9.{0,100} Darwin/(18)\.\d+'
|
|
1505
|
+
os_replacement: 'iOS'
|
|
1506
|
+
os_v1_replacement: '12'
|
|
1507
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.2\.\d+'
|
|
1508
|
+
os_replacement: 'iOS'
|
|
1509
|
+
os_v1_replacement: '13'
|
|
1510
|
+
os_v2_replacement: '3'
|
|
1511
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.3\.\d+'
|
|
1512
|
+
os_replacement: 'iOS'
|
|
1513
|
+
os_v1_replacement: '13'
|
|
1514
|
+
os_v2_replacement: '3'
|
|
1515
|
+
os_v3_replacement: '1'
|
|
1516
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.4\.\d+'
|
|
1517
|
+
os_replacement: 'iOS'
|
|
1518
|
+
os_v1_replacement: '13'
|
|
1519
|
+
os_v2_replacement: '4'
|
|
1520
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.5\.\d+'
|
|
1521
|
+
os_replacement: 'iOS'
|
|
1522
|
+
os_v1_replacement: '13'
|
|
1523
|
+
os_v2_replacement: '5'
|
|
1524
|
+
- regex: 'CFNetwork/11.{0,100} Darwin/19\.6\.\d+'
|
|
1525
|
+
os_replacement: 'iOS'
|
|
1526
|
+
os_v1_replacement: '13'
|
|
1527
|
+
os_v2_replacement: '6'
|
|
1528
|
+
- regex: 'CFNetwork/1[01].{0,100} Darwin/19\.\d+'
|
|
1529
|
+
os_replacement: 'iOS'
|
|
1530
|
+
os_v1_replacement: '13'
|
|
1531
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.1\.\d+'
|
|
1532
|
+
os_replacement: 'iOS'
|
|
1533
|
+
os_v1_replacement: '14'
|
|
1534
|
+
os_v2_replacement: '2'
|
|
1535
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.2\.\d+'
|
|
1536
|
+
os_replacement: 'iOS'
|
|
1537
|
+
os_v1_replacement: '14'
|
|
1538
|
+
os_v2_replacement: '3'
|
|
1539
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.3\.\d+'
|
|
1540
|
+
os_replacement: 'iOS'
|
|
1541
|
+
os_v1_replacement: '14'
|
|
1542
|
+
os_v2_replacement: '4'
|
|
1543
|
+
- regex: 'CFNetwork/12.{0,100} Darwin/20\.4\.\d+'
|
|
1544
|
+
os_replacement: 'iOS'
|
|
1545
|
+
os_v1_replacement: '14'
|
|
1546
|
+
os_v2_replacement: '5'
|
|
1547
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(20)\.\d+'
|
|
1548
|
+
os_replacement: 'iOS'
|
|
1549
|
+
os_v1_replacement: '14'
|
|
1550
|
+
- regex: 'CFNetwork/.{0,100} Darwin/'
|
|
1422
1551
|
os_replacement: 'iOS'
|
|
1423
1552
|
|
|
1424
1553
|
# iOS Apps
|
|
@@ -1429,7 +1558,7 @@ os_parsers:
|
|
|
1429
1558
|
##########
|
|
1430
1559
|
# Apple Watch
|
|
1431
1560
|
##########
|
|
1432
|
-
- regex: '(watchOS)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
|
1561
|
+
- regex: '(watchOS)[/ ](\d+)\.(\d+)(?:\.(\d+)|)'
|
|
1433
1562
|
os_replacement: 'WatchOS'
|
|
1434
1563
|
|
|
1435
1564
|
##########################
|
|
@@ -1472,9 +1601,9 @@ os_parsers:
|
|
|
1472
1601
|
##########
|
|
1473
1602
|
- regex: '(Symbian[Oo][Ss])[/ ](\d+)\.(\d+)'
|
|
1474
1603
|
os_replacement: 'Symbian OS'
|
|
1475
|
-
- regex: '(Symbian/3)
|
|
1604
|
+
- regex: '(Symbian/3).{1,200}NokiaBrowser/7\.3'
|
|
1476
1605
|
os_replacement: 'Symbian^3 Anna'
|
|
1477
|
-
- regex: '(Symbian/3)
|
|
1606
|
+
- regex: '(Symbian/3).{1,200}NokiaBrowser/7\.4'
|
|
1478
1607
|
os_replacement: 'Symbian^3 Belle'
|
|
1479
1608
|
- regex: '(Symbian/3)'
|
|
1480
1609
|
os_replacement: 'Symbian^3'
|
|
@@ -1491,11 +1620,11 @@ os_parsers:
|
|
|
1491
1620
|
##########
|
|
1492
1621
|
# BlackBerry devices
|
|
1493
1622
|
##########
|
|
1494
|
-
- regex: '(BB10)
|
|
1623
|
+
- regex: '(BB10);.{1,200}Version/(\d+)\.(\d+)\.(\d+)'
|
|
1495
1624
|
os_replacement: 'BlackBerry OS'
|
|
1496
1625
|
- regex: '(Black[Bb]erry)[0-9a-z]+/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
|
|
1497
1626
|
os_replacement: 'BlackBerry OS'
|
|
1498
|
-
- regex: '(Black[Bb]erry)
|
|
1627
|
+
- regex: '(Black[Bb]erry).{1,200}Version/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
|
|
1499
1628
|
os_replacement: 'BlackBerry OS'
|
|
1500
1629
|
- regex: '(RIM Tablet OS) (\d+)\.(\d+)\.(\d+)'
|
|
1501
1630
|
os_replacement: 'BlackBerry Tablet OS'
|
|
@@ -1513,44 +1642,44 @@ os_parsers:
|
|
|
1513
1642
|
##########
|
|
1514
1643
|
# Firefox OS
|
|
1515
1644
|
##########
|
|
1516
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1645
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/18.0 Firefox/\d+\.\d+'
|
|
1517
1646
|
os_replacement: 'Firefox OS'
|
|
1518
1647
|
os_v1_replacement: '1'
|
|
1519
1648
|
os_v2_replacement: '0'
|
|
1520
1649
|
os_v3_replacement: '1'
|
|
1521
1650
|
|
|
1522
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1651
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/18.1 Firefox/\d+\.\d+'
|
|
1523
1652
|
os_replacement: 'Firefox OS'
|
|
1524
1653
|
os_v1_replacement: '1'
|
|
1525
1654
|
os_v2_replacement: '1'
|
|
1526
1655
|
|
|
1527
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1656
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/26.0 Firefox/\d+\.\d+'
|
|
1528
1657
|
os_replacement: 'Firefox OS'
|
|
1529
1658
|
os_v1_replacement: '1'
|
|
1530
1659
|
os_v2_replacement: '2'
|
|
1531
1660
|
|
|
1532
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1661
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/28.0 Firefox/\d+\.\d+'
|
|
1533
1662
|
os_replacement: 'Firefox OS'
|
|
1534
1663
|
os_v1_replacement: '1'
|
|
1535
1664
|
os_v2_replacement: '3'
|
|
1536
1665
|
|
|
1537
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1666
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/30.0 Firefox/\d+\.\d+'
|
|
1538
1667
|
os_replacement: 'Firefox OS'
|
|
1539
1668
|
os_v1_replacement: '1'
|
|
1540
1669
|
os_v2_replacement: '4'
|
|
1541
1670
|
|
|
1542
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1671
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/32.0 Firefox/\d+\.\d+'
|
|
1543
1672
|
os_replacement: 'Firefox OS'
|
|
1544
1673
|
os_v1_replacement: '2'
|
|
1545
1674
|
os_v2_replacement: '0'
|
|
1546
1675
|
|
|
1547
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1676
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Gecko/34.0 Firefox/\d+\.\d+'
|
|
1548
1677
|
os_replacement: 'Firefox OS'
|
|
1549
1678
|
os_v1_replacement: '2'
|
|
1550
1679
|
os_v2_replacement: '1'
|
|
1551
1680
|
|
|
1552
1681
|
# Firefox OS Generic
|
|
1553
|
-
- regex: '\((?:Mobile|Tablet)
|
|
1682
|
+
- regex: '\((?:Mobile|Tablet);.{1,200}Firefox/\d+\.\d+'
|
|
1554
1683
|
os_replacement: 'Firefox OS'
|
|
1555
1684
|
|
|
1556
1685
|
|
|
@@ -1592,7 +1721,7 @@ os_parsers:
|
|
|
1592
1721
|
- regex: '(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Sailfish|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\b)BSD)[/ ](\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
|
1593
1722
|
|
|
1594
1723
|
# Gentoo Linux + Kernel Version
|
|
1595
|
-
- regex: '(Linux)[ /](\d+)\.(\d+)(?:\.(\d+)|)
|
|
1724
|
+
- regex: '(Linux)[ /](\d+)\.(\d+)(?:\.(\d+)|).{0,100}gentoo'
|
|
1596
1725
|
os_replacement: 'Gentoo'
|
|
1597
1726
|
|
|
1598
1727
|
# Opera Mini Bada
|
|
@@ -1600,7 +1729,7 @@ os_parsers:
|
|
|
1600
1729
|
|
|
1601
1730
|
# just os
|
|
1602
1731
|
- regex: '(Windows|Android|WeTab|Maemo|Web0S)'
|
|
1603
|
-
- regex: '(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|(?:Free|Open|Net|\b)BSD)'
|
|
1732
|
+
- regex: '(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|SerenityOS|(?:Free|Open|Net|\b)BSD)'
|
|
1604
1733
|
# Linux + Kernel Version
|
|
1605
1734
|
- regex: '(Linux)(?:[ /](\d+)\.(\d+)(?:\.(\d+)|)|)'
|
|
1606
1735
|
- regex: 'SunOS'
|
|
@@ -1624,19 +1753,19 @@ device_parsers:
|
|
|
1624
1753
|
# Mobile Spiders
|
|
1625
1754
|
# Catch the mobile crawler before checking for iPhones / Androids.
|
|
1626
1755
|
#########
|
|
1627
|
-
- regex: '(?:(?:iPhone|Windows CE|Windows Phone|Android)
|
|
1756
|
+
- 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
1757
|
regex_flag: 'i'
|
|
1629
1758
|
device_replacement: 'Spider'
|
|
1630
1759
|
brand_replacement: 'Spider'
|
|
1631
1760
|
model_replacement: 'Smartphone'
|
|
1632
|
-
- regex: '(?:DoCoMo|\bMOT\b|\bLG\b|Nokia|Samsung|SonyEricsson)
|
|
1761
|
+
- 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
1762
|
regex_flag: 'i'
|
|
1634
1763
|
device_replacement: 'Spider'
|
|
1635
1764
|
brand_replacement: 'Spider'
|
|
1636
1765
|
model_replacement: 'Feature Phone'
|
|
1637
1766
|
|
|
1638
1767
|
# PTST / WebPageTest.org crawlers
|
|
1639
|
-
- regex: ' PTST/\d+(
|
|
1768
|
+
- regex: ' PTST/\d+(?:\.\d+|)$'
|
|
1640
1769
|
device_replacement: 'Spider'
|
|
1641
1770
|
brand_replacement: 'Spider'
|
|
1642
1771
|
|
|
@@ -1646,11 +1775,11 @@ device_parsers:
|
|
|
1646
1775
|
brand_replacement: 'Spider'
|
|
1647
1776
|
|
|
1648
1777
|
# aspiegel.com spider (owned by Huawei)
|
|
1649
|
-
- regex: 'Mozilla
|
|
1778
|
+
- regex: 'Mozilla.{1,100}Mobile.{1,100}AspiegelBot'
|
|
1650
1779
|
device_replacement: 'Spider'
|
|
1651
1780
|
brand_replacement: 'Spider'
|
|
1652
1781
|
model_replacement: 'Smartphone'
|
|
1653
|
-
- regex: 'Mozilla
|
|
1782
|
+
- regex: 'Mozilla.{0,200}AspiegelBot'
|
|
1654
1783
|
device_replacement: 'Spider'
|
|
1655
1784
|
brand_replacement: 'Spider'
|
|
1656
1785
|
model_replacement: 'Desktop'
|
|
@@ -1659,7 +1788,7 @@ device_parsers:
|
|
|
1659
1788
|
# WebBrowser for SmartWatch
|
|
1660
1789
|
# @ref: https://play.google.com/store/apps/details?id=se.vaggan.webbrowser&hl=en
|
|
1661
1790
|
#########
|
|
1662
|
-
- regex: '\bSmartWatch {0,2}\( {0,2}([^;]
|
|
1791
|
+
- regex: '\bSmartWatch {0,2}\( {0,2}([^;]{1,200}) {0,2}; {0,2}([^;]{1,200}) {0,2};'
|
|
1663
1792
|
device_replacement: '$1 $2'
|
|
1664
1793
|
brand_replacement: '$1'
|
|
1665
1794
|
model_replacement: '$2'
|
|
@@ -1671,16 +1800,16 @@ device_parsers:
|
|
|
1671
1800
|
######################################################################
|
|
1672
1801
|
|
|
1673
1802
|
# Android Application
|
|
1674
|
-
- regex: 'Android Application[^\-]
|
|
1803
|
+
- regex: 'Android Application[^\-]{1,300} - (Sony) ?(Ericsson|) (.{1,200}) \w{1,20} - '
|
|
1675
1804
|
device_replacement: '$1 $2'
|
|
1676
1805
|
brand_replacement: '$1$2'
|
|
1677
1806
|
model_replacement: '$3'
|
|
1678
|
-
- regex: 'Android Application[^\-]
|
|
1807
|
+
- regex: 'Android Application[^\-]{1,300} - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\-](.{1,200}) \w{1,20} - '
|
|
1679
1808
|
regex_flag: 'i'
|
|
1680
1809
|
device_replacement: '$1 $2'
|
|
1681
1810
|
brand_replacement: '$1'
|
|
1682
1811
|
model_replacement: '$2'
|
|
1683
|
-
- regex: 'Android Application[^\-]
|
|
1812
|
+
- regex: 'Android Application[^\-]{1,300} - ([^ ]+) (.{1,200}) \w{1,20} - '
|
|
1684
1813
|
device_replacement: '$1 $2'
|
|
1685
1814
|
brand_replacement: '$1'
|
|
1686
1815
|
model_replacement: '$2'
|
|
@@ -1689,11 +1818,11 @@ device_parsers:
|
|
|
1689
1818
|
# 3Q
|
|
1690
1819
|
# @ref: http://www.3q-int.com/
|
|
1691
1820
|
#########
|
|
1692
|
-
- regex: ';
|
|
1821
|
+
- regex: '; {0,2}([BLRQ]C\d{4}[A-Z]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1693
1822
|
device_replacement: '3Q $1'
|
|
1694
1823
|
brand_replacement: '3Q'
|
|
1695
1824
|
model_replacement: '$1'
|
|
1696
|
-
- regex: ';
|
|
1825
|
+
- regex: '; {0,2}(?:3Q_)([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1697
1826
|
device_replacement: '3Q $1'
|
|
1698
1827
|
brand_replacement: '3Q'
|
|
1699
1828
|
model_replacement: '$1'
|
|
@@ -1702,19 +1831,19 @@ device_parsers:
|
|
|
1702
1831
|
# Acer
|
|
1703
1832
|
# @ref: http://us.acer.com/ac/en/US/content/group/tablets
|
|
1704
1833
|
#########
|
|
1705
|
-
- regex: 'Android [34]
|
|
1834
|
+
- 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
1835
|
device_replacement: '$1'
|
|
1707
1836
|
brand_replacement: 'Acer'
|
|
1708
1837
|
model_replacement: '$1'
|
|
1709
|
-
- regex: ';
|
|
1838
|
+
- regex: '; {0,2}Acer Iconia Tab ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1710
1839
|
device_replacement: '$1'
|
|
1711
1840
|
brand_replacement: 'Acer'
|
|
1712
1841
|
model_replacement: '$1'
|
|
1713
|
-
- regex: ';
|
|
1842
|
+
- regex: '; {0,2}(Z1[1235]0|E320[^/]{0,10}|S500|S510|Liquid[^;/]{0,30}|Iconia A\d+)(?: Build|\) AppleWebKit)'
|
|
1714
1843
|
device_replacement: '$1'
|
|
1715
1844
|
brand_replacement: 'Acer'
|
|
1716
1845
|
model_replacement: '$1'
|
|
1717
|
-
- regex: ';
|
|
1846
|
+
- regex: '; {0,2}(Acer |ACER )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1718
1847
|
device_replacement: '$1$2'
|
|
1719
1848
|
brand_replacement: 'Acer'
|
|
1720
1849
|
model_replacement: '$2'
|
|
@@ -1725,7 +1854,7 @@ device_parsers:
|
|
|
1725
1854
|
# @note: VegaBean and VegaComb (names derived from jellybean, honeycomb) are
|
|
1726
1855
|
# custom ROM builds for Vega
|
|
1727
1856
|
#########
|
|
1728
|
-
- regex: ';
|
|
1857
|
+
- regex: '; {0,2}(Advent |)(Vega(?:Bean|Comb|)).{0,200}?(?: Build|\) AppleWebKit)'
|
|
1729
1858
|
device_replacement: '$1$2'
|
|
1730
1859
|
brand_replacement: 'Advent'
|
|
1731
1860
|
model_replacement: '$2'
|
|
@@ -1734,7 +1863,7 @@ device_parsers:
|
|
|
1734
1863
|
# Ainol
|
|
1735
1864
|
# @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product
|
|
1736
1865
|
#########
|
|
1737
|
-
- regex: ';
|
|
1866
|
+
- regex: '; {0,2}(Ainol |)((?:NOVO|[Nn]ovo)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1738
1867
|
device_replacement: '$1$2'
|
|
1739
1868
|
brand_replacement: 'Ainol'
|
|
1740
1869
|
model_replacement: '$2'
|
|
@@ -1743,12 +1872,12 @@ device_parsers:
|
|
|
1743
1872
|
# Airis
|
|
1744
1873
|
# @ref: http://airis.es/Tienda/Default.aspx?idG=001
|
|
1745
1874
|
#########
|
|
1746
|
-
- regex: ';
|
|
1875
|
+
- regex: '; {0,2}AIRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)'
|
|
1747
1876
|
regex_flag: 'i'
|
|
1748
1877
|
device_replacement: '$1'
|
|
1749
1878
|
brand_replacement: 'Airis'
|
|
1750
1879
|
model_replacement: '$1'
|
|
1751
|
-
- regex: ';
|
|
1880
|
+
- regex: '; {0,2}(OnePAD[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1752
1881
|
regex_flag: 'i'
|
|
1753
1882
|
device_replacement: '$1'
|
|
1754
1883
|
brand_replacement: 'Airis'
|
|
@@ -1758,7 +1887,7 @@ device_parsers:
|
|
|
1758
1887
|
# Airpad
|
|
1759
1888
|
# @ref: ??
|
|
1760
1889
|
#########
|
|
1761
|
-
- regex: ';
|
|
1890
|
+
- regex: '; {0,2}Airpad[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1762
1891
|
device_replacement: 'Airpad $1'
|
|
1763
1892
|
brand_replacement: 'Airpad'
|
|
1764
1893
|
model_replacement: '$1'
|
|
@@ -1767,29 +1896,29 @@ device_parsers:
|
|
|
1767
1896
|
# Alcatel - TCT
|
|
1768
1897
|
# @ref: http://www.alcatelonetouch.com/global-en/products/smartphones.html
|
|
1769
1898
|
#########
|
|
1770
|
-
- regex: ';
|
|
1899
|
+
- regex: '; {0,2}(one ?touch) (EVO7|T10|T20)(?: Build|\) AppleWebKit)'
|
|
1771
1900
|
device_replacement: 'Alcatel One Touch $2'
|
|
1772
1901
|
brand_replacement: 'Alcatel'
|
|
1773
1902
|
model_replacement: 'One Touch $2'
|
|
1774
|
-
- regex: ';
|
|
1903
|
+
- regex: '; {0,2}(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1775
1904
|
regex_flag: 'i'
|
|
1776
1905
|
device_replacement: 'Alcatel One Touch $1'
|
|
1777
1906
|
brand_replacement: 'Alcatel'
|
|
1778
1907
|
model_replacement: 'One Touch $1'
|
|
1779
|
-
- regex: ';
|
|
1908
|
+
- regex: '; {0,2}(TCL)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1780
1909
|
device_replacement: '$1 $2'
|
|
1781
1910
|
brand_replacement: '$1'
|
|
1782
1911
|
model_replacement: '$2'
|
|
1783
1912
|
# operator specific models
|
|
1784
|
-
- regex: ';
|
|
1913
|
+
- regex: '; {0,2}(Vodafone Smart II|Optimus_Madrid)(?: Build|\) AppleWebKit)'
|
|
1785
1914
|
device_replacement: 'Alcatel $1'
|
|
1786
1915
|
brand_replacement: 'Alcatel'
|
|
1787
1916
|
model_replacement: '$1'
|
|
1788
|
-
- regex: ';
|
|
1917
|
+
- regex: '; {0,2}BASE_Lutea_3(?: Build|\) AppleWebKit)'
|
|
1789
1918
|
device_replacement: 'Alcatel One Touch 998'
|
|
1790
1919
|
brand_replacement: 'Alcatel'
|
|
1791
1920
|
model_replacement: 'One Touch 998'
|
|
1792
|
-
- regex: ';
|
|
1921
|
+
- regex: '; {0,2}BASE_Varia(?: Build|\) AppleWebKit)'
|
|
1793
1922
|
device_replacement: 'Alcatel One Touch 918D'
|
|
1794
1923
|
brand_replacement: 'Alcatel'
|
|
1795
1924
|
model_replacement: 'One Touch 918D'
|
|
@@ -1798,7 +1927,7 @@ device_parsers:
|
|
|
1798
1927
|
# Allfine
|
|
1799
1928
|
# @ref: http://www.myallfine.com/Products.asp
|
|
1800
1929
|
#########
|
|
1801
|
-
- regex: ';
|
|
1930
|
+
- regex: '; {0,2}((?:FINE|Fine)\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1802
1931
|
device_replacement: '$1'
|
|
1803
1932
|
brand_replacement: 'Allfine'
|
|
1804
1933
|
model_replacement: '$1'
|
|
@@ -1807,15 +1936,15 @@ device_parsers:
|
|
|
1807
1936
|
# Allview
|
|
1808
1937
|
# @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/
|
|
1809
1938
|
#########
|
|
1810
|
-
- regex: ';
|
|
1939
|
+
- regex: '; {0,2}(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).{0,200}?)(?: Build|\) AppleWebKit)'
|
|
1811
1940
|
device_replacement: '$1$2'
|
|
1812
1941
|
brand_replacement: 'Allview'
|
|
1813
1942
|
model_replacement: '$2'
|
|
1814
|
-
- regex: ';
|
|
1943
|
+
- regex: '; {0,2}(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy)(?: Build|\) AppleWebKit)'
|
|
1815
1944
|
device_replacement: '$1$2'
|
|
1816
1945
|
brand_replacement: 'Allview'
|
|
1817
1946
|
model_replacement: '$2'
|
|
1818
|
-
- regex: ';
|
|
1947
|
+
- regex: '; {0,2}(ALLVIEW[ _]?|Allview[ _]?)([^;/]*?)(?: Build|\) AppleWebKit)'
|
|
1819
1948
|
device_replacement: '$1$2'
|
|
1820
1949
|
brand_replacement: 'Allview'
|
|
1821
1950
|
model_replacement: '$2'
|
|
@@ -1825,11 +1954,11 @@ device_parsers:
|
|
|
1825
1954
|
# @ref: http://www.allwinner.com/
|
|
1826
1955
|
# @models: A31 (13.3"),A20,A10,
|
|
1827
1956
|
#########
|
|
1828
|
-
- regex: ';
|
|
1957
|
+
- regex: '; {0,2}(A13-MID)(?: Build|\) AppleWebKit)'
|
|
1829
1958
|
device_replacement: '$1'
|
|
1830
1959
|
brand_replacement: 'Allwinner'
|
|
1831
1960
|
model_replacement: '$1'
|
|
1832
|
-
- regex: ';
|
|
1961
|
+
- regex: '; {0,2}(Allwinner)[ _\-]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1833
1962
|
device_replacement: '$1 $2'
|
|
1834
1963
|
brand_replacement: 'Allwinner'
|
|
1835
1964
|
model_replacement: '$1'
|
|
@@ -1838,7 +1967,7 @@ device_parsers:
|
|
|
1838
1967
|
# Amaway
|
|
1839
1968
|
# @ref: http://www.amaway.cn/
|
|
1840
1969
|
#########
|
|
1841
|
-
- regex: ';
|
|
1970
|
+
- 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
1971
|
device_replacement: '$1'
|
|
1843
1972
|
brand_replacement: 'Amaway'
|
|
1844
1973
|
model_replacement: '$1'
|
|
@@ -1847,11 +1976,11 @@ device_parsers:
|
|
|
1847
1976
|
# Amoi
|
|
1848
1977
|
# @ref: http://www.amoi.com/en/prd/prd_index.jspx
|
|
1849
1978
|
#########
|
|
1850
|
-
- regex: ';
|
|
1979
|
+
- regex: '; {0,2}(?:AMOI|Amoi)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1851
1980
|
device_replacement: 'Amoi $1'
|
|
1852
1981
|
brand_replacement: 'Amoi'
|
|
1853
1982
|
model_replacement: '$1'
|
|
1854
|
-
- regex: '^(?:AMOI|Amoi)[ _]([^;/]
|
|
1983
|
+
- regex: '^(?:AMOI|Amoi)[ _]([^;/]{1,100}?) Linux'
|
|
1855
1984
|
device_replacement: 'Amoi $1'
|
|
1856
1985
|
brand_replacement: 'Amoi'
|
|
1857
1986
|
model_replacement: '$1'
|
|
@@ -1860,7 +1989,7 @@ device_parsers:
|
|
|
1860
1989
|
# Aoc
|
|
1861
1990
|
# @ref: http://latin.aoc.com/media_tablet
|
|
1862
1991
|
#########
|
|
1863
|
-
- regex: ';
|
|
1992
|
+
- regex: '; {0,2}(MW(?:0[789]|10)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1864
1993
|
device_replacement: '$1'
|
|
1865
1994
|
brand_replacement: 'Aoc'
|
|
1866
1995
|
model_replacement: '$1'
|
|
@@ -1871,11 +2000,11 @@ device_parsers:
|
|
|
1871
2000
|
# @ref: http://www.luckystar.com.cn/en/mobiletel.aspx?page=1
|
|
1872
2001
|
# @note: brand owned by luckystar
|
|
1873
2002
|
#########
|
|
1874
|
-
- regex: ';
|
|
2003
|
+
- 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
2004
|
device_replacement: 'Aoson $1'
|
|
1876
2005
|
brand_replacement: 'Aoson'
|
|
1877
2006
|
model_replacement: '$1'
|
|
1878
|
-
- regex: ';
|
|
2007
|
+
- regex: '; {0,2}Aoson ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1879
2008
|
regex_flag: 'i'
|
|
1880
2009
|
device_replacement: 'Aoson $1'
|
|
1881
2010
|
brand_replacement: 'Aoson'
|
|
@@ -1885,7 +2014,7 @@ device_parsers:
|
|
|
1885
2014
|
# Apanda
|
|
1886
2015
|
# @ref: http://www.apanda.com.cn/
|
|
1887
2016
|
#########
|
|
1888
|
-
- regex: ';
|
|
2017
|
+
- regex: '; {0,2}[Aa]panda[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1889
2018
|
device_replacement: 'Apanda $1'
|
|
1890
2019
|
brand_replacement: 'Apanda'
|
|
1891
2020
|
model_replacement: '$1'
|
|
@@ -1895,23 +2024,23 @@ device_parsers:
|
|
|
1895
2024
|
# @ref: http://www.archos.com/de/products/tablets.html
|
|
1896
2025
|
# @ref: http://www.archos.com/de/products/smartphones/index.html
|
|
1897
2026
|
#########
|
|
1898
|
-
- regex: ';
|
|
2027
|
+
- regex: '; {0,2}(?:ARCHOS|Archos) ?(GAMEPAD.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
1899
2028
|
device_replacement: 'Archos $1'
|
|
1900
2029
|
brand_replacement: 'Archos'
|
|
1901
2030
|
model_replacement: '$1'
|
|
1902
|
-
- regex: 'ARCHOS; GOGI; ([^;]
|
|
2031
|
+
- regex: 'ARCHOS; GOGI; ([^;]{1,200});'
|
|
1903
2032
|
device_replacement: 'Archos $1'
|
|
1904
2033
|
brand_replacement: 'Archos'
|
|
1905
2034
|
model_replacement: '$1'
|
|
1906
|
-
- regex: '(?:ARCHOS|Archos)[ _]?(
|
|
2035
|
+
- regex: '(?:ARCHOS|Archos)[ _]?(.{0,200}?)(?: Build|[;/\(\)\-]|$)'
|
|
1907
2036
|
device_replacement: 'Archos $1'
|
|
1908
2037
|
brand_replacement: 'Archos'
|
|
1909
2038
|
model_replacement: '$1'
|
|
1910
|
-
- regex: ';
|
|
2039
|
+
- regex: '; {0,2}(AN(?:7|8|9|10|13)[A-Z0-9]{1,4})(?: Build|\) AppleWebKit)'
|
|
1911
2040
|
device_replacement: 'Archos $1'
|
|
1912
2041
|
brand_replacement: 'Archos'
|
|
1913
2042
|
model_replacement: '$1'
|
|
1914
|
-
- regex: ';
|
|
2043
|
+
- regex: '; {0,2}(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9)(?: Build|\) AppleWebKit)'
|
|
1915
2044
|
device_replacement: 'Archos $1'
|
|
1916
2045
|
brand_replacement: 'Archos'
|
|
1917
2046
|
model_replacement: '$1'
|
|
@@ -1920,11 +2049,11 @@ device_parsers:
|
|
|
1920
2049
|
# A-rival
|
|
1921
2050
|
# @ref: http://www.a-rival.de/de/
|
|
1922
2051
|
#########
|
|
1923
|
-
- regex: ';
|
|
2052
|
+
- regex: '; {0,2}(PAD-FMD[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1924
2053
|
device_replacement: '$1'
|
|
1925
2054
|
brand_replacement: 'Arival'
|
|
1926
2055
|
model_replacement: '$1'
|
|
1927
|
-
- regex: ';
|
|
2056
|
+
- regex: '; {0,2}(BioniQ) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1928
2057
|
device_replacement: '$1 $2'
|
|
1929
2058
|
brand_replacement: 'Arival'
|
|
1930
2059
|
model_replacement: '$1 $2'
|
|
@@ -1933,11 +2062,11 @@ device_parsers:
|
|
|
1933
2062
|
# Arnova
|
|
1934
2063
|
# @ref: http://arnovatech.com/
|
|
1935
2064
|
#########
|
|
1936
|
-
- regex: ';
|
|
2065
|
+
- regex: '; {0,2}(AN\d[^;/]{1,100}|ARCHM\d+)(?: Build|\) AppleWebKit)'
|
|
1937
2066
|
device_replacement: 'Arnova $1'
|
|
1938
2067
|
brand_replacement: 'Arnova'
|
|
1939
2068
|
model_replacement: '$1'
|
|
1940
|
-
- regex: ';
|
|
2069
|
+
- regex: '; {0,2}(?:ARNOVA|Arnova) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1941
2070
|
device_replacement: 'Arnova $1'
|
|
1942
2071
|
brand_replacement: 'Arnova'
|
|
1943
2072
|
model_replacement: '$1'
|
|
@@ -1946,7 +2075,7 @@ device_parsers:
|
|
|
1946
2075
|
# Assistant
|
|
1947
2076
|
# @ref: http://www.assistant.ua
|
|
1948
2077
|
#########
|
|
1949
|
-
- regex: ';
|
|
2078
|
+
- regex: '; {0,2}(?:ASSISTANT |)(AP)-?([1789]\d{2}[A-Z]{0,2}|80104)(?: Build|\) AppleWebKit)'
|
|
1950
2079
|
device_replacement: 'Assistant $1-$2'
|
|
1951
2080
|
brand_replacement: 'Assistant'
|
|
1952
2081
|
model_replacement: '$1-$2'
|
|
@@ -1955,11 +2084,11 @@ device_parsers:
|
|
|
1955
2084
|
# Asus
|
|
1956
2085
|
# @ref: http://www.asus.com/uk/Tablets_Mobile/
|
|
1957
2086
|
#########
|
|
1958
|
-
- regex: ';
|
|
2087
|
+
- 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
2088
|
device_replacement: 'Asus $1'
|
|
1960
2089
|
brand_replacement: 'Asus'
|
|
1961
2090
|
model_replacement: '$1'
|
|
1962
|
-
- regex: ';
|
|
2091
|
+
- regex: '; {0,2}ASUS[ _]{0,10}([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1963
2092
|
device_replacement: 'Asus $1'
|
|
1964
2093
|
brand_replacement: 'Asus'
|
|
1965
2094
|
model_replacement: '$1'
|
|
@@ -1967,11 +2096,11 @@ device_parsers:
|
|
|
1967
2096
|
#########
|
|
1968
2097
|
# Garmin-Asus
|
|
1969
2098
|
#########
|
|
1970
|
-
- regex: ';
|
|
2099
|
+
- regex: '; {0,2}Garmin-Asus ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1971
2100
|
device_replacement: 'Garmin-Asus $1'
|
|
1972
2101
|
brand_replacement: 'Garmin-Asus'
|
|
1973
2102
|
model_replacement: '$1'
|
|
1974
|
-
- regex: ';
|
|
2103
|
+
- regex: '; {0,2}(Garminfone)(?: Build|\) AppleWebKit)'
|
|
1975
2104
|
device_replacement: 'Garmin $1'
|
|
1976
2105
|
brand_replacement: 'Garmin-Asus'
|
|
1977
2106
|
model_replacement: '$1'
|
|
@@ -1980,7 +2109,7 @@ device_parsers:
|
|
|
1980
2109
|
# Attab
|
|
1981
2110
|
# @ref: http://www.theattab.com/
|
|
1982
2111
|
#########
|
|
1983
|
-
- regex: '; (@TAB-[^;/]
|
|
2112
|
+
- regex: '; (@TAB-[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1984
2113
|
device_replacement: '$1'
|
|
1985
2114
|
brand_replacement: 'Attab'
|
|
1986
2115
|
model_replacement: '$1'
|
|
@@ -1990,7 +2119,7 @@ device_parsers:
|
|
|
1990
2119
|
# @ref: ??
|
|
1991
2120
|
# @note: Take care with Docomo T-01 Toshiba
|
|
1992
2121
|
#########
|
|
1993
|
-
- regex: ';
|
|
2122
|
+
- regex: '; {0,2}(T-(?:07|[^0]\d)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
1994
2123
|
device_replacement: '$1'
|
|
1995
2124
|
brand_replacement: 'Audiosonic'
|
|
1996
2125
|
model_replacement: '$1'
|
|
@@ -1999,7 +2128,7 @@ device_parsers:
|
|
|
1999
2128
|
# Axioo
|
|
2000
2129
|
# @ref: http://www.axiooworld.com/ww/index.php
|
|
2001
2130
|
#########
|
|
2002
|
-
- regex: ';
|
|
2131
|
+
- regex: '; {0,2}(?:Axioo[ _\-]([^;/]{1,100}?)|(picopad)[ _\-]([^;/]{1,100}?))(?: Build|\) AppleWebKit)'
|
|
2003
2132
|
regex_flag: 'i'
|
|
2004
2133
|
device_replacement: 'Axioo $1$2 $3'
|
|
2005
2134
|
brand_replacement: 'Axioo'
|
|
@@ -2009,7 +2138,7 @@ device_parsers:
|
|
|
2009
2138
|
# Azend
|
|
2010
2139
|
# @ref: http://azendcorp.com/index.php/products/portable-electronics
|
|
2011
2140
|
#########
|
|
2012
|
-
- regex: ';
|
|
2141
|
+
- regex: '; {0,2}(V(?:100|700|800)[^;/]*)(?: Build|\) AppleWebKit)'
|
|
2013
2142
|
device_replacement: '$1'
|
|
2014
2143
|
brand_replacement: 'Azend'
|
|
2015
2144
|
model_replacement: '$1'
|
|
@@ -2018,7 +2147,7 @@ device_parsers:
|
|
|
2018
2147
|
# Bak
|
|
2019
2148
|
# @ref: http://www.bakinternational.com/produtos.php?cat=80
|
|
2020
2149
|
#########
|
|
2021
|
-
- regex: ';
|
|
2150
|
+
- regex: '; {0,2}(IBAK\-[^;/]*)(?: Build|\) AppleWebKit)'
|
|
2022
2151
|
regex_flag: 'i'
|
|
2023
2152
|
device_replacement: '$1'
|
|
2024
2153
|
brand_replacement: 'Bak'
|
|
@@ -2029,7 +2158,7 @@ device_parsers:
|
|
|
2029
2158
|
# @ref: http://www.bedove.com/product.html
|
|
2030
2159
|
# @models: HY6501|HY5001|X12|X21|I5
|
|
2031
2160
|
#########
|
|
2032
|
-
- regex: ';
|
|
2161
|
+
- regex: '; {0,2}(HY5001|HY6501|X12|X21|I5)(?: Build|\) AppleWebKit)'
|
|
2033
2162
|
device_replacement: 'Bedove $1'
|
|
2034
2163
|
brand_replacement: 'Bedove'
|
|
2035
2164
|
model_replacement: '$1'
|
|
@@ -2038,7 +2167,7 @@ device_parsers:
|
|
|
2038
2167
|
# Benss
|
|
2039
2168
|
# @ref: http://www.benss.net/
|
|
2040
2169
|
#########
|
|
2041
|
-
- regex: ';
|
|
2170
|
+
- regex: '; {0,2}(JC-[^;/]*)(?: Build|\) AppleWebKit)'
|
|
2042
2171
|
device_replacement: 'Benss $1'
|
|
2043
2172
|
brand_replacement: 'Benss'
|
|
2044
2173
|
model_replacement: '$1'
|
|
@@ -2048,7 +2177,7 @@ device_parsers:
|
|
|
2048
2177
|
# @ref: http://uk.blackberry.com/
|
|
2049
2178
|
# @note: Android Apps seams to be used here
|
|
2050
2179
|
#########
|
|
2051
|
-
- regex: ';
|
|
2180
|
+
- regex: '; {0,2}(BB) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2052
2181
|
device_replacement: '$1 $2'
|
|
2053
2182
|
brand_replacement: 'Blackberry'
|
|
2054
2183
|
model_replacement: '$2'
|
|
@@ -2057,11 +2186,11 @@ device_parsers:
|
|
|
2057
2186
|
# Blackbird
|
|
2058
2187
|
# @ref: http://iblackbird.co.kr
|
|
2059
2188
|
#########
|
|
2060
|
-
- regex: ';
|
|
2189
|
+
- regex: '; {0,2}(BlackBird)[ _](I8.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
2061
2190
|
device_replacement: '$1 $2'
|
|
2062
2191
|
brand_replacement: '$1'
|
|
2063
2192
|
model_replacement: '$2'
|
|
2064
|
-
- regex: ';
|
|
2193
|
+
- regex: '; {0,2}(BlackBird)[ _](.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
2065
2194
|
device_replacement: '$1 $2'
|
|
2066
2195
|
brand_replacement: '$1'
|
|
2067
2196
|
model_replacement: '$2'
|
|
@@ -2071,7 +2200,7 @@ device_parsers:
|
|
|
2071
2200
|
# @ref: http://www.blaupunkt.com
|
|
2072
2201
|
#########
|
|
2073
2202
|
# Endeavour
|
|
2074
|
-
- regex: ';
|
|
2203
|
+
- regex: '; {0,2}([0-9]+BP[EM][^;/]*|Endeavour[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2075
2204
|
device_replacement: 'Blaupunkt $1'
|
|
2076
2205
|
brand_replacement: 'Blaupunkt'
|
|
2077
2206
|
model_replacement: '$1'
|
|
@@ -2080,12 +2209,12 @@ device_parsers:
|
|
|
2080
2209
|
# Blu
|
|
2081
2210
|
# @ref: http://bluproducts.com
|
|
2082
2211
|
#########
|
|
2083
|
-
- regex: ';
|
|
2212
|
+
- regex: '; {0,2}((?:BLU|Blu)[ _\-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2084
2213
|
device_replacement: '$1$2'
|
|
2085
2214
|
brand_replacement: 'Blu'
|
|
2086
2215
|
model_replacement: '$2'
|
|
2087
2216
|
# BMOBILE = operator branded device
|
|
2088
|
-
- regex: ';
|
|
2217
|
+
- regex: '; {0,2}(?:BMOBILE )?(Blu|BLU|DASH [^;/]{1,100}|VIVO 4\.3|TANK 4\.5)(?: Build|\) AppleWebKit)'
|
|
2089
2218
|
device_replacement: '$1'
|
|
2090
2219
|
brand_replacement: 'Blu'
|
|
2091
2220
|
model_replacement: '$1'
|
|
@@ -2095,7 +2224,7 @@ device_parsers:
|
|
|
2095
2224
|
# @ref: http://www.blusens.com/es/?sg=1&sv=al&roc=1
|
|
2096
2225
|
#########
|
|
2097
2226
|
# tablet
|
|
2098
|
-
- regex: ';
|
|
2227
|
+
- regex: '; {0,2}(TOUCH\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2099
2228
|
device_replacement: '$1'
|
|
2100
2229
|
brand_replacement: 'Blusens'
|
|
2101
2230
|
model_replacement: '$1'
|
|
@@ -2106,7 +2235,7 @@ device_parsers:
|
|
|
2106
2235
|
# @note: Might collide with Maxx as AX is used also there.
|
|
2107
2236
|
#########
|
|
2108
2237
|
# smartphone
|
|
2109
|
-
- regex: ';
|
|
2238
|
+
- regex: '; {0,2}(AX5\d+)(?: Build|\) AppleWebKit)'
|
|
2110
2239
|
device_replacement: '$1'
|
|
2111
2240
|
brand_replacement: 'Bmobile'
|
|
2112
2241
|
model_replacement: '$1'
|
|
@@ -2115,11 +2244,11 @@ device_parsers:
|
|
|
2115
2244
|
# bq
|
|
2116
2245
|
# @ref: http://bqreaders.com
|
|
2117
2246
|
#########
|
|
2118
|
-
- regex: ';
|
|
2247
|
+
- regex: '; {0,2}([Bb]q) ([^;/]{1,100}?);?(?: Build|\) AppleWebKit)'
|
|
2119
2248
|
device_replacement: '$1 $2'
|
|
2120
2249
|
brand_replacement: 'bq'
|
|
2121
2250
|
model_replacement: '$2'
|
|
2122
|
-
- regex: ';
|
|
2251
|
+
- regex: '; {0,2}(Maxwell [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2123
2252
|
device_replacement: '$1'
|
|
2124
2253
|
brand_replacement: 'bq'
|
|
2125
2254
|
model_replacement: '$1'
|
|
@@ -2128,7 +2257,7 @@ device_parsers:
|
|
|
2128
2257
|
# Braun Phototechnik
|
|
2129
2258
|
# @ref: http://www.braun-phototechnik.de/en/products/list/~pcat.250/Tablet-PC.html
|
|
2130
2259
|
#########
|
|
2131
|
-
- regex: ';
|
|
2260
|
+
- regex: '; {0,2}((?:B-Tab|B-TAB) ?\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2132
2261
|
device_replacement: '$1'
|
|
2133
2262
|
brand_replacement: 'Braun'
|
|
2134
2263
|
model_replacement: '$1'
|
|
@@ -2137,7 +2266,7 @@ device_parsers:
|
|
|
2137
2266
|
# Broncho
|
|
2138
2267
|
# @ref: http://www.broncho.cn/
|
|
2139
2268
|
#########
|
|
2140
|
-
- regex: ';
|
|
2269
|
+
- regex: '; {0,2}(Broncho) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2141
2270
|
device_replacement: '$1 $2'
|
|
2142
2271
|
brand_replacement: '$1'
|
|
2143
2272
|
model_replacement: '$2'
|
|
@@ -2146,7 +2275,7 @@ device_parsers:
|
|
|
2146
2275
|
# Captiva
|
|
2147
2276
|
# @ref: http://www.captiva-power.de
|
|
2148
2277
|
#########
|
|
2149
|
-
- regex: ';
|
|
2278
|
+
- regex: '; {0,2}CAPTIVA ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2150
2279
|
device_replacement: 'Captiva $1'
|
|
2151
2280
|
brand_replacement: 'Captiva'
|
|
2152
2281
|
model_replacement: '$1'
|
|
@@ -2155,7 +2284,7 @@ device_parsers:
|
|
|
2155
2284
|
# Casio
|
|
2156
2285
|
# @ref: http://www.casiogzone.com/
|
|
2157
2286
|
#########
|
|
2158
|
-
- regex: ';
|
|
2287
|
+
- regex: '; {0,2}(C771|CAL21|IS11CA)(?: Build|\) AppleWebKit)'
|
|
2159
2288
|
device_replacement: '$1'
|
|
2160
2289
|
brand_replacement: 'Casio'
|
|
2161
2290
|
model_replacement: '$1'
|
|
@@ -2164,15 +2293,15 @@ device_parsers:
|
|
|
2164
2293
|
# Cat
|
|
2165
2294
|
# @ref: http://www.cat-sound.com
|
|
2166
2295
|
#########
|
|
2167
|
-
- regex: ';
|
|
2296
|
+
- regex: '; {0,2}(?:Cat|CAT) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2168
2297
|
device_replacement: 'Cat $1'
|
|
2169
2298
|
brand_replacement: 'Cat'
|
|
2170
2299
|
model_replacement: '$1'
|
|
2171
|
-
- regex: ';
|
|
2300
|
+
- regex: '; {0,2}(?:Cat)(Nova.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
2172
2301
|
device_replacement: 'Cat $1'
|
|
2173
2302
|
brand_replacement: 'Cat'
|
|
2174
2303
|
model_replacement: '$1'
|
|
2175
|
-
- regex: ';
|
|
2304
|
+
- regex: '; {0,2}(INM8002KP|ADM8000KP_[AB])(?: Build|\) AppleWebKit)'
|
|
2176
2305
|
device_replacement: '$1'
|
|
2177
2306
|
brand_replacement: 'Cat'
|
|
2178
2307
|
model_replacement: 'Tablet PHOENIX 8.1J0'
|
|
@@ -2182,7 +2311,7 @@ device_parsers:
|
|
|
2182
2311
|
# @ref: http://www.celkonmobiles.com/?_a=products
|
|
2183
2312
|
# @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
2313
|
#########
|
|
2185
|
-
- regex: ';
|
|
2314
|
+
- regex: '; {0,2}(?:[Cc]elkon[ _\*]|CELKON[ _\*])([^;/\)]+) ?(?:Build|;|\))'
|
|
2186
2315
|
device_replacement: '$1'
|
|
2187
2316
|
brand_replacement: 'Celkon'
|
|
2188
2317
|
model_replacement: '$1'
|
|
@@ -2190,12 +2319,12 @@ device_parsers:
|
|
|
2190
2319
|
device_replacement: '$1'
|
|
2191
2320
|
brand_replacement: 'Celkon'
|
|
2192
2321
|
model_replacement: '$1'
|
|
2193
|
-
- regex: ';
|
|
2322
|
+
- regex: '; {0,2}(CT)-?(\d+)(?: Build|\) AppleWebKit)'
|
|
2194
2323
|
device_replacement: '$1$2'
|
|
2195
2324
|
brand_replacement: 'Celkon'
|
|
2196
2325
|
model_replacement: '$1$2'
|
|
2197
2326
|
# smartphones
|
|
2198
|
-
- regex: ';
|
|
2327
|
+
- regex: '; {0,2}(A19|A19Q|A105|A107[^;/\)]*) ?(?:Build|;|\))'
|
|
2199
2328
|
device_replacement: '$1'
|
|
2200
2329
|
brand_replacement: 'Celkon'
|
|
2201
2330
|
model_replacement: '$1'
|
|
@@ -2206,7 +2335,7 @@ device_parsers:
|
|
|
2206
2335
|
# @brief: China manufacturer makes tablets for different small brands
|
|
2207
2336
|
# (eg. http://www.zeepad.net/index.html)
|
|
2208
2337
|
#########
|
|
2209
|
-
- regex: ';
|
|
2338
|
+
- regex: '; {0,2}(TPC[0-9]{4,5})(?: Build|\) AppleWebKit)'
|
|
2210
2339
|
device_replacement: '$1'
|
|
2211
2340
|
brand_replacement: 'ChangJia'
|
|
2212
2341
|
model_replacement: '$1'
|
|
@@ -2215,15 +2344,15 @@ device_parsers:
|
|
|
2215
2344
|
# Cloudfone
|
|
2216
2345
|
# @ref: http://www.cloudfonemobile.com/
|
|
2217
2346
|
#########
|
|
2218
|
-
- regex: ';
|
|
2347
|
+
- regex: '; {0,2}(Cloudfone)[ _](Excite)([^ ][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2219
2348
|
device_replacement: '$1 $2 $3'
|
|
2220
2349
|
brand_replacement: 'Cloudfone'
|
|
2221
2350
|
model_replacement: '$1 $2 $3'
|
|
2222
|
-
- regex: ';
|
|
2351
|
+
- regex: '; {0,2}(Excite|ICE)[ _](\d+[^;/]{0,100}?)(?: Build|\) AppleWebKit)'
|
|
2223
2352
|
device_replacement: 'Cloudfone $1 $2'
|
|
2224
2353
|
brand_replacement: 'Cloudfone'
|
|
2225
2354
|
model_replacement: 'Cloudfone $1 $2'
|
|
2226
|
-
- regex: ';
|
|
2355
|
+
- regex: '; {0,2}(Cloudfone|CloudPad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2227
2356
|
device_replacement: '$1 $2'
|
|
2228
2357
|
brand_replacement: 'Cloudfone'
|
|
2229
2358
|
model_replacement: '$1 $2'
|
|
@@ -2232,7 +2361,7 @@ device_parsers:
|
|
|
2232
2361
|
# Cmx
|
|
2233
2362
|
# @ref: http://cmx.at/de/
|
|
2234
2363
|
#########
|
|
2235
|
-
- regex: ';
|
|
2364
|
+
- regex: '; {0,2}((?:Aquila|Clanga|Rapax)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2236
2365
|
regex_flag: 'i'
|
|
2237
2366
|
device_replacement: '$1'
|
|
2238
2367
|
brand_replacement: 'Cmx'
|
|
@@ -2243,7 +2372,7 @@ device_parsers:
|
|
|
2243
2372
|
# @ref: http://cobykyros.com
|
|
2244
2373
|
# @note: Be careful with MID\d{3} from MpMan or Manta
|
|
2245
2374
|
#########
|
|
2246
|
-
- regex: ';
|
|
2375
|
+
- regex: '; {0,2}(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\(3G\)-4G| GB 8K| 3G| 8K| GB)? {0,2}(?:Build|[;\)])'
|
|
2247
2376
|
device_replacement: 'CobyKyros $1$2'
|
|
2248
2377
|
brand_replacement: 'CobyKyros'
|
|
2249
2378
|
model_replacement: '$1$2'
|
|
@@ -2252,7 +2381,7 @@ device_parsers:
|
|
|
2252
2381
|
# Coolpad
|
|
2253
2382
|
# @ref: ??
|
|
2254
2383
|
#########
|
|
2255
|
-
- regex: ';
|
|
2384
|
+
- regex: '; {0,2}([^;/]{0,50})Coolpad[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2256
2385
|
device_replacement: '$1$2'
|
|
2257
2386
|
brand_replacement: 'Coolpad'
|
|
2258
2387
|
model_replacement: '$1$2'
|
|
@@ -2261,7 +2390,7 @@ device_parsers:
|
|
|
2261
2390
|
# Cube
|
|
2262
2391
|
# @ref: http://www.cube-tablet.com/buy-products.html
|
|
2263
2392
|
#########
|
|
2264
|
-
- regex: ';
|
|
2393
|
+
- regex: '; {0,2}(CUBE[ _])?([KU][0-9]+ ?GT.{0,200}?|A5300)(?: Build|\) AppleWebKit)'
|
|
2265
2394
|
regex_flag: 'i'
|
|
2266
2395
|
device_replacement: '$1$2'
|
|
2267
2396
|
brand_replacement: 'Cube'
|
|
@@ -2271,12 +2400,12 @@ device_parsers:
|
|
|
2271
2400
|
# Cubot
|
|
2272
2401
|
# @ref: http://www.cubotmall.com/
|
|
2273
2402
|
#########
|
|
2274
|
-
- regex: ';
|
|
2403
|
+
- regex: '; {0,2}CUBOT ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2275
2404
|
regex_flag: 'i'
|
|
2276
2405
|
device_replacement: '$1'
|
|
2277
2406
|
brand_replacement: 'Cubot'
|
|
2278
2407
|
model_replacement: '$1'
|
|
2279
|
-
- regex: ';
|
|
2408
|
+
- regex: '; {0,2}(BOBBY)(?: Build|\) AppleWebKit)'
|
|
2280
2409
|
regex_flag: 'i'
|
|
2281
2410
|
device_replacement: '$1'
|
|
2282
2411
|
brand_replacement: 'Cubot'
|
|
@@ -2286,7 +2415,7 @@ device_parsers:
|
|
|
2286
2415
|
# Danew
|
|
2287
2416
|
# @ref: http://www.danew.com/produits-tablette.php
|
|
2288
2417
|
#########
|
|
2289
|
-
- regex: ';
|
|
2418
|
+
- regex: '; {0,2}(Dslide [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2290
2419
|
device_replacement: '$1'
|
|
2291
2420
|
brand_replacement: 'Danew'
|
|
2292
2421
|
model_replacement: '$1'
|
|
@@ -2300,39 +2429,39 @@ device_parsers:
|
|
|
2300
2429
|
# @ref: http://www.dell.com/in/p/mobile-xcd28/pd
|
|
2301
2430
|
# @ref: http://www.dell.com/in/p/mobile-xcd35/pd
|
|
2302
2431
|
#########
|
|
2303
|
-
- regex: ';
|
|
2432
|
+
- regex: '; {0,2}(XCD)[ _]?(28|35)(?: Build|\) AppleWebKit)'
|
|
2304
2433
|
device_replacement: 'Dell $1$2'
|
|
2305
2434
|
brand_replacement: 'Dell'
|
|
2306
2435
|
model_replacement: '$1$2'
|
|
2307
|
-
- regex: ';
|
|
2436
|
+
- regex: '; {0,2}(001DL)(?: Build|\) AppleWebKit)'
|
|
2308
2437
|
device_replacement: 'Dell $1'
|
|
2309
2438
|
brand_replacement: 'Dell'
|
|
2310
2439
|
model_replacement: 'Streak'
|
|
2311
|
-
- regex: ';
|
|
2440
|
+
- regex: '; {0,2}(?:Dell|DELL) (Streak)(?: Build|\) AppleWebKit)'
|
|
2312
2441
|
device_replacement: 'Dell $1'
|
|
2313
2442
|
brand_replacement: 'Dell'
|
|
2314
2443
|
model_replacement: 'Streak'
|
|
2315
|
-
- regex: ';
|
|
2444
|
+
- regex: '; {0,2}(101DL|GS01|Streak Pro[^;/]{0,100})(?: Build|\) AppleWebKit)'
|
|
2316
2445
|
device_replacement: 'Dell $1'
|
|
2317
2446
|
brand_replacement: 'Dell'
|
|
2318
2447
|
model_replacement: 'Streak Pro'
|
|
2319
|
-
- regex: ';
|
|
2448
|
+
- regex: '; {0,2}([Ss]treak ?7)(?: Build|\) AppleWebKit)'
|
|
2320
2449
|
device_replacement: 'Dell $1'
|
|
2321
2450
|
brand_replacement: 'Dell'
|
|
2322
2451
|
model_replacement: 'Streak 7'
|
|
2323
|
-
- regex: ';
|
|
2452
|
+
- regex: '; {0,2}(Mini-3iX)(?: Build|\) AppleWebKit)'
|
|
2324
2453
|
device_replacement: 'Dell $1'
|
|
2325
2454
|
brand_replacement: 'Dell'
|
|
2326
2455
|
model_replacement: '$1'
|
|
2327
|
-
- regex: ';
|
|
2456
|
+
- regex: '; {0,2}(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.{0,200}?|Streak[ _]Pro)(?: Build|\) AppleWebKit)'
|
|
2328
2457
|
device_replacement: 'Dell $1'
|
|
2329
2458
|
brand_replacement: 'Dell'
|
|
2330
2459
|
model_replacement: '$1'
|
|
2331
|
-
- regex: ';
|
|
2460
|
+
- regex: '; {0,2}Dell[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2332
2461
|
device_replacement: 'Dell $1'
|
|
2333
2462
|
brand_replacement: 'Dell'
|
|
2334
2463
|
model_replacement: '$1'
|
|
2335
|
-
- regex: ';
|
|
2464
|
+
- regex: '; {0,2}Dell ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2336
2465
|
device_replacement: 'Dell $1'
|
|
2337
2466
|
brand_replacement: 'Dell'
|
|
2338
2467
|
model_replacement: '$1'
|
|
@@ -2341,7 +2470,7 @@ device_parsers:
|
|
|
2341
2470
|
# Denver
|
|
2342
2471
|
# @ref: http://www.denver-electronics.com/tablets1/
|
|
2343
2472
|
#########
|
|
2344
|
-
- regex: ';
|
|
2473
|
+
- regex: '; {0,2}(TA[CD]-\d+[^;/]{0,100})(?: Build|\) AppleWebKit)'
|
|
2345
2474
|
device_replacement: '$1'
|
|
2346
2475
|
brand_replacement: 'Denver'
|
|
2347
2476
|
model_replacement: '$1'
|
|
@@ -2350,7 +2479,7 @@ device_parsers:
|
|
|
2350
2479
|
# Dex
|
|
2351
2480
|
# @ref: http://dex.ua/
|
|
2352
2481
|
#########
|
|
2353
|
-
- regex: ';
|
|
2482
|
+
- regex: '; {0,2}(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?)(?: Build|\) AppleWebKit)'
|
|
2354
2483
|
device_replacement: '$1'
|
|
2355
2484
|
brand_replacement: 'Dex'
|
|
2356
2485
|
model_replacement: '$1'
|
|
@@ -2359,7 +2488,7 @@ device_parsers:
|
|
|
2359
2488
|
# DNS AirTab
|
|
2360
2489
|
# @ref: http://www.dns-shop.ru/
|
|
2361
2490
|
#########
|
|
2362
|
-
- regex: ';
|
|
2491
|
+
- regex: '; {0,2}(AirTab)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2363
2492
|
device_replacement: '$1 $2'
|
|
2364
2493
|
brand_replacement: 'DNS'
|
|
2365
2494
|
model_replacement: '$1 $2'
|
|
@@ -2368,43 +2497,43 @@ device_parsers:
|
|
|
2368
2497
|
# Docomo (Operator Branded Device)
|
|
2369
2498
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
|
2370
2499
|
#########
|
|
2371
|
-
- regex: ';
|
|
2500
|
+
- regex: '; {0,2}(F\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2372
2501
|
device_replacement: '$1'
|
|
2373
2502
|
brand_replacement: 'Fujitsu'
|
|
2374
2503
|
model_replacement: '$1'
|
|
2375
|
-
- regex: ';
|
|
2504
|
+
- regex: '; {0,2}(HT-03A)(?: Build|\) AppleWebKit)'
|
|
2376
2505
|
device_replacement: '$1'
|
|
2377
2506
|
brand_replacement: 'HTC'
|
|
2378
2507
|
model_replacement: 'Magic'
|
|
2379
|
-
- regex: ';
|
|
2508
|
+
- regex: '; {0,2}(HT\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2380
2509
|
device_replacement: '$1'
|
|
2381
2510
|
brand_replacement: 'HTC'
|
|
2382
2511
|
model_replacement: '$1'
|
|
2383
|
-
- regex: ';
|
|
2512
|
+
- regex: '; {0,2}(L\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2384
2513
|
device_replacement: '$1'
|
|
2385
2514
|
brand_replacement: 'LG'
|
|
2386
2515
|
model_replacement: '$1'
|
|
2387
|
-
- regex: ';
|
|
2516
|
+
- regex: '; {0,2}(N\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2388
2517
|
device_replacement: '$1'
|
|
2389
2518
|
brand_replacement: 'Nec'
|
|
2390
2519
|
model_replacement: '$1'
|
|
2391
|
-
- regex: ';
|
|
2520
|
+
- regex: '; {0,2}(P\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2392
2521
|
device_replacement: '$1'
|
|
2393
2522
|
brand_replacement: 'Panasonic'
|
|
2394
2523
|
model_replacement: '$1'
|
|
2395
|
-
- regex: ';
|
|
2524
|
+
- regex: '; {0,2}(SC\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2396
2525
|
device_replacement: '$1'
|
|
2397
2526
|
brand_replacement: 'Samsung'
|
|
2398
2527
|
model_replacement: '$1'
|
|
2399
|
-
- regex: ';
|
|
2528
|
+
- regex: '; {0,2}(SH\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2400
2529
|
device_replacement: '$1'
|
|
2401
2530
|
brand_replacement: 'Sharp'
|
|
2402
2531
|
model_replacement: '$1'
|
|
2403
|
-
- regex: ';
|
|
2532
|
+
- regex: '; {0,2}(SO\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2404
2533
|
device_replacement: '$1'
|
|
2405
2534
|
brand_replacement: 'SonyEricsson'
|
|
2406
2535
|
model_replacement: '$1'
|
|
2407
|
-
- regex: ';
|
|
2536
|
+
- regex: '; {0,2}(T\-0[12][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2408
2537
|
device_replacement: '$1'
|
|
2409
2538
|
brand_replacement: 'Toshiba'
|
|
2410
2539
|
model_replacement: '$1'
|
|
@@ -2413,7 +2542,7 @@ device_parsers:
|
|
|
2413
2542
|
# DOOV
|
|
2414
2543
|
# @ref: http://www.doov.com.cn/
|
|
2415
2544
|
#########
|
|
2416
|
-
- regex: ';
|
|
2545
|
+
- regex: '; {0,2}(DOOV)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2417
2546
|
device_replacement: '$1 $2'
|
|
2418
2547
|
brand_replacement: 'DOOV'
|
|
2419
2548
|
model_replacement: '$2'
|
|
@@ -2422,7 +2551,7 @@ device_parsers:
|
|
|
2422
2551
|
# Enot
|
|
2423
2552
|
# @ref: http://www.enot.ua/
|
|
2424
2553
|
#########
|
|
2425
|
-
- regex: ';
|
|
2554
|
+
- regex: '; {0,2}(Enot|ENOT)[ -]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2426
2555
|
device_replacement: '$1 $2'
|
|
2427
2556
|
brand_replacement: 'Enot'
|
|
2428
2557
|
model_replacement: '$2'
|
|
@@ -2431,11 +2560,11 @@ device_parsers:
|
|
|
2431
2560
|
# Evercoss
|
|
2432
2561
|
# @ref: http://evercoss.com/android/
|
|
2433
2562
|
#########
|
|
2434
|
-
- regex: ';
|
|
2563
|
+
- regex: '; {0,2}[^;/]{1,100} Build/(?:CROSS|Cross)+[ _\-]([^\)]+)'
|
|
2435
2564
|
device_replacement: 'CROSS $1'
|
|
2436
2565
|
brand_replacement: 'Evercoss'
|
|
2437
2566
|
model_replacement: 'Cross $1'
|
|
2438
|
-
- regex: ';
|
|
2567
|
+
- regex: '; {0,2}(CROSS|Cross)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2439
2568
|
device_replacement: '$1 $2'
|
|
2440
2569
|
brand_replacement: 'Evercoss'
|
|
2441
2570
|
model_replacement: 'Cross $2'
|
|
@@ -2444,7 +2573,7 @@ device_parsers:
|
|
|
2444
2573
|
# Explay
|
|
2445
2574
|
# @ref: http://explay.ru/
|
|
2446
2575
|
#########
|
|
2447
|
-
- regex: ';
|
|
2576
|
+
- regex: '; {0,2}Explay[_ ](.{1,200}?)(?:[\)]| Build)'
|
|
2448
2577
|
device_replacement: '$1'
|
|
2449
2578
|
brand_replacement: 'Explay'
|
|
2450
2579
|
model_replacement: '$1'
|
|
@@ -2453,11 +2582,11 @@ device_parsers:
|
|
|
2453
2582
|
# Fly
|
|
2454
2583
|
# @ref: http://www.fly-phone.com/
|
|
2455
2584
|
#########
|
|
2456
|
-
- regex: ';
|
|
2585
|
+
- regex: '; {0,2}(IQ.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
2457
2586
|
device_replacement: '$1'
|
|
2458
2587
|
brand_replacement: 'Fly'
|
|
2459
2588
|
model_replacement: '$1'
|
|
2460
|
-
- regex: ';
|
|
2589
|
+
- regex: '; {0,2}(Fly|FLY)[ _](IQ[^;]{1,100}?|F[34]\d+[^;]{0,100}?);?(?: Build|\) AppleWebKit)'
|
|
2461
2590
|
device_replacement: '$1 $2'
|
|
2462
2591
|
brand_replacement: 'Fly'
|
|
2463
2592
|
model_replacement: '$2'
|
|
@@ -2466,7 +2595,7 @@ device_parsers:
|
|
|
2466
2595
|
# Fujitsu
|
|
2467
2596
|
# @ref: http://www.fujitsu.com/global/
|
|
2468
2597
|
#########
|
|
2469
|
-
- regex: ';
|
|
2598
|
+
- regex: '; {0,2}(M532|Q572|FJL21)(?: Build|\) AppleWebKit)'
|
|
2470
2599
|
device_replacement: '$1'
|
|
2471
2600
|
brand_replacement: 'Fujitsu'
|
|
2472
2601
|
model_replacement: '$1'
|
|
@@ -2475,7 +2604,7 @@ device_parsers:
|
|
|
2475
2604
|
# Galapad
|
|
2476
2605
|
# @ref: http://www.galapad.net/product.html
|
|
2477
2606
|
#########
|
|
2478
|
-
- regex: ';
|
|
2607
|
+
- regex: '; {0,2}(G1)(?: Build|\) AppleWebKit)'
|
|
2479
2608
|
device_replacement: '$1'
|
|
2480
2609
|
brand_replacement: 'Galapad'
|
|
2481
2610
|
model_replacement: '$1'
|
|
@@ -2484,7 +2613,7 @@ device_parsers:
|
|
|
2484
2613
|
# Geeksphone
|
|
2485
2614
|
# @ref: http://www.geeksphone.com/
|
|
2486
2615
|
#########
|
|
2487
|
-
- regex: ';
|
|
2616
|
+
- regex: '; {0,2}(Geeksphone) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2488
2617
|
device_replacement: '$1 $2'
|
|
2489
2618
|
brand_replacement: '$1'
|
|
2490
2619
|
model_replacement: '$2'
|
|
@@ -2493,8 +2622,7 @@ device_parsers:
|
|
|
2493
2622
|
# Gfive
|
|
2494
2623
|
# @ref: http://www.gfivemobile.com/en
|
|
2495
2624
|
#########
|
|
2496
|
-
|
|
2497
|
-
- regex: '; *(G[^F]?FIVE) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
|
2625
|
+
- regex: '; {0,2}(G[^F]?FIVE) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2498
2626
|
device_replacement: '$1 $2'
|
|
2499
2627
|
brand_replacement: 'Gfive'
|
|
2500
2628
|
model_replacement: '$2'
|
|
@@ -2503,16 +2631,16 @@ device_parsers:
|
|
|
2503
2631
|
# Gionee
|
|
2504
2632
|
# @ref: http://www.gionee.com/
|
|
2505
2633
|
#########
|
|
2506
|
-
- regex: ';
|
|
2634
|
+
- regex: '; {0,2}(Gionee)[ _\-]([^;/]{1,100}?)(?:/[^;/]{1,100}|)(?: Build|\) AppleWebKit)'
|
|
2507
2635
|
regex_flag: 'i'
|
|
2508
2636
|
device_replacement: '$1 $2'
|
|
2509
2637
|
brand_replacement: 'Gionee'
|
|
2510
2638
|
model_replacement: '$2'
|
|
2511
|
-
- regex: ';
|
|
2639
|
+
- regex: '; {0,2}(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1)(?: Build|\) AppleWebKit)'
|
|
2512
2640
|
device_replacement: 'Gionee $1'
|
|
2513
2641
|
brand_replacement: 'Gionee'
|
|
2514
2642
|
model_replacement: '$1'
|
|
2515
|
-
- regex: ';
|
|
2643
|
+
- regex: '; {0,2}(E3) Build/JOP40D'
|
|
2516
2644
|
device_replacement: 'Gionee $1'
|
|
2517
2645
|
brand_replacement: 'Gionee'
|
|
2518
2646
|
model_replacement: '$1'
|
|
@@ -2526,11 +2654,11 @@ device_parsers:
|
|
|
2526
2654
|
# GoClever
|
|
2527
2655
|
# @ref: http://www.goclever.com
|
|
2528
2656
|
#########
|
|
2529
|
-
- regex: ';
|
|
2657
|
+
- regex: '; {0,2}((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]{0,100}|PLAYTAB)(?: Build|\) AppleWebKit)'
|
|
2530
2658
|
device_replacement: 'GoClever $1'
|
|
2531
2659
|
brand_replacement: 'GoClever'
|
|
2532
2660
|
model_replacement: '$1'
|
|
2533
|
-
- regex: ';
|
|
2661
|
+
- regex: '; {0,2}GOCLEVER ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2534
2662
|
device_replacement: 'GoClever $1'
|
|
2535
2663
|
brand_replacement: 'GoClever'
|
|
2536
2664
|
model_replacement: '$1'
|
|
@@ -2539,11 +2667,11 @@ device_parsers:
|
|
|
2539
2667
|
# Google
|
|
2540
2668
|
# @ref: http://www.google.de/glass/start/
|
|
2541
2669
|
#########
|
|
2542
|
-
- regex: ';
|
|
2670
|
+
- regex: '; {0,2}(Glass \d+)(?: Build|\) AppleWebKit)'
|
|
2543
2671
|
device_replacement: '$1'
|
|
2544
2672
|
brand_replacement: 'Google'
|
|
2545
2673
|
model_replacement: '$1'
|
|
2546
|
-
- regex: ';
|
|
2674
|
+
- regex: '; {0,2}(Pixel.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
2547
2675
|
device_replacement: '$1'
|
|
2548
2676
|
brand_replacement: 'Google'
|
|
2549
2677
|
model_replacement: '$1'
|
|
@@ -2552,7 +2680,7 @@ device_parsers:
|
|
|
2552
2680
|
# Gigabyte
|
|
2553
2681
|
# @ref: http://gsmart.gigabytecm.com/en/
|
|
2554
2682
|
#########
|
|
2555
|
-
- regex: ';
|
|
2683
|
+
- regex: '; {0,2}(GSmart)[ -]([^/]{1,50})(?: Build|\) AppleWebKit)'
|
|
2556
2684
|
device_replacement: '$1 $2'
|
|
2557
2685
|
brand_replacement: 'Gigabyte'
|
|
2558
2686
|
model_replacement: '$1 $2'
|
|
@@ -2561,7 +2689,7 @@ device_parsers:
|
|
|
2561
2689
|
# Freescale development boards
|
|
2562
2690
|
# @ref: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB
|
|
2563
2691
|
#########
|
|
2564
|
-
- regex: ';
|
|
2692
|
+
- regex: '; {0,2}(imx5[13]_[^/]{1,50})(?: Build|\) AppleWebKit)'
|
|
2565
2693
|
device_replacement: 'Freescale $1'
|
|
2566
2694
|
brand_replacement: 'Freescale'
|
|
2567
2695
|
model_replacement: '$1'
|
|
@@ -2571,11 +2699,11 @@ device_parsers:
|
|
|
2571
2699
|
# @ref: http://www.haier.com/
|
|
2572
2700
|
# @ref: http://www.haier.com/de/produkte/tablet/
|
|
2573
2701
|
#########
|
|
2574
|
-
- regex: ';
|
|
2702
|
+
- regex: '; {0,2}Haier[ _\-]([^/]{1,50})(?: Build|\) AppleWebKit)'
|
|
2575
2703
|
device_replacement: 'Haier $1'
|
|
2576
2704
|
brand_replacement: 'Haier'
|
|
2577
2705
|
model_replacement: '$1'
|
|
2578
|
-
- regex: ';
|
|
2706
|
+
- regex: '; {0,2}(PAD1016)(?: Build|\) AppleWebKit)'
|
|
2579
2707
|
device_replacement: 'Haipad $1'
|
|
2580
2708
|
brand_replacement: 'Haipad'
|
|
2581
2709
|
model_replacement: '$1'
|
|
@@ -2585,7 +2713,7 @@ device_parsers:
|
|
|
2585
2713
|
# @ref: http://www.haipad.net/
|
|
2586
2714
|
# @models: V7P|M7SM7S|M9XM9X|M7XM7X|M9|M8|M7-M|M1002|M7|M701
|
|
2587
2715
|
#########
|
|
2588
|
-
- regex: ';
|
|
2716
|
+
- regex: '; {0,2}(M701|M7|M8|M9)(?: Build|\) AppleWebKit)'
|
|
2589
2717
|
device_replacement: 'Haipad $1'
|
|
2590
2718
|
brand_replacement: 'Haipad'
|
|
2591
2719
|
model_replacement: '$1'
|
|
@@ -2595,7 +2723,7 @@ device_parsers:
|
|
|
2595
2723
|
# @ref: http://www.hannspree.eu/
|
|
2596
2724
|
# @models: SN10T1|SN10T2|SN70T31B|SN70T32W
|
|
2597
2725
|
#########
|
|
2598
|
-
- regex: ';
|
|
2726
|
+
- regex: '; {0,2}(SN\d+T[^;\)/]*)(?: Build|[;\)])'
|
|
2599
2727
|
device_replacement: 'Hannspree $1'
|
|
2600
2728
|
brand_replacement: 'Hannspree'
|
|
2601
2729
|
model_replacement: '$1'
|
|
@@ -2604,11 +2732,11 @@ device_parsers:
|
|
|
2604
2732
|
# HCLme
|
|
2605
2733
|
# @ref: http://www.hclmetablet.com/india/
|
|
2606
2734
|
#########
|
|
2607
|
-
- regex: 'Build/HCL ME Tablet ([^;\)]
|
|
2735
|
+
- regex: 'Build/HCL ME Tablet ([^;\)]{1,3})[\);]'
|
|
2608
2736
|
device_replacement: 'HCLme $1'
|
|
2609
2737
|
brand_replacement: 'HCLme'
|
|
2610
2738
|
model_replacement: '$1'
|
|
2611
|
-
- regex: ';
|
|
2739
|
+
- regex: '; {0,2}([^;\/]+) Build/HCL'
|
|
2612
2740
|
device_replacement: 'HCLme $1'
|
|
2613
2741
|
brand_replacement: 'HCLme'
|
|
2614
2742
|
model_replacement: '$1'
|
|
@@ -2617,7 +2745,7 @@ device_parsers:
|
|
|
2617
2745
|
# Hena
|
|
2618
2746
|
# @ref: http://www.henadigital.com/en/product/index.asp?id=6
|
|
2619
2747
|
#########
|
|
2620
|
-
- regex: ';
|
|
2748
|
+
- regex: '; {0,2}(MID-?\d{4}C[EM])(?: Build|\) AppleWebKit)'
|
|
2621
2749
|
device_replacement: 'Hena $1'
|
|
2622
2750
|
brand_replacement: 'Hena'
|
|
2623
2751
|
model_replacement: '$1'
|
|
@@ -2626,11 +2754,11 @@ device_parsers:
|
|
|
2626
2754
|
# Hisense
|
|
2627
2755
|
# @ref: http://www.hisense.com/
|
|
2628
2756
|
#########
|
|
2629
|
-
- regex: ';
|
|
2757
|
+
- regex: '; {0,2}(EG\d{2,}|HS-[^;/]{1,100}|MIRA[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2630
2758
|
device_replacement: 'Hisense $1'
|
|
2631
2759
|
brand_replacement: 'Hisense'
|
|
2632
2760
|
model_replacement: '$1'
|
|
2633
|
-
- regex: ';
|
|
2761
|
+
- regex: '; {0,2}(andromax[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2634
2762
|
regex_flag: 'i'
|
|
2635
2763
|
device_replacement: 'Hisense $1'
|
|
2636
2764
|
brand_replacement: 'Hisense'
|
|
@@ -2640,7 +2768,7 @@ device_parsers:
|
|
|
2640
2768
|
# hitech
|
|
2641
2769
|
# @ref: http://www.hitech-mobiles.com/
|
|
2642
2770
|
#########
|
|
2643
|
-
- regex: ';
|
|
2771
|
+
- regex: '; {0,2}(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE)(?: Build|\) AppleWebKit)'
|
|
2644
2772
|
device_replacement: 'AMAZE $1$2'
|
|
2645
2773
|
brand_replacement: 'hitech'
|
|
2646
2774
|
model_replacement: 'AMAZE $1$2'
|
|
@@ -2649,15 +2777,15 @@ device_parsers:
|
|
|
2649
2777
|
# HP
|
|
2650
2778
|
# @ref: http://www.hp.com/
|
|
2651
2779
|
#########
|
|
2652
|
-
- regex: ';
|
|
2780
|
+
- regex: '; {0,2}(PlayBook)(?: Build|\) AppleWebKit)'
|
|
2653
2781
|
device_replacement: 'HP $1'
|
|
2654
2782
|
brand_replacement: 'HP'
|
|
2655
2783
|
model_replacement: '$1'
|
|
2656
|
-
- regex: ';
|
|
2784
|
+
- regex: '; {0,2}HP ([^/]{1,50})(?: Build|\) AppleWebKit)'
|
|
2657
2785
|
device_replacement: 'HP $1'
|
|
2658
2786
|
brand_replacement: 'HP'
|
|
2659
2787
|
model_replacement: '$1'
|
|
2660
|
-
- regex: ';
|
|
2788
|
+
- regex: '; {0,2}([^/]{1,30}_tenderloin)(?: Build|\) AppleWebKit)'
|
|
2661
2789
|
device_replacement: 'HP TouchPad'
|
|
2662
2790
|
brand_replacement: 'HP'
|
|
2663
2791
|
model_replacement: 'TouchPad'
|
|
@@ -2667,62 +2795,66 @@ device_parsers:
|
|
|
2667
2795
|
# @ref: http://www.huaweidevice.com
|
|
2668
2796
|
# @note: Needs to be before HTC due to Desire HD Build on U8815
|
|
2669
2797
|
#########
|
|
2670
|
-
- regex: ';
|
|
2798
|
+
- regex: '; {0,2}(HUAWEI |Huawei-|)([UY][^;/]{1,100}) Build/(?:Huawei|HUAWEI)([UY][^\);]+)\)'
|
|
2671
2799
|
device_replacement: '$1$2'
|
|
2672
2800
|
brand_replacement: 'Huawei'
|
|
2673
2801
|
model_replacement: '$2'
|
|
2674
|
-
- regex: ';
|
|
2802
|
+
- regex: '; {0,2}([^;/]{1,100}) Build[/ ]Huawei(MT1-U06|[A-Z]{1,50}\d+[^\);]{1,50})\)'
|
|
2675
2803
|
device_replacement: '$1'
|
|
2676
2804
|
brand_replacement: 'Huawei'
|
|
2677
2805
|
model_replacement: '$2'
|
|
2678
|
-
- regex: ';
|
|
2806
|
+
- regex: '; {0,2}(S7|M860) Build'
|
|
2679
2807
|
device_replacement: '$1'
|
|
2680
2808
|
brand_replacement: 'Huawei'
|
|
2681
2809
|
model_replacement: '$1'
|
|
2682
|
-
- regex: ';
|
|
2810
|
+
- regex: '; {0,2}((?:HUAWEI|Huawei)[ \-]?)(MediaPad) Build'
|
|
2683
2811
|
device_replacement: '$1$2'
|
|
2684
2812
|
brand_replacement: 'Huawei'
|
|
2685
2813
|
model_replacement: '$2'
|
|
2686
|
-
- regex: ';
|
|
2814
|
+
- regex: '; {0,2}((?:HUAWEI[ _]?|Huawei[ _]|)Ascend[ _])([^;/]{1,100}) Build'
|
|
2687
2815
|
device_replacement: '$1$2'
|
|
2688
2816
|
brand_replacement: 'Huawei'
|
|
2689
2817
|
model_replacement: '$2'
|
|
2690
|
-
- regex: ';
|
|
2818
|
+
- regex: '; {0,2}((?:HUAWEI|Huawei)[ _\-]?)((?:G700-|MT-)[^;/]{1,100}) Build'
|
|
2691
2819
|
device_replacement: '$1$2'
|
|
2692
2820
|
brand_replacement: 'Huawei'
|
|
2693
2821
|
model_replacement: '$2'
|
|
2694
|
-
- regex: ';
|
|
2822
|
+
- regex: '; {0,2}((?:HUAWEI|Huawei)[ _\-]?)([^;/]{1,100}) Build'
|
|
2695
2823
|
device_replacement: '$1$2'
|
|
2696
2824
|
brand_replacement: 'Huawei'
|
|
2697
2825
|
model_replacement: '$2'
|
|
2698
|
-
- regex: ';
|
|
2826
|
+
- regex: '; {0,2}(MediaPad[^;]{1,200}|SpringBoard) Build/Huawei'
|
|
2699
2827
|
device_replacement: '$1'
|
|
2700
2828
|
brand_replacement: 'Huawei'
|
|
2701
2829
|
model_replacement: '$1'
|
|
2702
|
-
- regex: ';
|
|
2830
|
+
- regex: '; {0,2}([^;]{1,200}) Build/(?:Huawei|HUAWEI)'
|
|
2703
2831
|
device_replacement: '$1'
|
|
2704
2832
|
brand_replacement: 'Huawei'
|
|
2705
2833
|
model_replacement: '$1'
|
|
2706
|
-
- regex: ';
|
|
2834
|
+
- regex: '; {0,2}([Uu])([89]\d{3}) Build'
|
|
2707
2835
|
device_replacement: '$1$2'
|
|
2708
2836
|
brand_replacement: 'Huawei'
|
|
2709
2837
|
model_replacement: 'U$2'
|
|
2710
|
-
- regex: ';
|
|
2838
|
+
- regex: '; {0,2}(?:Ideos |IDEOS )(S7) Build'
|
|
2711
2839
|
device_replacement: 'Huawei Ideos$1'
|
|
2712
2840
|
brand_replacement: 'Huawei'
|
|
2713
2841
|
model_replacement: 'Ideos$1'
|
|
2714
|
-
- regex: ';
|
|
2842
|
+
- regex: '; {0,2}(?:Ideos |IDEOS )([^;/]{1,50}\s{0,5}|\s{0,5})Build'
|
|
2715
2843
|
device_replacement: 'Huawei Ideos$1'
|
|
2716
2844
|
brand_replacement: 'Huawei'
|
|
2717
2845
|
model_replacement: 'Ideos$1'
|
|
2718
|
-
- regex: ';
|
|
2846
|
+
- regex: '; {0,2}(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.{1,200}?) Build[/ ]'
|
|
2719
2847
|
device_replacement: 'Huawei $1'
|
|
2720
2848
|
brand_replacement: 'Huawei'
|
|
2721
2849
|
model_replacement: '$1'
|
|
2722
|
-
- regex: ';
|
|
2850
|
+
- regex: '; {0,2}((?:[A-Z]{3})\-L[A-Za0-9]{2})[\)]'
|
|
2723
2851
|
device_replacement: 'Huawei $1'
|
|
2724
2852
|
brand_replacement: 'Huawei'
|
|
2725
2853
|
model_replacement: '$1'
|
|
2854
|
+
- regex: '; {0,2}([^;]{1,200}) Build/(HONOR|Honor)'
|
|
2855
|
+
device_replacement: 'Huawei Honor $1'
|
|
2856
|
+
brand_replacement: 'Huawei'
|
|
2857
|
+
model_replacement: 'Honor $1'
|
|
2726
2858
|
|
|
2727
2859
|
#########
|
|
2728
2860
|
# HTC
|
|
@@ -2730,7 +2862,7 @@ device_parsers:
|
|
|
2730
2862
|
# @ref: http://en.wikipedia.org/wiki/List_of_HTC_phones
|
|
2731
2863
|
#########
|
|
2732
2864
|
|
|
2733
|
-
- regex: ';
|
|
2865
|
+
- regex: '; {0,2}HTC[ _]([^;]{1,200}); Windows Phone'
|
|
2734
2866
|
device_replacement: 'HTC $1'
|
|
2735
2867
|
brand_replacement: 'HTC'
|
|
2736
2868
|
model_replacement: '$1'
|
|
@@ -2738,59 +2870,59 @@ device_parsers:
|
|
|
2738
2870
|
# Android HTC with Version Number matcher
|
|
2739
2871
|
# ; HTC_0P3Z11/1.12.161.3 Build
|
|
2740
2872
|
# ;HTC_A3335 V2.38.841.1 Build
|
|
2741
|
-
- regex: ';
|
|
2873
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
|
2742
2874
|
device_replacement: 'HTC $1'
|
|
2743
2875
|
brand_replacement: 'HTC'
|
|
2744
2876
|
model_replacement: '$1'
|
|
2745
|
-
- regex: ';
|
|
2877
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
|
2746
2878
|
device_replacement: 'HTC $1 $2'
|
|
2747
2879
|
brand_replacement: 'HTC'
|
|
2748
2880
|
model_replacement: '$1 $2'
|
|
2749
|
-
- regex: ';
|
|
2881
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
|
2750
2882
|
device_replacement: 'HTC $1 $2 $3'
|
|
2751
2883
|
brand_replacement: 'HTC'
|
|
2752
2884
|
model_replacement: '$1 $2 $3'
|
|
2753
|
-
- regex: ';
|
|
2885
|
+
- regex: '; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))'
|
|
2754
2886
|
device_replacement: 'HTC $1 $2 $3 $4'
|
|
2755
2887
|
brand_replacement: 'HTC'
|
|
2756
2888
|
model_replacement: '$1 $2 $3 $4'
|
|
2757
2889
|
|
|
2758
2890
|
# Android HTC without Version Number matcher
|
|
2759
|
-
- regex: ';
|
|
2891
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/;]+)(?: {0,2}Build|[;\)]| - )'
|
|
2760
2892
|
device_replacement: 'HTC $1'
|
|
2761
2893
|
brand_replacement: 'HTC'
|
|
2762
2894
|
model_replacement: '$1'
|
|
2763
|
-
- regex: ';
|
|
2895
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/;\)]+)|)(?: {0,2}Build|[;\)]| - )'
|
|
2764
2896
|
device_replacement: 'HTC $1 $2'
|
|
2765
2897
|
brand_replacement: 'HTC'
|
|
2766
2898
|
model_replacement: '$1 $2'
|
|
2767
|
-
- regex: ';
|
|
2899
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\)]+)|)|)(?: {0,2}Build|[;\)]| - )'
|
|
2768
2900
|
device_replacement: 'HTC $1 $2 $3'
|
|
2769
2901
|
brand_replacement: 'HTC'
|
|
2770
2902
|
model_replacement: '$1 $2 $3'
|
|
2771
|
-
- regex: ';
|
|
2903
|
+
- regex: '; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+)|)|)|)(?: {0,2}Build|[;\)]| - )'
|
|
2772
2904
|
device_replacement: 'HTC $1 $2 $3 $4'
|
|
2773
2905
|
brand_replacement: 'HTC'
|
|
2774
2906
|
model_replacement: '$1 $2 $3 $4'
|
|
2775
2907
|
|
|
2776
2908
|
# HTC Streaming Player
|
|
2777
|
-
- regex: 'HTC Streaming Player [^\/]
|
|
2909
|
+
- regex: 'HTC Streaming Player [^\/]{0,30}/[^\/]{0,10}/ htc_([^/]{1,10}) /'
|
|
2778
2910
|
device_replacement: 'HTC $1'
|
|
2779
2911
|
brand_replacement: 'HTC'
|
|
2780
2912
|
model_replacement: '$1'
|
|
2781
2913
|
# general matcher for anything else
|
|
2782
|
-
- regex: '(?:[;,]
|
|
2914
|
+
- regex: '(?:[;,] {0,2}|^)(?:htccn_chs-|)HTC[ _-]?([^;]{1,200}?)(?: {0,2}Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\(\)]|$)'
|
|
2783
2915
|
regex_flag: 'i'
|
|
2784
2916
|
device_replacement: 'HTC $1'
|
|
2785
2917
|
brand_replacement: 'HTC'
|
|
2786
2918
|
model_replacement: '$1'
|
|
2787
2919
|
# Android matchers without HTC
|
|
2788
|
-
- regex: ';
|
|
2920
|
+
- 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
2921
|
regex_flag: 'i'
|
|
2790
2922
|
device_replacement: 'HTC $1'
|
|
2791
2923
|
brand_replacement: 'HTC'
|
|
2792
2924
|
model_replacement: '$1'
|
|
2793
|
-
- regex: ';
|
|
2925
|
+
- 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
2926
|
regex_flag: 'i'
|
|
2795
2927
|
device_replacement: 'HTC $1 $2'
|
|
2796
2928
|
brand_replacement: 'HTC'
|
|
@@ -2800,16 +2932,16 @@ device_parsers:
|
|
|
2800
2932
|
# Hyundai
|
|
2801
2933
|
# @ref: http://www.hyundaitechnologies.com
|
|
2802
2934
|
#########
|
|
2803
|
-
- regex: ';
|
|
2935
|
+
- regex: '; {0,2}HYUNDAI (T\d[^/]{0,10})(?: Build|\) AppleWebKit)'
|
|
2804
2936
|
device_replacement: 'Hyundai $1'
|
|
2805
2937
|
brand_replacement: 'Hyundai'
|
|
2806
2938
|
model_replacement: '$1'
|
|
2807
|
-
- regex: ';
|
|
2939
|
+
- regex: '; {0,2}HYUNDAI ([^;/]{1,10}?)(?: Build|\) AppleWebKit)'
|
|
2808
2940
|
device_replacement: 'Hyundai $1'
|
|
2809
2941
|
brand_replacement: 'Hyundai'
|
|
2810
2942
|
model_replacement: '$1'
|
|
2811
2943
|
# X900? http://www.amazon.com/Hyundai-X900-Retina-Android-Bluetooth/dp/B00AO07H3O
|
|
2812
|
-
- regex: ';
|
|
2944
|
+
- regex: '; {0,2}(X700|Hold X|MB-6900)(?: Build|\) AppleWebKit)'
|
|
2813
2945
|
device_replacement: 'Hyundai $1'
|
|
2814
2946
|
brand_replacement: 'Hyundai'
|
|
2815
2947
|
model_replacement: '$1'
|
|
@@ -2818,12 +2950,12 @@ device_parsers:
|
|
|
2818
2950
|
# iBall
|
|
2819
2951
|
# @ref: http://www.iball.co.in/Category/Mobiles/22
|
|
2820
2952
|
#########
|
|
2821
|
-
- regex: ';
|
|
2953
|
+
- regex: '; {0,2}(?:iBall[ _\-]|)(Andi)[ _]?(\d[^;/]*)(?: Build|\) AppleWebKit)'
|
|
2822
2954
|
regex_flag: 'i'
|
|
2823
2955
|
device_replacement: '$1 $2'
|
|
2824
2956
|
brand_replacement: 'iBall'
|
|
2825
2957
|
model_replacement: '$1 $2'
|
|
2826
|
-
- regex: ';
|
|
2958
|
+
- regex: '; {0,2}(IBall)(?:[ _]([^;/]{1,100}?)|)(?: Build|\) AppleWebKit)'
|
|
2827
2959
|
regex_flag: 'i'
|
|
2828
2960
|
device_replacement: '$1 $2'
|
|
2829
2961
|
brand_replacement: 'iBall'
|
|
@@ -2833,7 +2965,7 @@ device_parsers:
|
|
|
2833
2965
|
# IconBIT
|
|
2834
2966
|
# @ref: http://www.iconbit.com/catalog/tablets/
|
|
2835
2967
|
#########
|
|
2836
|
-
- regex: ';
|
|
2968
|
+
- 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
2969
|
device_replacement: '$1'
|
|
2838
2970
|
brand_replacement: 'IconBIT'
|
|
2839
2971
|
model_replacement: '$1'
|
|
@@ -2842,7 +2974,7 @@ device_parsers:
|
|
|
2842
2974
|
# IMO
|
|
2843
2975
|
# @ref: http://www.ponselimo.com/
|
|
2844
2976
|
#########
|
|
2845
|
-
- regex: ';
|
|
2977
|
+
- regex: '; {0,2}(IMO)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2846
2978
|
regex_flag: 'i'
|
|
2847
2979
|
device_replacement: '$1 $2'
|
|
2848
2980
|
brand_replacement: 'IMO'
|
|
@@ -2852,12 +2984,12 @@ device_parsers:
|
|
|
2852
2984
|
# i-mobile
|
|
2853
2985
|
# @ref: http://www.i-mobilephone.com/
|
|
2854
2986
|
#########
|
|
2855
|
-
- regex: ';
|
|
2987
|
+
- regex: '; {0,2}i-?mobile[ _]([^/]{1,50})(?: Build|\) AppleWebKit)'
|
|
2856
2988
|
regex_flag: 'i'
|
|
2857
2989
|
device_replacement: 'i-mobile $1'
|
|
2858
2990
|
brand_replacement: 'imobile'
|
|
2859
2991
|
model_replacement: '$1'
|
|
2860
|
-
- regex: ';
|
|
2992
|
+
- regex: '; {0,2}(i-(?:style|note)[^/]{0,10})(?: Build|\) AppleWebKit)'
|
|
2861
2993
|
regex_flag: 'i'
|
|
2862
2994
|
device_replacement: 'i-mobile $1'
|
|
2863
2995
|
brand_replacement: 'imobile'
|
|
@@ -2867,7 +2999,7 @@ device_parsers:
|
|
|
2867
2999
|
# Impression
|
|
2868
3000
|
# @ref: http://impression.ua/planshetnye-kompyutery
|
|
2869
3001
|
#########
|
|
2870
|
-
- regex: ';
|
|
3002
|
+
- regex: '; {0,2}(ImPAD) ?(\d+(?:.){0,100}?)(?: Build|\) AppleWebKit)'
|
|
2871
3003
|
device_replacement: '$1 $2'
|
|
2872
3004
|
brand_replacement: 'Impression'
|
|
2873
3005
|
model_replacement: '$1 $2'
|
|
@@ -2876,7 +3008,7 @@ device_parsers:
|
|
|
2876
3008
|
# Infinix
|
|
2877
3009
|
# @ref: http://www.infinixmobility.com/index.html
|
|
2878
3010
|
#########
|
|
2879
|
-
- regex: ';
|
|
3011
|
+
- regex: '; {0,2}(Infinix)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2880
3012
|
device_replacement: '$1 $2'
|
|
2881
3013
|
brand_replacement: 'Infinix'
|
|
2882
3014
|
model_replacement: '$2'
|
|
@@ -2885,7 +3017,7 @@ device_parsers:
|
|
|
2885
3017
|
# Informer
|
|
2886
3018
|
# @ref: ??
|
|
2887
3019
|
#########
|
|
2888
|
-
- regex: ';
|
|
3020
|
+
- regex: '; {0,2}(Informer)[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2889
3021
|
device_replacement: '$1 $2'
|
|
2890
3022
|
brand_replacement: 'Informer'
|
|
2891
3023
|
model_replacement: '$2'
|
|
@@ -2895,7 +3027,7 @@ device_parsers:
|
|
|
2895
3027
|
# @ref: http://www.intenso.de
|
|
2896
3028
|
# @models: 7":TAB 714,TAB 724;8":TAB 814,TAB 824;10":TAB 1004
|
|
2897
3029
|
#########
|
|
2898
|
-
- regex: ';
|
|
3030
|
+
- regex: '; {0,2}(TAB) ?([78][12]4)(?: Build|\) AppleWebKit)'
|
|
2899
3031
|
device_replacement: 'Intenso $1'
|
|
2900
3032
|
brand_replacement: 'Intenso'
|
|
2901
3033
|
model_replacement: '$1 $2'
|
|
@@ -2906,21 +3038,21 @@ device_parsers:
|
|
|
2906
3038
|
# @note: Zync also offers a "Cloud Z5" device
|
|
2907
3039
|
#########
|
|
2908
3040
|
# smartphones
|
|
2909
|
-
- regex: ';
|
|
3041
|
+
- regex: '; {0,2}(?:Intex[ _]|)(AQUA|Aqua)([ _\.\-])([^;/]{1,100}?) {0,2}(?:Build|;)'
|
|
2910
3042
|
device_replacement: '$1$2$3'
|
|
2911
3043
|
brand_replacement: 'Intex'
|
|
2912
3044
|
model_replacement: '$1 $3'
|
|
2913
3045
|
# matches "INTEX CLOUD X1"
|
|
2914
|
-
- regex: ';
|
|
3046
|
+
- regex: '; {0,2}(?:INTEX|Intex)(?:[_ ]([^\ _;/]+))(?:[_ ]([^\ _;/]+)|) {0,2}(?:Build|;)'
|
|
2915
3047
|
device_replacement: '$1 $2'
|
|
2916
3048
|
brand_replacement: 'Intex'
|
|
2917
3049
|
model_replacement: '$1 $2'
|
|
2918
3050
|
# tablets
|
|
2919
|
-
- regex: ';
|
|
3051
|
+
- regex: '; {0,2}([iI]Buddy)[ _]?(Connect)(?:_|\?_| |)([^;/]{0,50}) {0,2}(?:Build|;)'
|
|
2920
3052
|
device_replacement: '$1 $2 $3'
|
|
2921
3053
|
brand_replacement: 'Intex'
|
|
2922
3054
|
model_replacement: 'iBuddy $2 $3'
|
|
2923
|
-
- regex: ';
|
|
3055
|
+
- regex: '; {0,2}(I-Buddy)[ _]([^;/]{1,100}?) {0,2}(?:Build|;)'
|
|
2924
3056
|
device_replacement: '$1 $2'
|
|
2925
3057
|
brand_replacement: 'Intex'
|
|
2926
3058
|
model_replacement: 'iBuddy $2'
|
|
@@ -2929,7 +3061,7 @@ device_parsers:
|
|
|
2929
3061
|
# iOCEAN
|
|
2930
3062
|
# @ref: http://www.iocean.cc/
|
|
2931
3063
|
#########
|
|
2932
|
-
- regex: ';
|
|
3064
|
+
- regex: '; {0,2}(iOCEAN) ([^/]{1,50})(?: Build|\) AppleWebKit)'
|
|
2933
3065
|
regex_flag: 'i'
|
|
2934
3066
|
device_replacement: '$1 $2'
|
|
2935
3067
|
brand_replacement: 'iOCEAN'
|
|
@@ -2939,7 +3071,7 @@ device_parsers:
|
|
|
2939
3071
|
# i.onik
|
|
2940
3072
|
# @ref: http://www.i-onik.de/
|
|
2941
3073
|
#########
|
|
2942
|
-
- regex: ';
|
|
3074
|
+
- regex: '; {0,2}(TP\d+(?:\.\d+|)\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2943
3075
|
device_replacement: 'ionik $1'
|
|
2944
3076
|
brand_replacement: 'ionik'
|
|
2945
3077
|
model_replacement: '$1'
|
|
@@ -2948,7 +3080,7 @@ device_parsers:
|
|
|
2948
3080
|
# IRU.ru
|
|
2949
3081
|
# @ref: http://www.iru.ru/catalog/soho/planetable/
|
|
2950
3082
|
#########
|
|
2951
|
-
- regex: ';
|
|
3083
|
+
- regex: '; {0,2}(M702pro)(?: Build|\) AppleWebKit)'
|
|
2952
3084
|
device_replacement: '$1'
|
|
2953
3085
|
brand_replacement: 'Iru'
|
|
2954
3086
|
model_replacement: '$1'
|
|
@@ -2957,7 +3089,7 @@ device_parsers:
|
|
|
2957
3089
|
# Itel Mobile
|
|
2958
3090
|
# @ref: https://www.itel-mobile.com/global/products/
|
|
2959
3091
|
#########
|
|
2960
|
-
- regex: ';
|
|
3092
|
+
- regex: '; {0,2}itel ([^;/]*)(?: Build|\) AppleWebKit)'
|
|
2961
3093
|
device_replacement: 'Itel $1'
|
|
2962
3094
|
brand_replacement: 'Itel'
|
|
2963
3095
|
model_replacement: '$1'
|
|
@@ -2967,11 +3099,11 @@ device_parsers:
|
|
|
2967
3099
|
# @ref: http://www.ivio.com/mobile.php
|
|
2968
3100
|
# @models: DG80,DG20,DE38,DE88,MD70
|
|
2969
3101
|
#########
|
|
2970
|
-
- regex: ';
|
|
3102
|
+
- regex: '; {0,2}(DE88Plus|MD70)(?: Build|\) AppleWebKit)'
|
|
2971
3103
|
device_replacement: '$1'
|
|
2972
3104
|
brand_replacement: 'Ivio'
|
|
2973
3105
|
model_replacement: '$1'
|
|
2974
|
-
- regex: ';
|
|
3106
|
+
- regex: '; {0,2}IVIO[_\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
2975
3107
|
device_replacement: '$1'
|
|
2976
3108
|
brand_replacement: 'Ivio'
|
|
2977
3109
|
model_replacement: '$1'
|
|
@@ -2980,7 +3112,7 @@ device_parsers:
|
|
|
2980
3112
|
# Jaytech
|
|
2981
3113
|
# @ref: http://www.jay-tech.de/jaytech/servlet/frontend/
|
|
2982
3114
|
#########
|
|
2983
|
-
- regex: ';
|
|
3115
|
+
- regex: '; {0,2}(TPC-\d+|JAY-TECH)(?: Build|\) AppleWebKit)'
|
|
2984
3116
|
device_replacement: '$1'
|
|
2985
3117
|
brand_replacement: 'Jaytech'
|
|
2986
3118
|
model_replacement: '$1'
|
|
@@ -2989,7 +3121,7 @@ device_parsers:
|
|
|
2989
3121
|
# Jiayu
|
|
2990
3122
|
# @ref: http://www.ejiayu.com/en/Product.html
|
|
2991
3123
|
#########
|
|
2992
|
-
- regex: ';
|
|
3124
|
+
- regex: '; {0,2}(JY-[^;/]{1,100}|G[234]S?)(?: Build|\) AppleWebKit)'
|
|
2993
3125
|
device_replacement: '$1'
|
|
2994
3126
|
brand_replacement: 'Jiayu'
|
|
2995
3127
|
model_replacement: '$1'
|
|
@@ -2998,7 +3130,7 @@ device_parsers:
|
|
|
2998
3130
|
# JXD
|
|
2999
3131
|
# @ref: http://www.jxd.hk/
|
|
3000
3132
|
#########
|
|
3001
|
-
- regex: ';
|
|
3133
|
+
- regex: '; {0,2}(JXD)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3002
3134
|
device_replacement: '$1 $2'
|
|
3003
3135
|
brand_replacement: 'JXD'
|
|
3004
3136
|
model_replacement: '$2'
|
|
@@ -3007,16 +3139,16 @@ device_parsers:
|
|
|
3007
3139
|
# Karbonn
|
|
3008
3140
|
# @ref: http://www.karbonnmobiles.com/products_tablet.php
|
|
3009
3141
|
#########
|
|
3010
|
-
- regex: ';
|
|
3142
|
+
- regex: '; {0,2}Karbonn[ _]?([^;/]{1,100}) {0,2}(?:Build|;)'
|
|
3011
3143
|
regex_flag: 'i'
|
|
3012
3144
|
device_replacement: '$1'
|
|
3013
3145
|
brand_replacement: 'Karbonn'
|
|
3014
3146
|
model_replacement: '$1'
|
|
3015
|
-
- regex: ';
|
|
3147
|
+
- regex: '; {0,2}([^;]{1,200}) Build/Karbonn'
|
|
3016
3148
|
device_replacement: '$1'
|
|
3017
3149
|
brand_replacement: 'Karbonn'
|
|
3018
3150
|
model_replacement: '$1'
|
|
3019
|
-
- regex: ';
|
|
3151
|
+
- regex: '; {0,2}(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\d) +Build'
|
|
3020
3152
|
device_replacement: '$1'
|
|
3021
3153
|
brand_replacement: 'Karbonn'
|
|
3022
3154
|
model_replacement: '$1'
|
|
@@ -3025,84 +3157,84 @@ device_parsers:
|
|
|
3025
3157
|
# KDDI (Operator Branded Device)
|
|
3026
3158
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
|
3027
3159
|
#########
|
|
3028
|
-
- regex: ';
|
|
3160
|
+
- regex: '; {0,2}(IS01|IS03|IS05|IS\d{2}SH)(?: Build|\) AppleWebKit)'
|
|
3029
3161
|
device_replacement: '$1'
|
|
3030
3162
|
brand_replacement: 'Sharp'
|
|
3031
3163
|
model_replacement: '$1'
|
|
3032
|
-
- regex: ';
|
|
3164
|
+
- regex: '; {0,2}(IS04)(?: Build|\) AppleWebKit)'
|
|
3033
3165
|
device_replacement: '$1'
|
|
3034
3166
|
brand_replacement: 'Regza'
|
|
3035
3167
|
model_replacement: '$1'
|
|
3036
|
-
- regex: ';
|
|
3168
|
+
- regex: '; {0,2}(IS06|IS\d{2}PT)(?: Build|\) AppleWebKit)'
|
|
3037
3169
|
device_replacement: '$1'
|
|
3038
3170
|
brand_replacement: 'Pantech'
|
|
3039
3171
|
model_replacement: '$1'
|
|
3040
|
-
- regex: ';
|
|
3172
|
+
- regex: '; {0,2}(IS11S)(?: Build|\) AppleWebKit)'
|
|
3041
3173
|
device_replacement: '$1'
|
|
3042
3174
|
brand_replacement: 'SonyEricsson'
|
|
3043
3175
|
model_replacement: 'Xperia Acro'
|
|
3044
|
-
- regex: ';
|
|
3176
|
+
- regex: '; {0,2}(IS11CA)(?: Build|\) AppleWebKit)'
|
|
3045
3177
|
device_replacement: '$1'
|
|
3046
3178
|
brand_replacement: 'Casio'
|
|
3047
3179
|
model_replacement: 'GzOne $1'
|
|
3048
|
-
- regex: ';
|
|
3180
|
+
- regex: '; {0,2}(IS11LG)(?: Build|\) AppleWebKit)'
|
|
3049
3181
|
device_replacement: '$1'
|
|
3050
3182
|
brand_replacement: 'LG'
|
|
3051
3183
|
model_replacement: 'Optimus X'
|
|
3052
|
-
- regex: ';
|
|
3184
|
+
- regex: '; {0,2}(IS11N)(?: Build|\) AppleWebKit)'
|
|
3053
3185
|
device_replacement: '$1'
|
|
3054
3186
|
brand_replacement: 'Medias'
|
|
3055
3187
|
model_replacement: '$1'
|
|
3056
|
-
- regex: ';
|
|
3188
|
+
- regex: '; {0,2}(IS11PT)(?: Build|\) AppleWebKit)'
|
|
3057
3189
|
device_replacement: '$1'
|
|
3058
3190
|
brand_replacement: 'Pantech'
|
|
3059
3191
|
model_replacement: 'MIRACH'
|
|
3060
|
-
- regex: ';
|
|
3192
|
+
- regex: '; {0,2}(IS12F)(?: Build|\) AppleWebKit)'
|
|
3061
3193
|
device_replacement: '$1'
|
|
3062
3194
|
brand_replacement: 'Fujitsu'
|
|
3063
3195
|
model_replacement: 'Arrows ES'
|
|
3064
3196
|
# @ref: https://ja.wikipedia.org/wiki/IS12M
|
|
3065
|
-
- regex: ';
|
|
3197
|
+
- regex: '; {0,2}(IS12M)(?: Build|\) AppleWebKit)'
|
|
3066
3198
|
device_replacement: '$1'
|
|
3067
3199
|
brand_replacement: 'Motorola'
|
|
3068
3200
|
model_replacement: 'XT909'
|
|
3069
|
-
- regex: ';
|
|
3201
|
+
- regex: '; {0,2}(IS12S)(?: Build|\) AppleWebKit)'
|
|
3070
3202
|
device_replacement: '$1'
|
|
3071
3203
|
brand_replacement: 'SonyEricsson'
|
|
3072
3204
|
model_replacement: 'Xperia Acro HD'
|
|
3073
|
-
- regex: ';
|
|
3205
|
+
- regex: '; {0,2}(ISW11F)(?: Build|\) AppleWebKit)'
|
|
3074
3206
|
device_replacement: '$1'
|
|
3075
3207
|
brand_replacement: 'Fujitsu'
|
|
3076
3208
|
model_replacement: 'Arrowz Z'
|
|
3077
|
-
- regex: ';
|
|
3209
|
+
- regex: '; {0,2}(ISW11HT)(?: Build|\) AppleWebKit)'
|
|
3078
3210
|
device_replacement: '$1'
|
|
3079
3211
|
brand_replacement: 'HTC'
|
|
3080
3212
|
model_replacement: 'EVO'
|
|
3081
|
-
- regex: ';
|
|
3213
|
+
- regex: '; {0,2}(ISW11K)(?: Build|\) AppleWebKit)'
|
|
3082
3214
|
device_replacement: '$1'
|
|
3083
3215
|
brand_replacement: 'Kyocera'
|
|
3084
3216
|
model_replacement: 'DIGNO'
|
|
3085
|
-
- regex: ';
|
|
3217
|
+
- regex: '; {0,2}(ISW11M)(?: Build|\) AppleWebKit)'
|
|
3086
3218
|
device_replacement: '$1'
|
|
3087
3219
|
brand_replacement: 'Motorola'
|
|
3088
3220
|
model_replacement: 'Photon'
|
|
3089
|
-
- regex: ';
|
|
3221
|
+
- regex: '; {0,2}(ISW11SC)(?: Build|\) AppleWebKit)'
|
|
3090
3222
|
device_replacement: '$1'
|
|
3091
3223
|
brand_replacement: 'Samsung'
|
|
3092
3224
|
model_replacement: 'GALAXY S II WiMAX'
|
|
3093
|
-
- regex: ';
|
|
3225
|
+
- regex: '; {0,2}(ISW12HT)(?: Build|\) AppleWebKit)'
|
|
3094
3226
|
device_replacement: '$1'
|
|
3095
3227
|
brand_replacement: 'HTC'
|
|
3096
3228
|
model_replacement: 'EVO 3D'
|
|
3097
|
-
- regex: ';
|
|
3229
|
+
- regex: '; {0,2}(ISW13HT)(?: Build|\) AppleWebKit)'
|
|
3098
3230
|
device_replacement: '$1'
|
|
3099
3231
|
brand_replacement: 'HTC'
|
|
3100
3232
|
model_replacement: 'J'
|
|
3101
|
-
- regex: ';
|
|
3233
|
+
- regex: '; {0,2}(ISW?[0-9]{2}[A-Z]{0,2})(?: Build|\) AppleWebKit)'
|
|
3102
3234
|
device_replacement: '$1'
|
|
3103
3235
|
brand_replacement: 'KDDI'
|
|
3104
3236
|
model_replacement: '$1'
|
|
3105
|
-
- regex: ';
|
|
3237
|
+
- regex: '; {0,2}(INFOBAR [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3106
3238
|
device_replacement: '$1'
|
|
3107
3239
|
brand_replacement: 'KDDI'
|
|
3108
3240
|
model_replacement: '$1'
|
|
@@ -3111,7 +3243,7 @@ device_parsers:
|
|
|
3111
3243
|
# Kingcom
|
|
3112
3244
|
# @ref: http://www.e-kingcom.com
|
|
3113
3245
|
#########
|
|
3114
|
-
- regex: ';
|
|
3246
|
+
- regex: '; {0,2}(JOYPAD|Joypad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3115
3247
|
device_replacement: '$1 $2'
|
|
3116
3248
|
brand_replacement: 'Kingcom'
|
|
3117
3249
|
model_replacement: '$1 $2'
|
|
@@ -3121,7 +3253,7 @@ device_parsers:
|
|
|
3121
3253
|
# @ref: https://en.wikipedia.org/wiki/Kobo_Inc.
|
|
3122
3254
|
# @ref: http://www.kobo.com/devices#tablets
|
|
3123
3255
|
#########
|
|
3124
|
-
- regex: ';
|
|
3256
|
+
- regex: '; {0,2}(Vox|VOX|Arc|K080)(?: Build|\) AppleWebKit)'
|
|
3125
3257
|
regex_flag: 'i'
|
|
3126
3258
|
device_replacement: '$1'
|
|
3127
3259
|
brand_replacement: 'Kobo'
|
|
@@ -3135,7 +3267,7 @@ device_parsers:
|
|
|
3135
3267
|
# K-Touch
|
|
3136
3268
|
# @ref: ??
|
|
3137
3269
|
#########
|
|
3138
|
-
- regex: ';
|
|
3270
|
+
- regex: '; {0,2}(K-Touch)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3139
3271
|
regex_flag: 'i'
|
|
3140
3272
|
device_replacement: '$1 $2'
|
|
3141
3273
|
brand_replacement: 'Ktouch'
|
|
@@ -3145,7 +3277,7 @@ device_parsers:
|
|
|
3145
3277
|
# KT Tech
|
|
3146
3278
|
# @ref: http://www.kttech.co.kr
|
|
3147
3279
|
#########
|
|
3148
|
-
- regex: ';
|
|
3280
|
+
- regex: '; {0,2}((?:EV|KM)-S\d+[A-Z]?)(?: Build|\) AppleWebKit)'
|
|
3149
3281
|
regex_flag: 'i'
|
|
3150
3282
|
device_replacement: '$1'
|
|
3151
3283
|
brand_replacement: 'KTtech'
|
|
@@ -3155,7 +3287,7 @@ device_parsers:
|
|
|
3155
3287
|
# Kyocera
|
|
3156
3288
|
# @ref: http://www.android.com/devices/?country=all&m=kyocera
|
|
3157
3289
|
#########
|
|
3158
|
-
- regex: ';
|
|
3290
|
+
- 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
3291
|
device_replacement: '$1'
|
|
3160
3292
|
brand_replacement: 'Kyocera'
|
|
3161
3293
|
model_replacement: '$1'
|
|
@@ -3164,12 +3296,12 @@ device_parsers:
|
|
|
3164
3296
|
# Lava
|
|
3165
3297
|
# @ref: http://www.lavamobiles.com/
|
|
3166
3298
|
#########
|
|
3167
|
-
- regex: ';
|
|
3299
|
+
- regex: '; {0,2}(?:LAVA[ _]|)IRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)'
|
|
3168
3300
|
regex_flag: 'i'
|
|
3169
3301
|
device_replacement: 'Iris $1'
|
|
3170
3302
|
brand_replacement: 'Lava'
|
|
3171
3303
|
model_replacement: 'Iris $1'
|
|
3172
|
-
- regex: ';
|
|
3304
|
+
- regex: '; {0,2}LAVA[ _]([^;/]{1,100}) Build'
|
|
3173
3305
|
device_replacement: '$1'
|
|
3174
3306
|
brand_replacement: 'Lava'
|
|
3175
3307
|
model_replacement: '$1'
|
|
@@ -3178,7 +3310,7 @@ device_parsers:
|
|
|
3178
3310
|
# Lemon
|
|
3179
3311
|
# @ref: http://www.lemonmobiles.com/products.php?type=1
|
|
3180
3312
|
#########
|
|
3181
|
-
- regex: ';
|
|
3313
|
+
- regex: '; {0,2}(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]{1,100}))_?(?: Build|\) AppleWebKit)'
|
|
3182
3314
|
device_replacement: 'Lemon $1$2'
|
|
3183
3315
|
brand_replacement: 'Lemon'
|
|
3184
3316
|
model_replacement: '$1$2'
|
|
@@ -3187,11 +3319,11 @@ device_parsers:
|
|
|
3187
3319
|
# Lenco
|
|
3188
3320
|
# @ref: http://www.lenco.com/c/tablets/
|
|
3189
3321
|
#########
|
|
3190
|
-
- regex: ';
|
|
3322
|
+
- regex: '; {0,2}(TAB-1012)(?: Build|\) AppleWebKit)'
|
|
3191
3323
|
device_replacement: 'Lenco $1'
|
|
3192
3324
|
brand_replacement: 'Lenco'
|
|
3193
3325
|
model_replacement: '$1'
|
|
3194
|
-
- regex: '; Lenco ([^;/]
|
|
3326
|
+
- regex: '; Lenco ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3195
3327
|
device_replacement: 'Lenco $1'
|
|
3196
3328
|
brand_replacement: 'Lenco'
|
|
3197
3329
|
model_replacement: '$1'
|
|
@@ -3200,23 +3332,23 @@ device_parsers:
|
|
|
3200
3332
|
# Lenovo
|
|
3201
3333
|
# @ref: http://support.lenovo.com/en_GB/downloads/default.page?#
|
|
3202
3334
|
#########
|
|
3203
|
-
- regex: ';
|
|
3335
|
+
- regex: '; {0,2}(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build'
|
|
3204
3336
|
device_replacement: '$1'
|
|
3205
3337
|
brand_replacement: 'Lenovo'
|
|
3206
3338
|
model_replacement: '$1'
|
|
3207
|
-
- regex: ';
|
|
3339
|
+
- regex: '; {0,2}(Idea[Tp]ab)[ _]([^;/]{1,100});? Build'
|
|
3208
3340
|
device_replacement: 'Lenovo $1 $2'
|
|
3209
3341
|
brand_replacement: 'Lenovo'
|
|
3210
3342
|
model_replacement: '$1 $2'
|
|
3211
|
-
- regex: ';
|
|
3343
|
+
- regex: '; {0,2}(Idea(?:Tab|pad)) ?([^;/]{1,100}) Build'
|
|
3212
3344
|
device_replacement: 'Lenovo $1 $2'
|
|
3213
3345
|
brand_replacement: 'Lenovo'
|
|
3214
3346
|
model_replacement: '$1 $2'
|
|
3215
|
-
- regex: ';
|
|
3347
|
+
- regex: '; {0,2}(ThinkPad) ?(Tablet) Build/'
|
|
3216
3348
|
device_replacement: 'Lenovo $1 $2'
|
|
3217
3349
|
brand_replacement: 'Lenovo'
|
|
3218
3350
|
model_replacement: '$1 $2'
|
|
3219
|
-
- regex: ';
|
|
3351
|
+
- regex: '; {0,2}(?:LNV-|)(?:=?[Ll]enovo[ _\-]?|LENOVO[ _])(.{1,200}?)(?:Build|[;/\)])'
|
|
3220
3352
|
device_replacement: 'Lenovo $1'
|
|
3221
3353
|
brand_replacement: 'Lenovo'
|
|
3222
3354
|
model_replacement: '$1'
|
|
@@ -3224,11 +3356,11 @@ device_parsers:
|
|
|
3224
3356
|
device_replacement: 'Lenovo $1 $2 $3'
|
|
3225
3357
|
brand_replacement: 'Lenovo'
|
|
3226
3358
|
model_replacement: '$1 $2 $3'
|
|
3227
|
-
- regex: ';
|
|
3359
|
+
- regex: '; {0,2}(?:Ideapad |)K1 Build/'
|
|
3228
3360
|
device_replacement: 'Lenovo Ideapad K1'
|
|
3229
3361
|
brand_replacement: 'Lenovo'
|
|
3230
3362
|
model_replacement: 'Ideapad K1'
|
|
3231
|
-
- regex: ';
|
|
3363
|
+
- regex: '; {0,2}(3GC101|3GW10[01]|A390) Build/'
|
|
3232
3364
|
device_replacement: '$1'
|
|
3233
3365
|
brand_replacement: 'Lenovo'
|
|
3234
3366
|
model_replacement: '$1'
|
|
@@ -3241,7 +3373,7 @@ device_parsers:
|
|
|
3241
3373
|
# Lexibook
|
|
3242
3374
|
# @ref: http://www.lexibook.com/fr
|
|
3243
3375
|
#########
|
|
3244
|
-
- regex: ';
|
|
3376
|
+
- regex: '; {0,2}(MFC\d+)[A-Z]{2}([^;,/]*),?(?: Build|\) AppleWebKit)'
|
|
3245
3377
|
device_replacement: '$1$2'
|
|
3246
3378
|
brand_replacement: 'Lexibook'
|
|
3247
3379
|
model_replacement: '$1$2'
|
|
@@ -3250,23 +3382,23 @@ device_parsers:
|
|
|
3250
3382
|
# LG
|
|
3251
3383
|
# @ref: http://www.lg.com/uk/mobile
|
|
3252
3384
|
#########
|
|
3253
|
-
- regex: ';
|
|
3385
|
+
- 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
3386
|
device_replacement: '$1'
|
|
3255
3387
|
brand_replacement: 'LG'
|
|
3256
3388
|
model_replacement: '$1'
|
|
3257
|
-
- regex: '[;:]
|
|
3389
|
+
- regex: '[;:] {0,2}(L-\d+[A-Z]|LGL\d+[A-Z]?)(?:/V\d+|) {0,2}(?:Build|[;\)])'
|
|
3258
3390
|
device_replacement: '$1'
|
|
3259
3391
|
brand_replacement: 'LG'
|
|
3260
3392
|
model_replacement: '$1'
|
|
3261
|
-
- regex: ';
|
|
3393
|
+
- regex: '; {0,2}(LG-)([A-Z]{1,2}\d{2,}[^,;/\)\(]*?)(?:Build| V\d+|[,;/\)\(]|$)'
|
|
3262
3394
|
device_replacement: '$1$2'
|
|
3263
3395
|
brand_replacement: 'LG'
|
|
3264
3396
|
model_replacement: '$2'
|
|
3265
|
-
- regex: ';
|
|
3397
|
+
- regex: '; {0,2}(LG[ \-]|LG)([^;/]{1,100})[;/]? Build'
|
|
3266
3398
|
device_replacement: '$1$2'
|
|
3267
3399
|
brand_replacement: 'LG'
|
|
3268
3400
|
model_replacement: '$2'
|
|
3269
|
-
- regex: '^(LG)-([^;/]
|
|
3401
|
+
- regex: '^(LG)-([^;/]{1,100})/ Mozilla/.{0,200}; Android'
|
|
3270
3402
|
device_replacement: '$1 $2'
|
|
3271
3403
|
brand_replacement: 'LG'
|
|
3272
3404
|
model_replacement: '$2'
|
|
@@ -3279,11 +3411,11 @@ device_parsers:
|
|
|
3279
3411
|
# Malata
|
|
3280
3412
|
# @ref: http://www.malata.com/en/products.aspx?classid=680
|
|
3281
3413
|
#########
|
|
3282
|
-
- regex: ';
|
|
3414
|
+
- regex: '; {0,2}((?:SMB|smb)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3283
3415
|
device_replacement: '$1'
|
|
3284
3416
|
brand_replacement: 'Malata'
|
|
3285
3417
|
model_replacement: '$1'
|
|
3286
|
-
- regex: ';
|
|
3418
|
+
- regex: '; {0,2}(?:Malata|MALATA) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3287
3419
|
device_replacement: '$1'
|
|
3288
3420
|
brand_replacement: 'Malata'
|
|
3289
3421
|
model_replacement: '$1'
|
|
@@ -3292,7 +3424,7 @@ device_parsers:
|
|
|
3292
3424
|
# Manta
|
|
3293
3425
|
# @ref: http://www.manta.com.pl/en
|
|
3294
3426
|
#########
|
|
3295
|
-
- regex: ';
|
|
3427
|
+
- 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
3428
|
device_replacement: '$1'
|
|
3297
3429
|
brand_replacement: 'Manta'
|
|
3298
3430
|
model_replacement: '$1'
|
|
@@ -3301,7 +3433,7 @@ device_parsers:
|
|
|
3301
3433
|
# Match
|
|
3302
3434
|
# @ref: http://www.match.net.cn/products.asp
|
|
3303
3435
|
#########
|
|
3304
|
-
- regex: ';
|
|
3436
|
+
- 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
3437
|
device_replacement: '$1'
|
|
3306
3438
|
brand_replacement: 'Match'
|
|
3307
3439
|
model_replacement: '$1'
|
|
@@ -3315,7 +3447,7 @@ device_parsers:
|
|
|
3315
3447
|
# Maxx MT150, Maxx MQ601, Maxx M2020, Maxx Sleek MX463neo, Maxx MX525, Maxx MX192-Tune, Maxx Genx Droid 7 AX353,
|
|
3316
3448
|
# @note: Need more User-Agents!!!
|
|
3317
3449
|
#########
|
|
3318
|
-
- regex: ';
|
|
3450
|
+
- regex: '; {0,2}(GenxDroid7|MSD7.{0,200}?|AX\d.{0,200}?|Tab 701|Tab 722)(?: Build|\) AppleWebKit)'
|
|
3319
3451
|
device_replacement: 'Maxx $1'
|
|
3320
3452
|
brand_replacement: 'Maxx'
|
|
3321
3453
|
model_replacement: '$1'
|
|
@@ -3324,11 +3456,11 @@ device_parsers:
|
|
|
3324
3456
|
# Mediacom
|
|
3325
3457
|
# @ref: http://www.mediacomeurope.it/
|
|
3326
3458
|
#########
|
|
3327
|
-
- regex: ';
|
|
3459
|
+
- regex: '; {0,2}(M-PP[^;/]{1,30}|PhonePad ?\d{2,}[^;/]{1,30}?)(?: Build|\) AppleWebKit)'
|
|
3328
3460
|
device_replacement: 'Mediacom $1'
|
|
3329
3461
|
brand_replacement: 'Mediacom'
|
|
3330
3462
|
model_replacement: '$1'
|
|
3331
|
-
- regex: ';
|
|
3463
|
+
- regex: '; {0,2}(M-MP[^;/]{1,30}|SmartPad ?\d{2,}[^;/]{1,30}?)(?: Build|\) AppleWebKit)'
|
|
3332
3464
|
device_replacement: 'Mediacom $1'
|
|
3333
3465
|
brand_replacement: 'Mediacom'
|
|
3334
3466
|
model_replacement: '$1'
|
|
@@ -3337,12 +3469,12 @@ device_parsers:
|
|
|
3337
3469
|
# Medion
|
|
3338
3470
|
# @ref: http://www.medion.com/en/
|
|
3339
3471
|
#########
|
|
3340
|
-
- regex: ';
|
|
3472
|
+
- regex: '; {0,2}(?:MD_|)LIFETAB[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3341
3473
|
regex_flag: 'i'
|
|
3342
3474
|
device_replacement: 'Medion Lifetab $1'
|
|
3343
3475
|
brand_replacement: 'Medion'
|
|
3344
3476
|
model_replacement: 'Lifetab $1'
|
|
3345
|
-
- regex: ';
|
|
3477
|
+
- regex: '; {0,2}MEDION ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3346
3478
|
device_replacement: 'Medion $1'
|
|
3347
3479
|
brand_replacement: 'Medion'
|
|
3348
3480
|
model_replacement: '$1'
|
|
@@ -3351,11 +3483,11 @@ device_parsers:
|
|
|
3351
3483
|
# Meizu
|
|
3352
3484
|
# @ref: http://www.meizu.com
|
|
3353
3485
|
#########
|
|
3354
|
-
- regex: ';
|
|
3486
|
+
- regex: '; {0,2}(M030|M031|M035|M040|M065|m9)(?: Build|\) AppleWebKit)'
|
|
3355
3487
|
device_replacement: 'Meizu $1'
|
|
3356
3488
|
brand_replacement: 'Meizu'
|
|
3357
3489
|
model_replacement: '$1'
|
|
3358
|
-
- regex: ';
|
|
3490
|
+
- regex: '; {0,2}(?:meizu_|MEIZU )(.{1,200}?) {0,2}(?:Build|[;\)])'
|
|
3359
3491
|
device_replacement: 'Meizu $1'
|
|
3360
3492
|
brand_replacement: 'Meizu'
|
|
3361
3493
|
model_replacement: '$1'
|
|
@@ -3364,28 +3496,28 @@ device_parsers:
|
|
|
3364
3496
|
# Micromax
|
|
3365
3497
|
# @ref: http://www.micromaxinfo.com
|
|
3366
3498
|
#########
|
|
3367
|
-
- regex: ';
|
|
3499
|
+
- regex: '; {0,2}(?:Micromax[ _](A111|A240)|(A111|A240)) Build'
|
|
3368
3500
|
regex_flag: 'i'
|
|
3369
3501
|
device_replacement: 'Micromax $1$2'
|
|
3370
3502
|
brand_replacement: 'Micromax'
|
|
3371
3503
|
model_replacement: '$1$2'
|
|
3372
|
-
- regex: ';
|
|
3504
|
+
- regex: '; {0,2}Micromax[ _](A\d{2,3}[^;/]*) Build'
|
|
3373
3505
|
regex_flag: 'i'
|
|
3374
3506
|
device_replacement: 'Micromax $1'
|
|
3375
3507
|
brand_replacement: 'Micromax'
|
|
3376
3508
|
model_replacement: '$1'
|
|
3377
3509
|
# be carefull here with Acer e.g. A500
|
|
3378
|
-
- regex: ';
|
|
3510
|
+
- regex: '; {0,2}(A\d{2}|A[12]\d{2}|A90S|A110Q) Build'
|
|
3379
3511
|
regex_flag: 'i'
|
|
3380
3512
|
device_replacement: 'Micromax $1'
|
|
3381
3513
|
brand_replacement: 'Micromax'
|
|
3382
3514
|
model_replacement: '$1'
|
|
3383
|
-
- regex: ';
|
|
3515
|
+
- regex: '; {0,2}Micromax[ _](P\d{3}[^;/]*) Build'
|
|
3384
3516
|
regex_flag: 'i'
|
|
3385
3517
|
device_replacement: 'Micromax $1'
|
|
3386
3518
|
brand_replacement: 'Micromax'
|
|
3387
3519
|
model_replacement: '$1'
|
|
3388
|
-
- regex: ';
|
|
3520
|
+
- regex: '; {0,2}(P\d{3}|P\d{3}\(Funbook\)) Build'
|
|
3389
3521
|
regex_flag: 'i'
|
|
3390
3522
|
device_replacement: 'Micromax $1'
|
|
3391
3523
|
brand_replacement: 'Micromax'
|
|
@@ -3395,7 +3527,7 @@ device_parsers:
|
|
|
3395
3527
|
# Mito
|
|
3396
3528
|
# @ref: http://new.mitomobile.com/
|
|
3397
3529
|
#########
|
|
3398
|
-
- regex: ';
|
|
3530
|
+
- regex: '; {0,2}(MITO)[ _\-]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3399
3531
|
regex_flag: 'i'
|
|
3400
3532
|
device_replacement: '$1 $2'
|
|
3401
3533
|
brand_replacement: 'Mito'
|
|
@@ -3405,7 +3537,7 @@ device_parsers:
|
|
|
3405
3537
|
# Mobistel
|
|
3406
3538
|
# @ref: http://www.mobistel.com/
|
|
3407
3539
|
#########
|
|
3408
|
-
- regex: ';
|
|
3540
|
+
- regex: '; {0,2}(Cynus)[ _](F5|T\d|.{1,200}?) {0,2}(?:Build|[;/\)])'
|
|
3409
3541
|
regex_flag: 'i'
|
|
3410
3542
|
device_replacement: '$1 $2'
|
|
3411
3543
|
brand_replacement: 'Mobistel'
|
|
@@ -3415,12 +3547,12 @@ device_parsers:
|
|
|
3415
3547
|
# Modecom
|
|
3416
3548
|
# @ref: http://www.modecom.eu/tablets/portal/
|
|
3417
3549
|
#########
|
|
3418
|
-
- regex: ';
|
|
3550
|
+
- regex: '; {0,2}(MODECOM |)(FreeTab) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3419
3551
|
regex_flag: 'i'
|
|
3420
3552
|
device_replacement: '$1$2 $3'
|
|
3421
3553
|
brand_replacement: 'Modecom'
|
|
3422
3554
|
model_replacement: '$2 $3'
|
|
3423
|
-
- regex: ';
|
|
3555
|
+
- regex: '; {0,2}(MODECOM )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3424
3556
|
regex_flag: 'i'
|
|
3425
3557
|
device_replacement: '$1 $2'
|
|
3426
3558
|
brand_replacement: 'Modecom'
|
|
@@ -3430,32 +3562,32 @@ device_parsers:
|
|
|
3430
3562
|
# Motorola
|
|
3431
3563
|
# @ref: http://www.motorola.com/us/shop-all-mobile-phones/
|
|
3432
3564
|
#########
|
|
3433
|
-
- regex: ';
|
|
3565
|
+
- regex: '; {0,2}(MZ\d{3}\+?|MZ\d{3} 4G|Xoom|XOOM[^;/]*) Build'
|
|
3434
3566
|
device_replacement: 'Motorola $1'
|
|
3435
3567
|
brand_replacement: 'Motorola'
|
|
3436
3568
|
model_replacement: '$1'
|
|
3437
|
-
- regex: ';
|
|
3569
|
+
- regex: '; {0,2}(Milestone )(XT[^;/]*) Build'
|
|
3438
3570
|
device_replacement: 'Motorola $1$2'
|
|
3439
3571
|
brand_replacement: 'Motorola'
|
|
3440
3572
|
model_replacement: '$2'
|
|
3441
|
-
- regex: ';
|
|
3573
|
+
- regex: '; {0,2}(Motoroi ?x|Droid X|DROIDX) Build'
|
|
3442
3574
|
regex_flag: 'i'
|
|
3443
3575
|
device_replacement: 'Motorola $1'
|
|
3444
3576
|
brand_replacement: 'Motorola'
|
|
3445
3577
|
model_replacement: 'DROID X'
|
|
3446
|
-
- regex: ';
|
|
3578
|
+
- regex: '; {0,2}(Droid[^;/]*|DROID[^;/]*|Milestone[^;/]*|Photon|Triumph|Devour|Titanium) Build'
|
|
3447
3579
|
device_replacement: 'Motorola $1'
|
|
3448
3580
|
brand_replacement: 'Motorola'
|
|
3449
3581
|
model_replacement: '$1'
|
|
3450
|
-
- regex: ';
|
|
3582
|
+
- 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
3583
|
device_replacement: '$1'
|
|
3452
3584
|
brand_replacement: 'Motorola'
|
|
3453
3585
|
model_replacement: '$1'
|
|
3454
|
-
- regex: ';
|
|
3586
|
+
- regex: '; {0,2}(Motorola MOT-|Motorola[ _\-]|MOT\-?)([^;/]{1,100}) Build'
|
|
3455
3587
|
device_replacement: '$1$2'
|
|
3456
3588
|
brand_replacement: 'Motorola'
|
|
3457
3589
|
model_replacement: '$2'
|
|
3458
|
-
- regex: ';
|
|
3590
|
+
- regex: '; {0,2}(Moto[_ ]?|MOT\-)([^;/]{1,100}) Build'
|
|
3459
3591
|
device_replacement: '$1$2'
|
|
3460
3592
|
brand_replacement: 'Motorola'
|
|
3461
3593
|
model_replacement: '$2'
|
|
@@ -3464,7 +3596,7 @@ device_parsers:
|
|
|
3464
3596
|
# MpMan
|
|
3465
3597
|
# @ref: http://www.mpmaneurope.com
|
|
3466
3598
|
#########
|
|
3467
|
-
- regex: ';
|
|
3599
|
+
- 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
3600
|
device_replacement: '$1'
|
|
3469
3601
|
brand_replacement: 'Mpman'
|
|
3470
3602
|
model_replacement: '$1'
|
|
@@ -3473,7 +3605,7 @@ device_parsers:
|
|
|
3473
3605
|
# MSI
|
|
3474
3606
|
# @ref: http://www.msi.com/product/windpad/
|
|
3475
3607
|
#########
|
|
3476
|
-
- regex: ';
|
|
3608
|
+
- regex: '; {0,2}(?:MSI[ _]|)(Primo\d+|Enjoy[ _\-][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3477
3609
|
regex_flag: 'i'
|
|
3478
3610
|
device_replacement: '$1'
|
|
3479
3611
|
brand_replacement: 'Msi'
|
|
@@ -3483,7 +3615,7 @@ device_parsers:
|
|
|
3483
3615
|
# Multilaser
|
|
3484
3616
|
# http://www.multilaser.com.br/listagem_produtos.php?cat=5
|
|
3485
3617
|
#########
|
|
3486
|
-
- regex: ';
|
|
3618
|
+
- regex: '; {0,2}Multilaser[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3487
3619
|
device_replacement: '$1'
|
|
3488
3620
|
brand_replacement: 'Multilaser'
|
|
3489
3621
|
model_replacement: '$1'
|
|
@@ -3492,15 +3624,15 @@ device_parsers:
|
|
|
3492
3624
|
# MyPhone
|
|
3493
3625
|
# @ref: http://myphone.com.ph/
|
|
3494
3626
|
#########
|
|
3495
|
-
- regex: ';
|
|
3627
|
+
- regex: '; {0,2}(My)[_]?(Pad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3496
3628
|
device_replacement: '$1$2 $3'
|
|
3497
3629
|
brand_replacement: 'MyPhone'
|
|
3498
3630
|
model_replacement: '$1$2 $3'
|
|
3499
|
-
- regex: ';
|
|
3631
|
+
- regex: '; {0,2}(My)\|?(Phone)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3500
3632
|
device_replacement: '$1$2 $3'
|
|
3501
3633
|
brand_replacement: 'MyPhone'
|
|
3502
3634
|
model_replacement: '$3'
|
|
3503
|
-
- regex: ';
|
|
3635
|
+
- regex: '; {0,2}(A\d+)[ _](Duo|)(?: Build|\) AppleWebKit)'
|
|
3504
3636
|
regex_flag: 'i'
|
|
3505
3637
|
device_replacement: '$1 $2'
|
|
3506
3638
|
brand_replacement: 'MyPhone'
|
|
@@ -3510,7 +3642,7 @@ device_parsers:
|
|
|
3510
3642
|
# Mytab
|
|
3511
3643
|
# @ref: http://www.mytab.eu/en/category/mytab-products/
|
|
3512
3644
|
#########
|
|
3513
|
-
- regex: ';
|
|
3645
|
+
- regex: '; {0,2}(myTab[^;/]*)(?: Build|\) AppleWebKit)'
|
|
3514
3646
|
device_replacement: '$1'
|
|
3515
3647
|
brand_replacement: 'Mytab'
|
|
3516
3648
|
model_replacement: '$1'
|
|
@@ -3519,7 +3651,7 @@ device_parsers:
|
|
|
3519
3651
|
# Nabi
|
|
3520
3652
|
# @ref: https://www.nabitablet.com
|
|
3521
3653
|
#########
|
|
3522
|
-
- regex: ';
|
|
3654
|
+
- regex: '; {0,2}(NABI2?-)([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3523
3655
|
device_replacement: '$1$2'
|
|
3524
3656
|
brand_replacement: 'Nabi'
|
|
3525
3657
|
model_replacement: '$2'
|
|
@@ -3528,15 +3660,15 @@ device_parsers:
|
|
|
3528
3660
|
# Nec Medias
|
|
3529
3661
|
# @ref: http://www.n-keitai.com/
|
|
3530
3662
|
#########
|
|
3531
|
-
- regex: ';
|
|
3663
|
+
- regex: '; {0,2}(N-\d+[CDE])(?: Build|\) AppleWebKit)'
|
|
3532
3664
|
device_replacement: '$1'
|
|
3533
3665
|
brand_replacement: 'Nec'
|
|
3534
3666
|
model_replacement: '$1'
|
|
3535
|
-
- regex: '; ?(NEC-)(
|
|
3667
|
+
- regex: '; ?(NEC-)(.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
3536
3668
|
device_replacement: '$1$2'
|
|
3537
3669
|
brand_replacement: 'Nec'
|
|
3538
3670
|
model_replacement: '$2'
|
|
3539
|
-
- regex: ';
|
|
3671
|
+
- regex: '; {0,2}(LT-NA7)(?: Build|\) AppleWebKit)'
|
|
3540
3672
|
device_replacement: '$1'
|
|
3541
3673
|
brand_replacement: 'Nec'
|
|
3542
3674
|
model_replacement: 'Lifetouch Note'
|
|
@@ -3545,7 +3677,7 @@ device_parsers:
|
|
|
3545
3677
|
# Nextbook
|
|
3546
3678
|
# @ref: http://nextbookusa.com
|
|
3547
3679
|
#########
|
|
3548
|
-
- regex: ';
|
|
3680
|
+
- 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
3681
|
device_replacement: '$1'
|
|
3550
3682
|
brand_replacement: 'Nextbook'
|
|
3551
3683
|
model_replacement: '$1'
|
|
@@ -3554,12 +3686,12 @@ device_parsers:
|
|
|
3554
3686
|
# Nokia
|
|
3555
3687
|
# @ref: http://www.nokia.com
|
|
3556
3688
|
#########
|
|
3557
|
-
- regex: ';
|
|
3689
|
+
- regex: '; {0,2}(Nokia)([ _\-]{0,5})([^;/]{0,50}) Build'
|
|
3558
3690
|
regex_flag: 'i'
|
|
3559
3691
|
device_replacement: '$1$2$3'
|
|
3560
3692
|
brand_replacement: 'Nokia'
|
|
3561
3693
|
model_replacement: '$3'
|
|
3562
|
-
- regex: ';
|
|
3694
|
+
- regex: '; {0,2}(TA\-\d{4})(?: Build|\) AppleWebKit)'
|
|
3563
3695
|
device_replacement: 'Nokia $1'
|
|
3564
3696
|
brand_replacement: 'Nokia'
|
|
3565
3697
|
model_replacement: '$1'
|
|
@@ -3569,11 +3701,11 @@ device_parsers:
|
|
|
3569
3701
|
# @ref:
|
|
3570
3702
|
# TODO nook browser/1.0
|
|
3571
3703
|
#########
|
|
3572
|
-
- regex: ';
|
|
3704
|
+
- regex: '; {0,2}(Nook ?|Barnes & Noble Nook |BN )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3573
3705
|
device_replacement: '$1$2'
|
|
3574
3706
|
brand_replacement: 'Nook'
|
|
3575
3707
|
model_replacement: '$2'
|
|
3576
|
-
- regex: ';
|
|
3708
|
+
- regex: '; {0,2}(NOOK |)(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2)(?: Build|\) AppleWebKit)'
|
|
3577
3709
|
device_replacement: '$1$2'
|
|
3578
3710
|
brand_replacement: 'Nook'
|
|
3579
3711
|
model_replacement: '$2'
|
|
@@ -3586,7 +3718,7 @@ device_parsers:
|
|
|
3586
3718
|
# Olivetti
|
|
3587
3719
|
# @ref: http://www.olivetti.de/EN/Page/t02/view_html?idp=348
|
|
3588
3720
|
#########
|
|
3589
|
-
- regex: ';
|
|
3721
|
+
- regex: '; {0,2}(OP110|OliPad[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3590
3722
|
device_replacement: 'Olivetti $1'
|
|
3591
3723
|
brand_replacement: 'Olivetti'
|
|
3592
3724
|
model_replacement: '$1'
|
|
@@ -3597,7 +3729,7 @@ device_parsers:
|
|
|
3597
3729
|
# @note: MID tablets might get matched by CobyKyros first
|
|
3598
3730
|
# @models: (T107|MID(?:700[2-5]|7031|7108|7132|750[02]|8001|8500|9001|971[12])
|
|
3599
3731
|
#########
|
|
3600
|
-
- regex: ';
|
|
3732
|
+
- regex: '; {0,2}OMEGA[ _\-](MID[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3601
3733
|
device_replacement: 'Omega $1'
|
|
3602
3734
|
brand_replacement: 'Omega'
|
|
3603
3735
|
model_replacement: '$1'
|
|
@@ -3610,7 +3742,7 @@ device_parsers:
|
|
|
3610
3742
|
# OpenPeak
|
|
3611
3743
|
# @ref: https://support.google.com/googleplay/answer/1727131?hl=en
|
|
3612
3744
|
#########
|
|
3613
|
-
- regex: ';
|
|
3745
|
+
- regex: '; {0,2}((?:CIUS|cius)[^;/]*)(?: Build|\) AppleWebKit)'
|
|
3614
3746
|
device_replacement: 'Openpeak $1'
|
|
3615
3747
|
brand_replacement: 'Openpeak'
|
|
3616
3748
|
model_replacement: '$1'
|
|
@@ -3619,18 +3751,18 @@ device_parsers:
|
|
|
3619
3751
|
# Oppo
|
|
3620
3752
|
# @ref: http://en.oppo.com/products/
|
|
3621
3753
|
#########
|
|
3622
|
-
- regex: ';
|
|
3754
|
+
- 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
3755
|
device_replacement: 'Oppo $1'
|
|
3624
3756
|
brand_replacement: 'Oppo'
|
|
3625
3757
|
model_replacement: '$1'
|
|
3626
|
-
- regex: ';
|
|
3758
|
+
- regex: '; {0,2}OPPO ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3627
3759
|
device_replacement: 'Oppo $1'
|
|
3628
3760
|
brand_replacement: 'Oppo'
|
|
3629
3761
|
model_replacement: '$1'
|
|
3630
|
-
- regex: ';
|
|
3762
|
+
- regex: '; {0,2}(CPH\d{1,4}|RMX\d{1,4}|P[A-Z]{3}\d{2})(?: Build|\) AppleWebKit)'
|
|
3631
3763
|
device_replacement: 'Oppo $1'
|
|
3632
3764
|
brand_replacement: 'Oppo'
|
|
3633
|
-
- regex: ';
|
|
3765
|
+
- regex: '; {0,2}(A1601)(?: Build|\) AppleWebKit)'
|
|
3634
3766
|
device_replacement: 'Oppo F1s'
|
|
3635
3767
|
brand_replacement: 'Oppo'
|
|
3636
3768
|
model_replacement: '$1'
|
|
@@ -3639,20 +3771,20 @@ device_parsers:
|
|
|
3639
3771
|
# Odys
|
|
3640
3772
|
# @ref: http://odys.de
|
|
3641
3773
|
#########
|
|
3642
|
-
- regex: ';
|
|
3774
|
+
- regex: '; {0,2}(?:Odys\-|ODYS\-|ODYS )([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3643
3775
|
device_replacement: 'Odys $1'
|
|
3644
3776
|
brand_replacement: 'Odys'
|
|
3645
3777
|
model_replacement: '$1'
|
|
3646
|
-
- regex: ';
|
|
3778
|
+
- regex: '; {0,2}(SELECT) ?(7)(?: Build|\) AppleWebKit)'
|
|
3647
3779
|
device_replacement: 'Odys $1 $2'
|
|
3648
3780
|
brand_replacement: 'Odys'
|
|
3649
3781
|
model_replacement: '$1 $2'
|
|
3650
|
-
- regex: ';
|
|
3782
|
+
- regex: '; {0,2}(PEDI)_(PLUS)_(W)(?: Build|\) AppleWebKit)'
|
|
3651
3783
|
device_replacement: 'Odys $1 $2 $3'
|
|
3652
3784
|
brand_replacement: 'Odys'
|
|
3653
3785
|
model_replacement: '$1 $2 $3'
|
|
3654
3786
|
# Weltbild - Tablet PC 4 = Cat Phoenix = Odys Tablet PC 4?
|
|
3655
|
-
- regex: ';
|
|
3787
|
+
- 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
3788
|
device_replacement: 'Odys $1'
|
|
3657
3789
|
brand_replacement: 'Odys'
|
|
3658
3790
|
model_replacement: '$1'
|
|
@@ -3674,7 +3806,7 @@ device_parsers:
|
|
|
3674
3806
|
# Orion
|
|
3675
3807
|
# @ref: http://www.orion.ua/en/products/computer-products/tablet-pcs.html
|
|
3676
3808
|
#########
|
|
3677
|
-
- regex: ';
|
|
3809
|
+
- regex: '; {0,2}(TP-\d+)(?: Build|\) AppleWebKit)'
|
|
3678
3810
|
device_replacement: 'Orion $1'
|
|
3679
3811
|
brand_replacement: 'Orion'
|
|
3680
3812
|
model_replacement: '$1'
|
|
@@ -3683,7 +3815,7 @@ device_parsers:
|
|
|
3683
3815
|
# PackardBell
|
|
3684
3816
|
# @ref: http://www.packardbell.com/pb/en/AE/content/productgroup/tablets
|
|
3685
3817
|
#########
|
|
3686
|
-
- regex: ';
|
|
3818
|
+
- regex: '; {0,2}(G100W?)(?: Build|\) AppleWebKit)'
|
|
3687
3819
|
device_replacement: 'PackardBell $1'
|
|
3688
3820
|
brand_replacement: 'PackardBell'
|
|
3689
3821
|
model_replacement: '$1'
|
|
@@ -3694,17 +3826,17 @@ device_parsers:
|
|
|
3694
3826
|
# @models: T11, T21, T31, P11, P51, Eluga Power, Eluga DL1
|
|
3695
3827
|
# @models: (tab) Toughpad FZ-A1, Toughpad JT-B1
|
|
3696
3828
|
#########
|
|
3697
|
-
- regex: ';
|
|
3829
|
+
- regex: '; {0,2}(Panasonic)[_ ]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3698
3830
|
device_replacement: '$1 $2'
|
|
3699
3831
|
brand_replacement: '$1'
|
|
3700
3832
|
model_replacement: '$2'
|
|
3701
3833
|
# Toughpad
|
|
3702
|
-
- regex: ';
|
|
3834
|
+
- regex: '; {0,2}(FZ-A1B|JT-B1)(?: Build|\) AppleWebKit)'
|
|
3703
3835
|
device_replacement: 'Panasonic $1'
|
|
3704
3836
|
brand_replacement: 'Panasonic'
|
|
3705
3837
|
model_replacement: '$1'
|
|
3706
3838
|
# Eluga Power
|
|
3707
|
-
- regex: ';
|
|
3839
|
+
- regex: '; {0,2}(dL1|DL1)(?: Build|\) AppleWebKit)'
|
|
3708
3840
|
device_replacement: 'Panasonic $1'
|
|
3709
3841
|
brand_replacement: 'Panasonic'
|
|
3710
3842
|
model_replacement: '$1'
|
|
@@ -3715,15 +3847,15 @@ device_parsers:
|
|
|
3715
3847
|
# @href: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA
|
|
3716
3848
|
# @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
3849
|
#########
|
|
3718
|
-
- regex: ';
|
|
3850
|
+
- regex: '; {0,2}(SKY[ _]|)(IM\-[AT]\d{3}[^;/]{1,100}).{0,30} Build/'
|
|
3719
3851
|
device_replacement: 'Pantech $1$2'
|
|
3720
3852
|
brand_replacement: 'Pantech'
|
|
3721
3853
|
model_replacement: '$1$2'
|
|
3722
|
-
- regex: ';
|
|
3854
|
+
- regex: '; {0,2}((?:ADR8995|ADR910L|ADR930L|ADR930VW|PTL21|P8000)(?: 4G|)) Build/'
|
|
3723
3855
|
device_replacement: '$1'
|
|
3724
3856
|
brand_replacement: 'Pantech'
|
|
3725
3857
|
model_replacement: '$1'
|
|
3726
|
-
- regex: ';
|
|
3858
|
+
- regex: '; {0,2}Pantech([^;/]{1,30}).{0,200}? Build/'
|
|
3727
3859
|
device_replacement: 'Pantech $1'
|
|
3728
3860
|
brand_replacement: 'Pantech'
|
|
3729
3861
|
model_replacement: '$1'
|
|
@@ -3732,7 +3864,7 @@ device_parsers:
|
|
|
3732
3864
|
# Papayre
|
|
3733
3865
|
# @ref: http://grammata.es/
|
|
3734
3866
|
#########
|
|
3735
|
-
- regex: ';
|
|
3867
|
+
- regex: '; {0,2}(papyre)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3736
3868
|
regex_flag: 'i'
|
|
3737
3869
|
device_replacement: '$1 $2'
|
|
3738
3870
|
brand_replacement: 'Papyre'
|
|
@@ -3742,7 +3874,7 @@ device_parsers:
|
|
|
3742
3874
|
# Pearl
|
|
3743
3875
|
# @ref: http://www.pearl.de/c-1540.shtml
|
|
3744
3876
|
#########
|
|
3745
|
-
- regex: ';
|
|
3877
|
+
- regex: '; {0,2}(?:Touchlet )?(X10\.[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3746
3878
|
device_replacement: 'Pearl $1'
|
|
3747
3879
|
brand_replacement: 'Pearl'
|
|
3748
3880
|
model_replacement: '$1'
|
|
@@ -3755,11 +3887,11 @@ device_parsers:
|
|
|
3755
3887
|
device_replacement: 'Phicomm $1'
|
|
3756
3888
|
brand_replacement: 'Phicomm'
|
|
3757
3889
|
model_replacement: '$1'
|
|
3758
|
-
- regex: '; PHICOMM ([^;/]
|
|
3890
|
+
- regex: '; PHICOMM ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3759
3891
|
device_replacement: 'Phicomm $1'
|
|
3760
3892
|
brand_replacement: 'Phicomm'
|
|
3761
3893
|
model_replacement: '$1'
|
|
3762
|
-
- regex: ';
|
|
3894
|
+
- regex: '; {0,2}(FWS\d{3}[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3763
3895
|
device_replacement: 'Phicomm $1'
|
|
3764
3896
|
brand_replacement: 'Phicomm'
|
|
3765
3897
|
model_replacement: '$1'
|
|
@@ -3771,11 +3903,11 @@ device_parsers:
|
|
|
3771
3903
|
# @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
3904
|
#########
|
|
3773
3905
|
# @note: this a best guess according to available philips models. Need more User-Agents
|
|
3774
|
-
- regex: ';
|
|
3906
|
+
- 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
3907
|
device_replacement: '$1'
|
|
3776
3908
|
brand_replacement: 'Philips'
|
|
3777
3909
|
model_replacement: '$1'
|
|
3778
|
-
- regex: ';
|
|
3910
|
+
- regex: '; {0,2}(?:Philips|PHILIPS)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3779
3911
|
device_replacement: 'Philips $1'
|
|
3780
3912
|
brand_replacement: 'Philips'
|
|
3781
3913
|
model_replacement: '$1'
|
|
@@ -3784,7 +3916,7 @@ device_parsers:
|
|
|
3784
3916
|
# Pipo
|
|
3785
3917
|
# @ref: http://www.pipo.cn/En/
|
|
3786
3918
|
#########
|
|
3787
|
-
- regex: 'Android 4
|
|
3919
|
+
- regex: 'Android 4\..{0,200}; {0,2}(M[12356789]|U[12368]|S[123])\ ?(pro)?(?: Build|\) AppleWebKit)'
|
|
3788
3920
|
device_replacement: 'Pipo $1$2'
|
|
3789
3921
|
brand_replacement: 'Pipo'
|
|
3790
3922
|
model_replacement: '$1$2'
|
|
@@ -3793,7 +3925,7 @@ device_parsers:
|
|
|
3793
3925
|
# Ployer
|
|
3794
3926
|
# @ref: http://en.ployer.cn/
|
|
3795
3927
|
#########
|
|
3796
|
-
- regex: ';
|
|
3928
|
+
- regex: '; {0,2}(MOMO[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3797
3929
|
device_replacement: '$1'
|
|
3798
3930
|
brand_replacement: 'Ployer'
|
|
3799
3931
|
model_replacement: '$1'
|
|
@@ -3802,11 +3934,11 @@ device_parsers:
|
|
|
3802
3934
|
# Polaroid/ Acho
|
|
3803
3935
|
# @ref: http://polaroidstore.com/store/start.asp?category_id=382&category_id2=0&order=title&filter1=&filter2=&filter3=&view=all
|
|
3804
3936
|
#########
|
|
3805
|
-
- regex: ';
|
|
3937
|
+
- regex: '; {0,2}(?:Polaroid[ _]|)((?:MIDC\d{3,}|PMID\d{2,}|PTAB\d{3,})[^;/]{0,30}?)(\/[^;/]{0,30}|)(?: Build|\) AppleWebKit)'
|
|
3806
3938
|
device_replacement: '$1'
|
|
3807
3939
|
brand_replacement: 'Polaroid'
|
|
3808
3940
|
model_replacement: '$1'
|
|
3809
|
-
- regex: ';
|
|
3941
|
+
- regex: '; {0,2}(?:Polaroid )(Tablet)(?: Build|\) AppleWebKit)'
|
|
3810
3942
|
device_replacement: '$1'
|
|
3811
3943
|
brand_replacement: 'Polaroid'
|
|
3812
3944
|
model_replacement: '$1'
|
|
@@ -3816,7 +3948,7 @@ device_parsers:
|
|
|
3816
3948
|
# @ref: http://pompmobileshop.com/
|
|
3817
3949
|
#########
|
|
3818
3950
|
#~ TODO
|
|
3819
|
-
- regex: ';
|
|
3951
|
+
- regex: '; {0,2}(POMP)[ _\-](.{1,200}?) {0,2}(?:Build|[;/\)])'
|
|
3820
3952
|
device_replacement: '$1 $2'
|
|
3821
3953
|
brand_replacement: 'Pomp'
|
|
3822
3954
|
model_replacement: '$2'
|
|
@@ -3825,11 +3957,11 @@ device_parsers:
|
|
|
3825
3957
|
# Positivo
|
|
3826
3958
|
# @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
|
|
3827
3959
|
#########
|
|
3828
|
-
- regex: ';
|
|
3960
|
+
- regex: '; {0,2}(TB07STA|TB10STA|TB07FTA|TB10FTA)(?: Build|\) AppleWebKit)'
|
|
3829
3961
|
device_replacement: '$1'
|
|
3830
3962
|
brand_replacement: 'Positivo'
|
|
3831
3963
|
model_replacement: '$1'
|
|
3832
|
-
- regex: ';
|
|
3964
|
+
- regex: '; {0,2}(?:Positivo |)((?:YPY|Ypy)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3833
3965
|
device_replacement: '$1'
|
|
3834
3966
|
brand_replacement: 'Positivo'
|
|
3835
3967
|
model_replacement: '$1'
|
|
@@ -3839,15 +3971,15 @@ device_parsers:
|
|
|
3839
3971
|
# @ref: http://www.pointofview-online.com/default2.php
|
|
3840
3972
|
# @TODO: Smartphone Models MOB-3515, MOB-5045-B missing
|
|
3841
3973
|
#########
|
|
3842
|
-
- regex: ';
|
|
3974
|
+
- regex: '; {0,2}(MOB-[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3843
3975
|
device_replacement: '$1'
|
|
3844
3976
|
brand_replacement: 'POV'
|
|
3845
3977
|
model_replacement: '$1'
|
|
3846
|
-
- regex: ';
|
|
3978
|
+
- regex: '; {0,2}POV[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3847
3979
|
device_replacement: 'POV $1'
|
|
3848
3980
|
brand_replacement: 'POV'
|
|
3849
3981
|
model_replacement: '$1'
|
|
3850
|
-
- regex: ';
|
|
3982
|
+
- regex: '; {0,2}((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\-]|TAB-P)[^;/]*)(?: Build|\) AppleWebKit)'
|
|
3851
3983
|
device_replacement: 'POV $1'
|
|
3852
3984
|
brand_replacement: 'POV'
|
|
3853
3985
|
model_replacement: '$1'
|
|
@@ -3857,7 +3989,7 @@ device_parsers:
|
|
|
3857
3989
|
# @ref: http://www.prestigio.com/catalogue/MultiPhones
|
|
3858
3990
|
# @ref: http://www.prestigio.com/catalogue/MultiPads
|
|
3859
3991
|
#########
|
|
3860
|
-
- regex: ';
|
|
3992
|
+
- regex: '; {0,2}(?:Prestigio |)((?:PAP|PMP)\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3861
3993
|
device_replacement: 'Prestigio $1'
|
|
3862
3994
|
brand_replacement: 'Prestigio'
|
|
3863
3995
|
model_replacement: '$1'
|
|
@@ -3866,7 +3998,7 @@ device_parsers:
|
|
|
3866
3998
|
# Proscan
|
|
3867
3999
|
# @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
|
|
3868
4000
|
#########
|
|
3869
|
-
- regex: ';
|
|
4001
|
+
- regex: '; {0,2}(PLT[0-9]{4}.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
3870
4002
|
device_replacement: '$1'
|
|
3871
4003
|
brand_replacement: 'Proscan'
|
|
3872
4004
|
model_replacement: '$1'
|
|
@@ -3875,15 +4007,15 @@ device_parsers:
|
|
|
3875
4007
|
# QMobile
|
|
3876
4008
|
# @ref: http://www.qmobile.com.pk/
|
|
3877
4009
|
#########
|
|
3878
|
-
- regex: ';
|
|
4010
|
+
- regex: '; {0,2}(A2|A5|A8|A900)_?(Classic|)(?: Build|\) AppleWebKit)'
|
|
3879
4011
|
device_replacement: '$1 $2'
|
|
3880
4012
|
brand_replacement: 'Qmobile'
|
|
3881
4013
|
model_replacement: '$1 $2'
|
|
3882
|
-
- regex: ';
|
|
4014
|
+
- regex: '; {0,2}(Q[Mm]obile)_([^_]+)_([^_]+?)(?: Build|\) AppleWebKit)'
|
|
3883
4015
|
device_replacement: 'Qmobile $2 $3'
|
|
3884
4016
|
brand_replacement: 'Qmobile'
|
|
3885
4017
|
model_replacement: '$2 $3'
|
|
3886
|
-
- regex: ';
|
|
4018
|
+
- regex: '; {0,2}(Q\-?[Mm]obile)[_ ](A[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3887
4019
|
device_replacement: 'Qmobile $2'
|
|
3888
4020
|
brand_replacement: 'Qmobile'
|
|
3889
4021
|
model_replacement: '$2'
|
|
@@ -3892,11 +4024,11 @@ device_parsers:
|
|
|
3892
4024
|
# Qmobilevn
|
|
3893
4025
|
# @ref: http://qmobile.vn/san-pham.html
|
|
3894
4026
|
#########
|
|
3895
|
-
- regex: ';
|
|
4027
|
+
- regex: '; {0,2}(Q\-Smart)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3896
4028
|
device_replacement: '$1 $2'
|
|
3897
4029
|
brand_replacement: 'Qmobilevn'
|
|
3898
4030
|
model_replacement: '$2'
|
|
3899
|
-
- regex: ';
|
|
4031
|
+
- regex: '; {0,2}(Q\-?[Mm]obile)[ _\-](S[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
3900
4032
|
device_replacement: '$1 $2'
|
|
3901
4033
|
brand_replacement: 'Qmobilevn'
|
|
3902
4034
|
model_replacement: '$2'
|
|
@@ -3905,7 +4037,7 @@ device_parsers:
|
|
|
3905
4037
|
# Quanta
|
|
3906
4038
|
# @ref: ?
|
|
3907
4039
|
#########
|
|
3908
|
-
- regex: ';
|
|
4040
|
+
- regex: '; {0,2}(TA1013)(?: Build|\) AppleWebKit)'
|
|
3909
4041
|
device_replacement: '$1'
|
|
3910
4042
|
brand_replacement: 'Quanta'
|
|
3911
4043
|
model_replacement: '$1'
|
|
@@ -3928,7 +4060,7 @@ device_parsers:
|
|
|
3928
4060
|
# @ref: http://www.rock-chips.com/a/cn/product/index.html
|
|
3929
4061
|
# @note: manufacturer sells chipsets - I assume that these UAs are dev-boards
|
|
3930
4062
|
#########
|
|
3931
|
-
- regex: ';
|
|
4063
|
+
- regex: '; {0,2}(RK\d+),?(?: Build|\) AppleWebKit)'
|
|
3932
4064
|
device_replacement: '$1'
|
|
3933
4065
|
brand_replacement: 'Rockchip'
|
|
3934
4066
|
model_replacement: '$1'
|
|
@@ -3941,55 +4073,55 @@ device_parsers:
|
|
|
3941
4073
|
# Samsung Android Devices
|
|
3942
4074
|
# @ref: http://www.samsung.com/us/mobile/cell-phones/all-products
|
|
3943
4075
|
#########
|
|
3944
|
-
- regex: ';
|
|
4076
|
+
- 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
4077
|
device_replacement: 'Samsung $1$2'
|
|
3946
4078
|
brand_replacement: 'Samsung'
|
|
3947
4079
|
model_replacement: '$2'
|
|
3948
|
-
- regex: ';
|
|
4080
|
+
- regex: '; {0,2}(Google |)(Nexus [Ss](?: 4G|)) Build/'
|
|
3949
4081
|
device_replacement: 'Samsung $1$2'
|
|
3950
4082
|
brand_replacement: 'Samsung'
|
|
3951
4083
|
model_replacement: '$2'
|
|
3952
|
-
- regex: ';
|
|
4084
|
+
- regex: '; {0,2}(SAMSUNG |Samsung )([^\/]{0,50})\/[^ ]{0,50} Build/'
|
|
3953
4085
|
device_replacement: 'Samsung $2'
|
|
3954
4086
|
brand_replacement: 'Samsung'
|
|
3955
4087
|
model_replacement: '$2'
|
|
3956
|
-
- regex: ';
|
|
4088
|
+
- regex: '; {0,2}(Galaxy(?: Ace| Nexus| S ?II+|Nexus S| with MCR 1.2| Mini Plus 4G|)) Build/'
|
|
3957
4089
|
device_replacement: 'Samsung $1'
|
|
3958
4090
|
brand_replacement: 'Samsung'
|
|
3959
4091
|
model_replacement: '$1'
|
|
3960
|
-
- regex: ';
|
|
4092
|
+
- regex: '; {0,2}(SAMSUNG[ _\-]|)(?:SAMSUNG[ _\-])([^;/]{1,100}) Build'
|
|
3961
4093
|
device_replacement: 'Samsung $2'
|
|
3962
4094
|
brand_replacement: 'Samsung'
|
|
3963
4095
|
model_replacement: '$2'
|
|
3964
|
-
- regex: ';
|
|
4096
|
+
- regex: '; {0,2}(SAMSUNG-|)(GT\-[BINPS]\d{4}[^\/]{0,50})(\/[^ ]{0,50}) Build'
|
|
3965
4097
|
device_replacement: 'Samsung $1$2$3'
|
|
3966
4098
|
brand_replacement: 'Samsung'
|
|
3967
4099
|
model_replacement: '$2'
|
|
3968
|
-
- regex: '(?:;
|
|
4100
|
+
- regex: '(?:; {0,2}|^)((?:GT\-[BIiNPS]\d{4}|I9\d{2}0[A-Za-z\+]?\b)[^;/\)]*?)(?:Build|Linux|MIUI|[;/\)])'
|
|
3969
4101
|
device_replacement: 'Samsung $1'
|
|
3970
4102
|
brand_replacement: 'Samsung'
|
|
3971
4103
|
model_replacement: '$1'
|
|
3972
|
-
- regex: '; (SAMSUNG-)([A-Za-z0-9\-]
|
|
4104
|
+
- regex: '; (SAMSUNG-)([A-Za-z0-9\-]{0,50}).{0,200} Build/'
|
|
3973
4105
|
device_replacement: 'Samsung $1$2'
|
|
3974
4106
|
brand_replacement: 'Samsung'
|
|
3975
4107
|
model_replacement: '$2'
|
|
3976
|
-
- regex: ';
|
|
4108
|
+
- regex: '; {0,2}((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\-[A-Za-z0-9 ]{1,50})(/?[^ ]*|) Build'
|
|
3977
4109
|
device_replacement: 'Samsung $1'
|
|
3978
4110
|
brand_replacement: 'Samsung'
|
|
3979
4111
|
model_replacement: '$1'
|
|
3980
|
-
- regex: ';
|
|
4112
|
+
- regex: '; {0,2}((?:SC)\-[A-Za-z0-9 ]{1,50})(/?[^ ]*|)\)'
|
|
3981
4113
|
device_replacement: 'Samsung $1'
|
|
3982
4114
|
brand_replacement: 'Samsung'
|
|
3983
4115
|
model_replacement: '$1'
|
|
3984
|
-
- regex: ' ((?:SCH)\-[A-Za-z0-9 ]
|
|
4116
|
+
- regex: ' ((?:SCH)\-[A-Za-z0-9 ]{1,50})(/?[^ ]*|) Build'
|
|
3985
4117
|
device_replacement: 'Samsung $1'
|
|
3986
4118
|
brand_replacement: 'Samsung'
|
|
3987
4119
|
model_replacement: '$1'
|
|
3988
|
-
- regex: ';
|
|
4120
|
+
- regex: '; {0,2}(Behold ?(?:2|II)|YP\-G[^;/]{1,100}|EK-GC100|SCL21|I9300) Build'
|
|
3989
4121
|
device_replacement: 'Samsung $1'
|
|
3990
4122
|
brand_replacement: 'Samsung'
|
|
3991
4123
|
model_replacement: '$1'
|
|
3992
|
-
- regex: ';
|
|
4124
|
+
- regex: '; {0,2}((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\-[A-Za-z0-9]{5,6})[\)]'
|
|
3993
4125
|
device_replacement: 'Samsung $1'
|
|
3994
4126
|
brand_replacement: 'Samsung'
|
|
3995
4127
|
model_replacement: '$1'
|
|
@@ -3999,11 +4131,11 @@ device_parsers:
|
|
|
3999
4131
|
# @ref: http://www.sharp-phone.com/en/index.html
|
|
4000
4132
|
# @ref: http://www.android.com/devices/?country=all&m=sharp
|
|
4001
4133
|
#########
|
|
4002
|
-
- regex: ';
|
|
4134
|
+
- regex: '; {0,2}(SH\-?\d\d[^;/]{1,100}|SBM\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4003
4135
|
device_replacement: '$1'
|
|
4004
4136
|
brand_replacement: 'Sharp'
|
|
4005
4137
|
model_replacement: '$1'
|
|
4006
|
-
- regex: ';
|
|
4138
|
+
- regex: '; {0,2}(SHARP[ -])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4007
4139
|
device_replacement: '$1$2'
|
|
4008
4140
|
brand_replacement: 'Sharp'
|
|
4009
4141
|
model_replacement: '$2'
|
|
@@ -4012,15 +4144,15 @@ device_parsers:
|
|
|
4012
4144
|
# Simvalley
|
|
4013
4145
|
# @ref: http://www.simvalley-mobile.de/
|
|
4014
4146
|
#########
|
|
4015
|
-
- regex: ';
|
|
4147
|
+
- regex: '; {0,2}(SPX[_\-]\d[^;/]*)(?: Build|\) AppleWebKit)'
|
|
4016
4148
|
device_replacement: '$1'
|
|
4017
4149
|
brand_replacement: 'Simvalley'
|
|
4018
4150
|
model_replacement: '$1'
|
|
4019
|
-
- regex: ';
|
|
4151
|
+
- regex: '; {0,2}(SX7\-PEARL\.GmbH)(?: Build|\) AppleWebKit)'
|
|
4020
4152
|
device_replacement: '$1'
|
|
4021
4153
|
brand_replacement: 'Simvalley'
|
|
4022
4154
|
model_replacement: '$1'
|
|
4023
|
-
- regex: ';
|
|
4155
|
+
- regex: '; {0,2}(SP[T]?\-\d{2}[^;/]*)(?: Build|\) AppleWebKit)'
|
|
4024
4156
|
device_replacement: '$1'
|
|
4025
4157
|
brand_replacement: 'Simvalley'
|
|
4026
4158
|
model_replacement: '$1'
|
|
@@ -4030,7 +4162,7 @@ device_parsers:
|
|
|
4030
4162
|
# @ref: http://www.sk-w.com/phone/phone_list.jsp
|
|
4031
4163
|
# @ref: http://www.android.com/devices/?country=all&m=sk-telesys
|
|
4032
4164
|
#########
|
|
4033
|
-
- regex: ';
|
|
4165
|
+
- regex: '; {0,2}(SK\-.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
4034
4166
|
device_replacement: '$1'
|
|
4035
4167
|
brand_replacement: 'SKtelesys'
|
|
4036
4168
|
model_replacement: '$1'
|
|
@@ -4039,11 +4171,11 @@ device_parsers:
|
|
|
4039
4171
|
# Skytex
|
|
4040
4172
|
# @ref: http://skytex.com/android
|
|
4041
4173
|
#########
|
|
4042
|
-
- regex: ';
|
|
4174
|
+
- regex: '; {0,2}(?:SKYTEX|SX)-([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4043
4175
|
device_replacement: '$1'
|
|
4044
4176
|
brand_replacement: 'Skytex'
|
|
4045
4177
|
model_replacement: '$1'
|
|
4046
|
-
- regex: ';
|
|
4178
|
+
- regex: '; {0,2}(IMAGINE [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4047
4179
|
device_replacement: '$1'
|
|
4048
4180
|
brand_replacement: 'Skytex'
|
|
4049
4181
|
model_replacement: '$1'
|
|
@@ -4053,7 +4185,7 @@ device_parsers:
|
|
|
4053
4185
|
# @ref: http://en.smartdevices.com.cn/Products/
|
|
4054
4186
|
# @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
4187
|
#########
|
|
4056
|
-
- regex: ';
|
|
4188
|
+
- regex: '; {0,2}(SmartQ) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4057
4189
|
device_replacement: '$1 $2'
|
|
4058
4190
|
brand_replacement: '$1'
|
|
4059
4191
|
model_replacement: '$2'
|
|
@@ -4063,7 +4195,7 @@ device_parsers:
|
|
|
4063
4195
|
# @ref: http://www.smartbitt.com/
|
|
4064
4196
|
# @missing: SBT Useragents
|
|
4065
4197
|
#########
|
|
4066
|
-
- regex: ';
|
|
4198
|
+
- regex: '; {0,2}(WF7C|WF10C|SBT[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4067
4199
|
device_replacement: '$1'
|
|
4068
4200
|
brand_replacement: 'Smartbitt'
|
|
4069
4201
|
model_replacement: '$1'
|
|
@@ -4072,15 +4204,15 @@ device_parsers:
|
|
|
4072
4204
|
# Softbank (Operator Branded Devices)
|
|
4073
4205
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
|
4074
4206
|
#########
|
|
4075
|
-
- regex: ';
|
|
4207
|
+
- regex: '; {0,2}(SBM(?:003SH|005SH|006SH|007SH|102SH)) Build'
|
|
4076
4208
|
device_replacement: '$1'
|
|
4077
4209
|
brand_replacement: 'Sharp'
|
|
4078
4210
|
model_replacement: '$1'
|
|
4079
|
-
- regex: ';
|
|
4211
|
+
- regex: '; {0,2}(003P|101P|101P11C|102P) Build'
|
|
4080
4212
|
device_replacement: '$1'
|
|
4081
4213
|
brand_replacement: 'Panasonic'
|
|
4082
4214
|
model_replacement: '$1'
|
|
4083
|
-
- regex: ';
|
|
4215
|
+
- regex: '; {0,2}(00\dZ) Build/'
|
|
4084
4216
|
device_replacement: '$1'
|
|
4085
4217
|
brand_replacement: 'ZTE'
|
|
4086
4218
|
model_replacement: '$1'
|
|
@@ -4088,11 +4220,11 @@ device_parsers:
|
|
|
4088
4220
|
device_replacement: '$1'
|
|
4089
4221
|
brand_replacement: 'HTC'
|
|
4090
4222
|
model_replacement: '$1'
|
|
4091
|
-
- regex: ';
|
|
4223
|
+
- regex: '; {0,2}(001HT|X06HT) Build'
|
|
4092
4224
|
device_replacement: '$1'
|
|
4093
4225
|
brand_replacement: 'HTC'
|
|
4094
4226
|
model_replacement: '$1'
|
|
4095
|
-
- regex: ';
|
|
4227
|
+
- regex: '; {0,2}(201M) Build'
|
|
4096
4228
|
device_replacement: '$1'
|
|
4097
4229
|
brand_replacement: 'Motorola'
|
|
4098
4230
|
model_replacement: 'XT902'
|
|
@@ -4102,11 +4234,11 @@ device_parsers:
|
|
|
4102
4234
|
# @ref: http://www.trekstor.co.uk/surftabs-en.html
|
|
4103
4235
|
# @note: Must come before SonyEricsson
|
|
4104
4236
|
#########
|
|
4105
|
-
- regex: ';
|
|
4237
|
+
- regex: '; {0,2}(ST\d{4}.{0,200})Build/ST'
|
|
4106
4238
|
device_replacement: 'Trekstor $1'
|
|
4107
4239
|
brand_replacement: 'Trekstor'
|
|
4108
4240
|
model_replacement: '$1'
|
|
4109
|
-
- regex: ';
|
|
4241
|
+
- regex: '; {0,2}(ST\d{4}.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
4110
4242
|
device_replacement: 'Trekstor $1'
|
|
4111
4243
|
brand_replacement: 'Trekstor'
|
|
4112
4244
|
model_replacement: '$1'
|
|
@@ -4118,16 +4250,16 @@ device_parsers:
|
|
|
4118
4250
|
# @TODO: type!
|
|
4119
4251
|
#########
|
|
4120
4252
|
# android matchers
|
|
4121
|
-
- regex: ';
|
|
4253
|
+
- regex: '; {0,2}(Sony ?Ericsson ?)([^;/]{1,100}) Build'
|
|
4122
4254
|
device_replacement: '$1$2'
|
|
4123
4255
|
brand_replacement: 'SonyEricsson'
|
|
4124
4256
|
model_replacement: '$2'
|
|
4125
|
-
- regex: ';
|
|
4257
|
+
- regex: '; {0,2}((?:SK|ST|E|X|LT|MK|MT|WT)\d{2}[a-z0-9]*(?:-o|)|R800i|U20i) Build'
|
|
4126
4258
|
device_replacement: '$1'
|
|
4127
4259
|
brand_replacement: 'SonyEricsson'
|
|
4128
4260
|
model_replacement: '$1'
|
|
4129
4261
|
# TODO X\d+ is wrong
|
|
4130
|
-
- regex: ';
|
|
4262
|
+
- regex: '; {0,2}(Xperia (?:A8|Arc|Acro|Active|Live with Walkman|Mini|Neo|Play|Pro|Ray|X\d+)[^;/]{0,50}) Build'
|
|
4131
4263
|
regex_flag: 'i'
|
|
4132
4264
|
device_replacement: '$1'
|
|
4133
4265
|
brand_replacement: 'SonyEricsson'
|
|
@@ -4139,31 +4271,31 @@ device_parsers:
|
|
|
4139
4271
|
# @ref: http://www.sonymobile.com/global-en/products/phones/
|
|
4140
4272
|
# @ref: http://www.sony.jp/tablet/
|
|
4141
4273
|
#########
|
|
4142
|
-
- regex: '; Sony (Tablet[^;/]
|
|
4274
|
+
- regex: '; Sony (Tablet[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4143
4275
|
device_replacement: 'Sony $1'
|
|
4144
4276
|
brand_replacement: 'Sony'
|
|
4145
4277
|
model_replacement: '$1'
|
|
4146
|
-
- regex: '; Sony ([^;/]
|
|
4278
|
+
- regex: '; Sony ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4147
4279
|
device_replacement: 'Sony $1'
|
|
4148
4280
|
brand_replacement: 'Sony'
|
|
4149
4281
|
model_replacement: '$1'
|
|
4150
|
-
- regex: ';
|
|
4282
|
+
- regex: '; {0,2}(Sony)([A-Za-z0-9\-]+)(?: Build|\) AppleWebKit)'
|
|
4151
4283
|
device_replacement: '$1 $2'
|
|
4152
4284
|
brand_replacement: '$1'
|
|
4153
4285
|
model_replacement: '$2'
|
|
4154
|
-
- regex: ';
|
|
4286
|
+
- regex: '; {0,2}(Xperia [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4155
4287
|
device_replacement: '$1'
|
|
4156
4288
|
brand_replacement: 'Sony'
|
|
4157
4289
|
model_replacement: '$1'
|
|
4158
|
-
- regex: ';
|
|
4290
|
+
- 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
4291
|
device_replacement: '$1'
|
|
4160
4292
|
brand_replacement: 'Sony'
|
|
4161
4293
|
model_replacement: '$1'
|
|
4162
|
-
- regex: ';
|
|
4294
|
+
- regex: '; {0,2}(SGP\d{3}|SGPT\d{2})(?: Build|\) AppleWebKit)'
|
|
4163
4295
|
device_replacement: '$1'
|
|
4164
4296
|
brand_replacement: 'Sony'
|
|
4165
4297
|
model_replacement: '$1'
|
|
4166
|
-
- regex: ';
|
|
4298
|
+
- regex: '; {0,2}(NW-Z1000Series)(?: Build|\) AppleWebKit)'
|
|
4167
4299
|
device_replacement: '$1'
|
|
4168
4300
|
brand_replacement: 'Sony'
|
|
4169
4301
|
model_replacement: '$1'
|
|
@@ -4186,7 +4318,7 @@ device_parsers:
|
|
|
4186
4318
|
# Spice
|
|
4187
4319
|
# @ref: http://www.spicemobilephones.co.in/
|
|
4188
4320
|
#########
|
|
4189
|
-
- regex: ';
|
|
4321
|
+
- regex: '; {0,2}((?:CSL_Spice|Spice|SPICE|CSL)[ _\-]?|)([Mm][Ii])([ _\-]|)(\d{3}[^;/]*)(?: Build|\) AppleWebKit)'
|
|
4190
4322
|
device_replacement: '$1$2$3$4'
|
|
4191
4323
|
brand_replacement: 'Spice'
|
|
4192
4324
|
model_replacement: 'Mi$4'
|
|
@@ -4195,7 +4327,7 @@ device_parsers:
|
|
|
4195
4327
|
# Sprint (Operator Branded Devices)
|
|
4196
4328
|
# @ref:
|
|
4197
4329
|
#########
|
|
4198
|
-
- regex: ';
|
|
4330
|
+
- regex: '; {0,2}(Sprint )(.{1,200}?) {0,2}(?:Build|[;/])'
|
|
4199
4331
|
device_replacement: '$1$2'
|
|
4200
4332
|
brand_replacement: 'Sprint'
|
|
4201
4333
|
model_replacement: '$2'
|
|
@@ -4208,7 +4340,7 @@ device_parsers:
|
|
|
4208
4340
|
# Tagi
|
|
4209
4341
|
# @ref: ??
|
|
4210
4342
|
#########
|
|
4211
|
-
- regex: ';
|
|
4343
|
+
- regex: '; {0,2}(TAGI[ ]?)(MID) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4212
4344
|
device_replacement: '$1$2$3'
|
|
4213
4345
|
brand_replacement: 'Tagi'
|
|
4214
4346
|
model_replacement: '$2$3'
|
|
@@ -4217,7 +4349,7 @@ device_parsers:
|
|
|
4217
4349
|
# Tecmobile
|
|
4218
4350
|
# @ref: http://www.tecmobile.com/
|
|
4219
4351
|
#########
|
|
4220
|
-
- regex: ';
|
|
4352
|
+
- regex: '; {0,2}(Oyster500|Opal 800)(?: Build|\) AppleWebKit)'
|
|
4221
4353
|
device_replacement: 'Tecmobile $1'
|
|
4222
4354
|
brand_replacement: 'Tecmobile'
|
|
4223
4355
|
model_replacement: '$1'
|
|
@@ -4226,7 +4358,7 @@ device_parsers:
|
|
|
4226
4358
|
# Tecno
|
|
4227
4359
|
# @ref: www.tecno-mobile.com/
|
|
4228
4360
|
#########
|
|
4229
|
-
- regex: ';
|
|
4361
|
+
- regex: '; {0,2}(TECNO[ _])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4230
4362
|
device_replacement: '$1$2'
|
|
4231
4363
|
brand_replacement: 'Tecno'
|
|
4232
4364
|
model_replacement: '$2'
|
|
@@ -4235,7 +4367,7 @@ device_parsers:
|
|
|
4235
4367
|
# Telechips, Techvision evaluation boards
|
|
4236
4368
|
# @ref:
|
|
4237
4369
|
#########
|
|
4238
|
-
- regex: ';
|
|
4370
|
+
- regex: '; {0,2}Android for (Telechips|Techvision) ([^ ]+) '
|
|
4239
4371
|
regex_flag: 'i'
|
|
4240
4372
|
device_replacement: '$1 $2'
|
|
4241
4373
|
brand_replacement: '$1'
|
|
@@ -4246,7 +4378,7 @@ device_parsers:
|
|
|
4246
4378
|
# @ref: http://www.telstra.com.au/home-phone/thub-2/
|
|
4247
4379
|
# @ref: https://support.google.com/googleplay/answer/1727131?hl=en
|
|
4248
4380
|
#########
|
|
4249
|
-
- regex: ';
|
|
4381
|
+
- regex: '; {0,2}(T-Hub2)(?: Build|\) AppleWebKit)'
|
|
4250
4382
|
device_replacement: '$1'
|
|
4251
4383
|
brand_replacement: 'Telstra'
|
|
4252
4384
|
model_replacement: '$1'
|
|
@@ -4255,7 +4387,7 @@ device_parsers:
|
|
|
4255
4387
|
# Terra
|
|
4256
4388
|
# @ref: http://www.wortmann.de/
|
|
4257
4389
|
#########
|
|
4258
|
-
- regex: ';
|
|
4390
|
+
- regex: '; {0,2}(PAD) ?(100[12])(?: Build|\) AppleWebKit)'
|
|
4259
4391
|
device_replacement: 'Terra $1$2'
|
|
4260
4392
|
brand_replacement: 'Terra'
|
|
4261
4393
|
model_replacement: '$1$2'
|
|
@@ -4264,7 +4396,7 @@ device_parsers:
|
|
|
4264
4396
|
# Texet
|
|
4265
4397
|
# @ref: http://www.texet.ru/tablet/
|
|
4266
4398
|
#########
|
|
4267
|
-
- regex: ';
|
|
4399
|
+
- regex: '; {0,2}(T[BM]-\d{3}[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4268
4400
|
device_replacement: '$1'
|
|
4269
4401
|
brand_replacement: 'Texet'
|
|
4270
4402
|
model_replacement: '$1'
|
|
@@ -4273,11 +4405,11 @@ device_parsers:
|
|
|
4273
4405
|
# Thalia
|
|
4274
4406
|
# @ref: http://www.thalia.de/shop/tolino-shine-ereader/show/
|
|
4275
4407
|
#########
|
|
4276
|
-
- regex: ';
|
|
4408
|
+
- regex: '; {0,2}(tolino [^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4277
4409
|
device_replacement: '$1'
|
|
4278
4410
|
brand_replacement: 'Thalia'
|
|
4279
4411
|
model_replacement: '$1'
|
|
4280
|
-
- regex: ';
|
|
4412
|
+
- regex: '; {0,2}Build/.{0,200} (TOLINO_BROWSER)'
|
|
4281
4413
|
device_replacement: '$1'
|
|
4282
4414
|
brand_replacement: 'Thalia'
|
|
4283
4415
|
model_replacement: 'Tolino Shine'
|
|
@@ -4287,11 +4419,11 @@ device_parsers:
|
|
|
4287
4419
|
# @ref: http://en.thl.com.cn/Mobile
|
|
4288
4420
|
# @ref: http://thlmobilestore.com
|
|
4289
4421
|
#########
|
|
4290
|
-
- regex: ';
|
|
4422
|
+
- regex: '; {0,2}(?:CJ[ -])?(ThL|THL)[ -]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4291
4423
|
device_replacement: '$1 $2'
|
|
4292
4424
|
brand_replacement: 'Thl'
|
|
4293
4425
|
model_replacement: '$2'
|
|
4294
|
-
- regex: ';
|
|
4426
|
+
- regex: '; {0,2}(T100|T200|T5|W100|W200|W8s)(?: Build|\) AppleWebKit)'
|
|
4295
4427
|
device_replacement: '$1'
|
|
4296
4428
|
brand_replacement: 'Thl'
|
|
4297
4429
|
model_replacement: '$1'
|
|
@@ -4300,28 +4432,28 @@ device_parsers:
|
|
|
4300
4432
|
# T-Mobile (Operator Branded Devices)
|
|
4301
4433
|
#########
|
|
4302
4434
|
# @ref: https://en.wikipedia.org/wiki/HTC_Hero
|
|
4303
|
-
- regex: ';
|
|
4435
|
+
- regex: '; {0,2}(T-Mobile[ _]G2[ _]Touch) Build'
|
|
4304
4436
|
device_replacement: '$1'
|
|
4305
4437
|
brand_replacement: 'HTC'
|
|
4306
4438
|
model_replacement: 'Hero'
|
|
4307
4439
|
# @ref: https://en.wikipedia.org/wiki/HTC_Desire_Z
|
|
4308
|
-
- regex: ';
|
|
4440
|
+
- regex: '; {0,2}(T-Mobile[ _]G2) Build'
|
|
4309
4441
|
device_replacement: '$1'
|
|
4310
4442
|
brand_replacement: 'HTC'
|
|
4311
4443
|
model_replacement: 'Desire Z'
|
|
4312
|
-
- regex: ';
|
|
4444
|
+
- regex: '; {0,2}(T-Mobile myTouch Q) Build'
|
|
4313
4445
|
device_replacement: '$1'
|
|
4314
4446
|
brand_replacement: 'Huawei'
|
|
4315
4447
|
model_replacement: 'U8730'
|
|
4316
|
-
- regex: ';
|
|
4448
|
+
- regex: '; {0,2}(T-Mobile myTouch) Build'
|
|
4317
4449
|
device_replacement: '$1'
|
|
4318
4450
|
brand_replacement: 'Huawei'
|
|
4319
4451
|
model_replacement: 'U8680'
|
|
4320
|
-
- regex: ';
|
|
4452
|
+
- regex: '; {0,2}(T-Mobile_Espresso) Build'
|
|
4321
4453
|
device_replacement: '$1'
|
|
4322
4454
|
brand_replacement: 'HTC'
|
|
4323
4455
|
model_replacement: 'Espresso'
|
|
4324
|
-
- regex: ';
|
|
4456
|
+
- regex: '; {0,2}(T-Mobile G1) Build'
|
|
4325
4457
|
device_replacement: '$1'
|
|
4326
4458
|
brand_replacement: 'HTC'
|
|
4327
4459
|
model_replacement: 'Dream'
|
|
@@ -4329,11 +4461,11 @@ device_parsers:
|
|
|
4329
4461
|
device_replacement: '$1$2 $3 $4'
|
|
4330
4462
|
brand_replacement: 'HTC'
|
|
4331
4463
|
model_replacement: '$2 $3 $4'
|
|
4332
|
-
- regex: '\b(T-Mobile)_([^_]+)_(
|
|
4464
|
+
- regex: '\b(T-Mobile)_([^_]+)_(.{0,200}) Build'
|
|
4333
4465
|
device_replacement: '$1 $2 $3'
|
|
4334
4466
|
brand_replacement: 'Tmobile'
|
|
4335
4467
|
model_replacement: '$2 $3'
|
|
4336
|
-
- regex: '\b(T-Mobile)[_ ]?(
|
|
4468
|
+
- regex: '\b(T-Mobile)[_ ]?(.{0,200}?)Build'
|
|
4337
4469
|
device_replacement: '$1 $2'
|
|
4338
4470
|
brand_replacement: 'Tmobile'
|
|
4339
4471
|
model_replacement: '$2'
|
|
@@ -4351,7 +4483,7 @@ device_parsers:
|
|
|
4351
4483
|
# Tooky
|
|
4352
4484
|
# @ref: http://www.tookymobile.com/
|
|
4353
4485
|
#########
|
|
4354
|
-
- regex: '
|
|
4486
|
+
- regex: ' ?(TOOKY)[ _\-]([^;/]{1,100}) ?(?:Build|;)'
|
|
4355
4487
|
regex_flag: 'i'
|
|
4356
4488
|
device_replacement: '$1 $2'
|
|
4357
4489
|
brand_replacement: 'Tooky'
|
|
@@ -4366,11 +4498,11 @@ device_parsers:
|
|
|
4366
4498
|
device_replacement: '$1'
|
|
4367
4499
|
brand_replacement: 'Toshiba'
|
|
4368
4500
|
model_replacement: 'Folio 100'
|
|
4369
|
-
- regex: ';
|
|
4501
|
+
- regex: '; {0,2}([Ff]olio ?100)(?: Build|\) AppleWebKit)'
|
|
4370
4502
|
device_replacement: '$1'
|
|
4371
4503
|
brand_replacement: 'Toshiba'
|
|
4372
4504
|
model_replacement: 'Folio 100'
|
|
4373
|
-
- regex: ';
|
|
4505
|
+
- 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
4506
|
device_replacement: 'Toshiba $1'
|
|
4375
4507
|
brand_replacement: 'Toshiba'
|
|
4376
4508
|
model_replacement: '$1'
|
|
@@ -4379,12 +4511,12 @@ device_parsers:
|
|
|
4379
4511
|
# Touchmate
|
|
4380
4512
|
# @ref: http://touchmatepc.com/new/
|
|
4381
4513
|
#########
|
|
4382
|
-
- regex: ';
|
|
4514
|
+
- regex: '; {0,2}(TM-MID\d+[^;/]{1,50}|TOUCHMATE|MID-750)(?: Build|\) AppleWebKit)'
|
|
4383
4515
|
device_replacement: '$1'
|
|
4384
4516
|
brand_replacement: 'Touchmate'
|
|
4385
4517
|
model_replacement: '$1'
|
|
4386
4518
|
# @todo: needs verification user-agents missing
|
|
4387
|
-
- regex: ';
|
|
4519
|
+
- regex: '; {0,2}(TM-SM\d+[^;/]{1,50}?)(?: Build|\) AppleWebKit)'
|
|
4388
4520
|
device_replacement: '$1'
|
|
4389
4521
|
brand_replacement: 'Touchmate'
|
|
4390
4522
|
model_replacement: '$1'
|
|
@@ -4393,11 +4525,11 @@ device_parsers:
|
|
|
4393
4525
|
# Treq
|
|
4394
4526
|
# @ref: http://www.treq.co.id/product
|
|
4395
4527
|
#########
|
|
4396
|
-
- regex: ';
|
|
4528
|
+
- regex: '; {0,2}(A10 [Bb]asic2?)(?: Build|\) AppleWebKit)'
|
|
4397
4529
|
device_replacement: '$1'
|
|
4398
4530
|
brand_replacement: 'Treq'
|
|
4399
4531
|
model_replacement: '$1'
|
|
4400
|
-
- regex: ';
|
|
4532
|
+
- regex: '; {0,2}(TREQ[ _\-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4401
4533
|
regex_flag: 'i'
|
|
4402
4534
|
device_replacement: '$1$2'
|
|
4403
4535
|
brand_replacement: 'Treq'
|
|
@@ -4409,21 +4541,40 @@ device_parsers:
|
|
|
4409
4541
|
# @models: A936|A603|X-5|X-3
|
|
4410
4542
|
#########
|
|
4411
4543
|
# @todo: guessed markers
|
|
4412
|
-
- regex: ';
|
|
4544
|
+
- regex: '; {0,2}(X-?5|X-?3)(?: Build|\) AppleWebKit)'
|
|
4413
4545
|
device_replacement: '$1'
|
|
4414
4546
|
brand_replacement: 'Umeox'
|
|
4415
4547
|
model_replacement: '$1'
|
|
4416
4548
|
# @todo: guessed markers
|
|
4417
|
-
- regex: ';
|
|
4549
|
+
- regex: '; {0,2}(A502\+?|A936|A603|X1|X2)(?: Build|\) AppleWebKit)'
|
|
4418
4550
|
device_replacement: '$1'
|
|
4419
4551
|
brand_replacement: 'Umeox'
|
|
4420
4552
|
model_replacement: '$1'
|
|
4421
4553
|
|
|
4554
|
+
#########
|
|
4555
|
+
# Vernee
|
|
4556
|
+
# @ref: http://vernee.cc/
|
|
4557
|
+
# @models: Thor - Thor E
|
|
4558
|
+
#########
|
|
4559
|
+
- regex: '; thor Build/'
|
|
4560
|
+
device_replacement: 'Thor'
|
|
4561
|
+
brand_replacement: 'Vernee'
|
|
4562
|
+
model_replacement: 'Thor'
|
|
4563
|
+
# Regex to modidy for Thor Plus (don't find example UA)
|
|
4564
|
+
- regex: '; Thor (E)? Build/'
|
|
4565
|
+
device_replacement: 'Thor $1'
|
|
4566
|
+
brand_replacement: 'Vernee'
|
|
4567
|
+
model_replacement: 'Thor'
|
|
4568
|
+
- regex: '; Apollo Lite Build/'
|
|
4569
|
+
device_replacement: 'Apollo Lite'
|
|
4570
|
+
brand_replacement: 'Vernee'
|
|
4571
|
+
model_replacement: 'Apollo'
|
|
4572
|
+
|
|
4422
4573
|
#########
|
|
4423
4574
|
# Versus
|
|
4424
4575
|
# @ref: http://versusuk.com/support.html
|
|
4425
4576
|
#########
|
|
4426
|
-
- regex: '(TOUCH(?:TAB|PAD)
|
|
4577
|
+
- regex: '(TOUCH(?:TAB|PAD).{1,200}?)(?: Build|\) AppleWebKit)'
|
|
4427
4578
|
regex_flag: 'i'
|
|
4428
4579
|
device_replacement: 'Versus $1'
|
|
4429
4580
|
brand_replacement: 'Versus'
|
|
@@ -4433,7 +4584,7 @@ device_parsers:
|
|
|
4433
4584
|
# Vertu
|
|
4434
4585
|
# @ref: http://www.vertu.com/
|
|
4435
4586
|
#########
|
|
4436
|
-
- regex: '(VERTU) ([^;/]
|
|
4587
|
+
- regex: '(VERTU) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4437
4588
|
device_replacement: '$1 $2'
|
|
4438
4589
|
brand_replacement: 'Vertu'
|
|
4439
4590
|
model_replacement: '$2'
|
|
@@ -4442,7 +4593,7 @@ device_parsers:
|
|
|
4442
4593
|
# Videocon
|
|
4443
4594
|
# @ref: http://www.videoconmobiles.com
|
|
4444
4595
|
#########
|
|
4445
|
-
- regex: ';
|
|
4596
|
+
- regex: '; {0,2}(Videocon)[ _\-]([^;/]{1,100}?) {0,2}(?:Build|;)'
|
|
4446
4597
|
device_replacement: '$1 $2'
|
|
4447
4598
|
brand_replacement: 'Videocon'
|
|
4448
4599
|
model_replacement: '$2'
|
|
@@ -4455,15 +4606,15 @@ device_parsers:
|
|
|
4455
4606
|
# Viewsonic
|
|
4456
4607
|
# @ref: http://viewsonic.com
|
|
4457
4608
|
#########
|
|
4458
|
-
- regex: ';
|
|
4609
|
+
- regex: '; {0,2}((?:ViewPad|ViewPhone|VSD)[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4459
4610
|
device_replacement: '$1'
|
|
4460
4611
|
brand_replacement: 'Viewsonic'
|
|
4461
4612
|
model_replacement: '$1'
|
|
4462
|
-
- regex: ';
|
|
4613
|
+
- regex: '; {0,2}(ViewSonic-)([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4463
4614
|
device_replacement: '$1$2'
|
|
4464
4615
|
brand_replacement: 'Viewsonic'
|
|
4465
4616
|
model_replacement: '$2'
|
|
4466
|
-
- regex: ';
|
|
4617
|
+
- regex: '; {0,2}(GTablet.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
4467
4618
|
device_replacement: '$1'
|
|
4468
4619
|
brand_replacement: 'Viewsonic'
|
|
4469
4620
|
model_replacement: '$1'
|
|
@@ -4472,7 +4623,7 @@ device_parsers:
|
|
|
4472
4623
|
# vivo
|
|
4473
4624
|
# @ref: http://vivo.cn/
|
|
4474
4625
|
#########
|
|
4475
|
-
- regex: ';
|
|
4626
|
+
- regex: '; {0,2}([Vv]ivo)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4476
4627
|
device_replacement: '$1 $2'
|
|
4477
4628
|
brand_replacement: 'vivo'
|
|
4478
4629
|
model_replacement: '$2'
|
|
@@ -4481,7 +4632,7 @@ device_parsers:
|
|
|
4481
4632
|
# Vodafone (Operator Branded Devices)
|
|
4482
4633
|
# @ref: ??
|
|
4483
4634
|
#########
|
|
4484
|
-
- regex: '(Vodafone) (
|
|
4635
|
+
- regex: '(Vodafone) (.{0,200}?)(?: Build|\) AppleWebKit)'
|
|
4485
4636
|
device_replacement: '$1 $2'
|
|
4486
4637
|
brand_replacement: '$1'
|
|
4487
4638
|
model_replacement: '$2'
|
|
@@ -4490,7 +4641,7 @@ device_parsers:
|
|
|
4490
4641
|
# Walton
|
|
4491
4642
|
# @ref: http://www.waltonbd.com/
|
|
4492
4643
|
#########
|
|
4493
|
-
- regex: ';
|
|
4644
|
+
- regex: '; {0,2}(?:Walton[ _\-]|)(Primo[ _\-][^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4494
4645
|
regex_flag: 'i'
|
|
4495
4646
|
device_replacement: 'Walton $1'
|
|
4496
4647
|
brand_replacement: 'Walton'
|
|
@@ -4500,7 +4651,7 @@ device_parsers:
|
|
|
4500
4651
|
# Wiko
|
|
4501
4652
|
# @ref: http://fr.wikomobile.com/collection.php?s=Smartphones
|
|
4502
4653
|
#########
|
|
4503
|
-
- regex: ';
|
|
4654
|
+
- 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
4655
|
regex_flag: 'i'
|
|
4505
4656
|
device_replacement: 'Wiko $1'
|
|
4506
4657
|
brand_replacement: 'Wiko'
|
|
@@ -4510,7 +4661,7 @@ device_parsers:
|
|
|
4510
4661
|
# WellcoM
|
|
4511
4662
|
# @ref: ??
|
|
4512
4663
|
#########
|
|
4513
|
-
- regex: ';
|
|
4664
|
+
- regex: '; {0,2}WellcoM-([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4514
4665
|
device_replacement: 'Wellcom $1'
|
|
4515
4666
|
brand_replacement: 'Wellcom'
|
|
4516
4667
|
model_replacement: '$1'
|
|
@@ -4528,7 +4679,7 @@ device_parsers:
|
|
|
4528
4679
|
# Wolfgang
|
|
4529
4680
|
# @ref: http://wolfgangmobile.com/
|
|
4530
4681
|
#########
|
|
4531
|
-
- regex: ';
|
|
4682
|
+
- regex: '; {0,2}(AT-AS[^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4532
4683
|
device_replacement: 'Wolfgang $1'
|
|
4533
4684
|
brand_replacement: 'Wolfgang'
|
|
4534
4685
|
model_replacement: '$1'
|
|
@@ -4537,7 +4688,7 @@ device_parsers:
|
|
|
4537
4688
|
# Woxter
|
|
4538
4689
|
# @ref: http://www.woxter.es/es-es/categories/index
|
|
4539
4690
|
#########
|
|
4540
|
-
- regex: ';
|
|
4691
|
+
- regex: '; {0,2}(?:Woxter|Wxt) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4541
4692
|
device_replacement: 'Woxter $1'
|
|
4542
4693
|
brand_replacement: 'Woxter'
|
|
4543
4694
|
model_replacement: '$1'
|
|
@@ -4546,7 +4697,7 @@ device_parsers:
|
|
|
4546
4697
|
# Yarvik Zania
|
|
4547
4698
|
# @ref: http://yarvik.com
|
|
4548
4699
|
#########
|
|
4549
|
-
- regex: ';
|
|
4700
|
+
- 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
4701
|
device_replacement: 'Yarvik $1'
|
|
4551
4702
|
brand_replacement: 'Yarvik'
|
|
4552
4703
|
model_replacement: '$1'
|
|
@@ -4560,7 +4711,7 @@ device_parsers:
|
|
|
4560
4711
|
# M778, M7000, M7000AD, M7000NBD, M7001, M7002, M7002KBD, M777, M767,
|
|
4561
4712
|
# M789, M799, M769, M757, M755, M753, M752, M739, M729, M723, M712, M727
|
|
4562
4713
|
#########
|
|
4563
|
-
- regex: ';
|
|
4714
|
+
- regex: '; {0,2}([A-Z]{2,4})(M\d{3,}[A-Z]{2})([^;\)\/]*)(?: Build|[;\)])'
|
|
4564
4715
|
device_replacement: 'Yifang $1$2$3'
|
|
4565
4716
|
brand_replacement: 'Yifang'
|
|
4566
4717
|
model_replacement: '$2'
|
|
@@ -4569,19 +4720,19 @@ device_parsers:
|
|
|
4569
4720
|
# XiaoMi
|
|
4570
4721
|
# @ref: http://www.xiaomi.com/event/buyphone
|
|
4571
4722
|
#########
|
|
4572
|
-
- regex: ';
|
|
4723
|
+
- regex: '; {0,2}((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/]*) (Build|MIUI)/'
|
|
4573
4724
|
device_replacement: 'XiaoMi $1'
|
|
4574
4725
|
brand_replacement: 'XiaoMi'
|
|
4575
4726
|
model_replacement: '$1'
|
|
4576
|
-
- regex: ';
|
|
4727
|
+
- regex: '; {0,2}((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/\)]*)'
|
|
4577
4728
|
device_replacement: 'XiaoMi $1'
|
|
4578
4729
|
brand_replacement: 'XiaoMi'
|
|
4579
4730
|
model_replacement: '$1'
|
|
4580
|
-
- regex: ';
|
|
4731
|
+
- regex: '; {0,2}(MIX) (Build|MIUI)/'
|
|
4581
4732
|
device_replacement: 'XiaoMi $1'
|
|
4582
4733
|
brand_replacement: 'XiaoMi'
|
|
4583
4734
|
model_replacement: '$1'
|
|
4584
|
-
- regex: ';
|
|
4735
|
+
- regex: '; {0,2}((MIX) ([^;/]*)) (Build|MIUI)/'
|
|
4585
4736
|
device_replacement: 'XiaoMi $1'
|
|
4586
4737
|
brand_replacement: 'XiaoMi'
|
|
4587
4738
|
model_replacement: '$1'
|
|
@@ -4590,17 +4741,17 @@ device_parsers:
|
|
|
4590
4741
|
# Xolo
|
|
4591
4742
|
# @ref: http://www.xolo.in/
|
|
4592
4743
|
#########
|
|
4593
|
-
- regex: ';
|
|
4744
|
+
- regex: '; {0,2}XOLO[ _]([^;/]{0,30}tab.{0,30})(?: Build|\) AppleWebKit)'
|
|
4594
4745
|
regex_flag: 'i'
|
|
4595
4746
|
device_replacement: 'Xolo $1'
|
|
4596
4747
|
brand_replacement: 'Xolo'
|
|
4597
4748
|
model_replacement: '$1'
|
|
4598
|
-
- regex: ';
|
|
4749
|
+
- regex: '; {0,2}XOLO[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4599
4750
|
regex_flag: 'i'
|
|
4600
4751
|
device_replacement: 'Xolo $1'
|
|
4601
4752
|
brand_replacement: 'Xolo'
|
|
4602
4753
|
model_replacement: '$1'
|
|
4603
|
-
- regex: ';
|
|
4754
|
+
- regex: '; {0,2}(q\d0{2,3}[a-z]?)(?: Build|\) AppleWebKit)'
|
|
4604
4755
|
regex_flag: 'i'
|
|
4605
4756
|
device_replacement: 'Xolo $1'
|
|
4606
4757
|
brand_replacement: 'Xolo'
|
|
@@ -4610,7 +4761,7 @@ device_parsers:
|
|
|
4610
4761
|
# Xoro
|
|
4611
4762
|
# @ref: http://www.xoro.de/produkte/
|
|
4612
4763
|
#########
|
|
4613
|
-
- regex: ';
|
|
4764
|
+
- regex: '; {0,2}(PAD ?[79]\d+[^;/]{0,50}|TelePAD\d+[^;/])(?: Build|\) AppleWebKit)'
|
|
4614
4765
|
device_replacement: 'Xoro $1'
|
|
4615
4766
|
brand_replacement: 'Xoro'
|
|
4616
4767
|
model_replacement: '$1'
|
|
@@ -4619,7 +4770,7 @@ device_parsers:
|
|
|
4619
4770
|
# Zopo
|
|
4620
4771
|
# @ref: http://www.zopomobiles.com/products.html
|
|
4621
4772
|
#########
|
|
4622
|
-
- regex: ';
|
|
4773
|
+
- regex: '; {0,2}(?:(?:ZOPO|Zopo)[ _]([^;/]{1,100}?)|(ZP ?(?:\d{2}[^;/]{1,100}|C2))|(C[2379]))(?: Build|\) AppleWebKit)'
|
|
4623
4774
|
device_replacement: '$1$2$3'
|
|
4624
4775
|
brand_replacement: 'Zopo'
|
|
4625
4776
|
model_replacement: '$1$2$3'
|
|
@@ -4628,11 +4779,11 @@ device_parsers:
|
|
|
4628
4779
|
# ZiiLabs
|
|
4629
4780
|
# @ref: http://www.ziilabs.com/products/platforms/androidreferencetablets.php
|
|
4630
4781
|
#########
|
|
4631
|
-
- regex: ';
|
|
4782
|
+
- regex: '; {0,2}(ZiiLABS) (Zii[^;/]*)(?: Build|\) AppleWebKit)'
|
|
4632
4783
|
device_replacement: '$1 $2'
|
|
4633
4784
|
brand_replacement: 'ZiiLabs'
|
|
4634
4785
|
model_replacement: '$2'
|
|
4635
|
-
- regex: ';
|
|
4786
|
+
- regex: '; {0,2}(Zii)_([^;/]*)(?: Build|\) AppleWebKit)'
|
|
4636
4787
|
device_replacement: '$1 $2'
|
|
4637
4788
|
brand_replacement: 'ZiiLabs'
|
|
4638
4789
|
model_replacement: '$2'
|
|
@@ -4641,36 +4792,36 @@ device_parsers:
|
|
|
4641
4792
|
# ZTE
|
|
4642
4793
|
# @ref: http://www.ztedevices.com/
|
|
4643
4794
|
#########
|
|
4644
|
-
- regex: ';
|
|
4795
|
+
- 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
4796
|
device_replacement: '$1'
|
|
4646
4797
|
brand_replacement: 'ZTE'
|
|
4647
4798
|
model_replacement: '$1'
|
|
4648
|
-
- regex: ';
|
|
4799
|
+
- regex: '; {0,2}([A-Z]\d+)_USA_[^;]{0,200}(?: Build|\) AppleWebKit)'
|
|
4649
4800
|
device_replacement: '$1'
|
|
4650
4801
|
brand_replacement: 'ZTE'
|
|
4651
4802
|
model_replacement: '$1'
|
|
4652
|
-
- regex: ';
|
|
4803
|
+
- regex: '; {0,2}(SmartTab\d+)[^;]{0,50}(?: Build|\) AppleWebKit)'
|
|
4653
4804
|
device_replacement: '$1'
|
|
4654
4805
|
brand_replacement: 'ZTE'
|
|
4655
4806
|
model_replacement: '$1'
|
|
4656
|
-
- regex: ';
|
|
4807
|
+
- regex: '; {0,2}(?:Blade|BLADE|ZTE-BLADE)([^;/]*)(?: Build|\) AppleWebKit)'
|
|
4657
4808
|
device_replacement: 'ZTE Blade$1'
|
|
4658
4809
|
brand_replacement: 'ZTE'
|
|
4659
4810
|
model_replacement: 'Blade$1'
|
|
4660
|
-
- regex: ';
|
|
4811
|
+
- regex: '; {0,2}(?:Skate|SKATE|ZTE-SKATE)([^;/]*)(?: Build|\) AppleWebKit)'
|
|
4661
4812
|
device_replacement: 'ZTE Skate$1'
|
|
4662
4813
|
brand_replacement: 'ZTE'
|
|
4663
4814
|
model_replacement: 'Skate$1'
|
|
4664
|
-
- regex: ';
|
|
4815
|
+
- regex: '; {0,2}(Orange |Optimus )(Monte Carlo|San Francisco)(?: Build|\) AppleWebKit)'
|
|
4665
4816
|
device_replacement: '$1$2'
|
|
4666
4817
|
brand_replacement: 'ZTE'
|
|
4667
4818
|
model_replacement: '$1$2'
|
|
4668
|
-
- regex: ';
|
|
4819
|
+
- regex: '; {0,2}(?:ZXY-ZTE_|ZTE\-U |ZTE[\- _]|ZTE-C[_ ])([^;/]{1,100}?)(?: Build|\) AppleWebKit)'
|
|
4669
4820
|
device_replacement: 'ZTE $1'
|
|
4670
4821
|
brand_replacement: 'ZTE'
|
|
4671
4822
|
model_replacement: '$1'
|
|
4672
4823
|
# operator specific
|
|
4673
|
-
- regex: '; (BASE) (lutea|Lutea 2|Tab[^;]
|
|
4824
|
+
- regex: '; (BASE) (lutea|Lutea 2|Tab[^;]{0,200}?)(?: Build|\) AppleWebKit)'
|
|
4674
4825
|
device_replacement: '$1 $2'
|
|
4675
4826
|
brand_replacement: 'ZTE'
|
|
4676
4827
|
model_replacement: '$1 $2'
|
|
@@ -4679,7 +4830,7 @@ device_parsers:
|
|
|
4679
4830
|
device_replacement: '$1'
|
|
4680
4831
|
brand_replacement: 'ZTE'
|
|
4681
4832
|
model_replacement: '$1'
|
|
4682
|
-
- regex: ';
|
|
4833
|
+
- regex: '; {0,2}(vp9plus)\)'
|
|
4683
4834
|
device_replacement: '$1'
|
|
4684
4835
|
brand_replacement: 'ZTE'
|
|
4685
4836
|
model_replacement: '$1'
|
|
@@ -4739,7 +4890,7 @@ device_parsers:
|
|
|
4739
4890
|
device_replacement: 'Kindle Fire HDX 8.9" 4G'
|
|
4740
4891
|
brand_replacement: 'Amazon'
|
|
4741
4892
|
model_replacement: 'Kindle Fire HDX 8.9" 4G'
|
|
4742
|
-
- regex: '; ?Amazon ([^;/]
|
|
4893
|
+
- regex: '; ?Amazon ([^;/]{1,100}) Build\b'
|
|
4743
4894
|
device_replacement: '$1'
|
|
4744
4895
|
brand_replacement: 'Amazon'
|
|
4745
4896
|
model_replacement: '$1'
|
|
@@ -4762,22 +4913,22 @@ device_parsers:
|
|
|
4762
4913
|
|
|
4763
4914
|
#########
|
|
4764
4915
|
# Devices from chinese manufacturer(s)
|
|
4765
|
-
# @note: identified by x-wap-profile http://218.249.47.94/Xianghe
|
|
4916
|
+
# @note: identified by x-wap-profile http://218.249.47.94/Xianghe/.{0,200}
|
|
4766
4917
|
#########
|
|
4767
|
-
- regex: '(sprd)\-([^/]
|
|
4918
|
+
- regex: '(sprd)\-([^/]{1,50})/'
|
|
4768
4919
|
device_replacement: '$1 $2'
|
|
4769
4920
|
brand_replacement: '$1'
|
|
4770
4921
|
model_replacement: '$2'
|
|
4771
4922
|
# @ref: http://eshinechina.en.alibaba.com/
|
|
4772
|
-
- regex: ';
|
|
4923
|
+
- regex: '; {0,2}(H\d{2}00\+?) Build'
|
|
4773
4924
|
device_replacement: '$1'
|
|
4774
4925
|
brand_replacement: 'Hero'
|
|
4775
4926
|
model_replacement: '$1'
|
|
4776
|
-
- regex: ';
|
|
4927
|
+
- regex: '; {0,2}(iphone|iPhone5) Build/'
|
|
4777
4928
|
device_replacement: 'Xianghe $1'
|
|
4778
4929
|
brand_replacement: 'Xianghe'
|
|
4779
4930
|
model_replacement: '$1'
|
|
4780
|
-
- regex: ';
|
|
4931
|
+
- regex: '; {0,2}(e\d{4}[a-z]?_?v\d+|v89_[^;/]{1,100})[^;/]{1,30} Build/'
|
|
4781
4932
|
device_replacement: 'Xianghe $1'
|
|
4782
4933
|
brand_replacement: 'Xianghe'
|
|
4783
4934
|
model_replacement: '$1'
|
|
@@ -4799,7 +4950,7 @@ device_parsers:
|
|
|
4799
4950
|
#########
|
|
4800
4951
|
# Alcatel Windows Phones
|
|
4801
4952
|
#########
|
|
4802
|
-
- regex: 'Windows Phone [^;]
|
|
4953
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:ALCATEL)[^;]{0,200}; {0,2}([^;,\)]+)'
|
|
4803
4954
|
device_replacement: 'Alcatel $1'
|
|
4804
4955
|
brand_replacement: 'Alcatel'
|
|
4805
4956
|
model_replacement: '$1'
|
|
@@ -4807,8 +4958,7 @@ device_parsers:
|
|
|
4807
4958
|
#########
|
|
4808
4959
|
# Asus Windows Phones
|
|
4809
4960
|
#########
|
|
4810
|
-
|
|
4811
|
-
- regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:ASUS|Asus)[^;]*; *([^;,\)]+)'
|
|
4961
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:ASUS|Asus)[^;]{0,200}; {0,2}([^;,\)]+)'
|
|
4812
4962
|
device_replacement: 'Asus $1'
|
|
4813
4963
|
brand_replacement: 'Asus'
|
|
4814
4964
|
model_replacement: '$1'
|
|
@@ -4816,7 +4966,7 @@ device_parsers:
|
|
|
4816
4966
|
#########
|
|
4817
4967
|
# Dell Windows Phones
|
|
4818
4968
|
#########
|
|
4819
|
-
- regex: 'Windows Phone [^;]
|
|
4969
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:DELL|Dell)[^;]{0,200}; {0,2}([^;,\)]+)'
|
|
4820
4970
|
device_replacement: 'Dell $1'
|
|
4821
4971
|
brand_replacement: 'Dell'
|
|
4822
4972
|
model_replacement: '$1'
|
|
@@ -4824,7 +4974,7 @@ device_parsers:
|
|
|
4824
4974
|
#########
|
|
4825
4975
|
# HTC Windows Phones
|
|
4826
4976
|
#########
|
|
4827
|
-
- regex: 'Windows Phone [^;]
|
|
4977
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:HTC|Htc|HTC_blocked[^;]{0,200})[^;]{0,200}; {0,2}(?:HTC|)([^;,\)]+)'
|
|
4828
4978
|
device_replacement: 'HTC $1'
|
|
4829
4979
|
brand_replacement: 'HTC'
|
|
4830
4980
|
model_replacement: '$1'
|
|
@@ -4832,7 +4982,7 @@ device_parsers:
|
|
|
4832
4982
|
#########
|
|
4833
4983
|
# Huawei Windows Phones
|
|
4834
4984
|
#########
|
|
4835
|
-
- regex: 'Windows Phone [^;]
|
|
4985
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:HUAWEI)[^;]{0,200}; {0,2}(?:HUAWEI |)([^;,\)]+)'
|
|
4836
4986
|
device_replacement: 'Huawei $1'
|
|
4837
4987
|
brand_replacement: 'Huawei'
|
|
4838
4988
|
model_replacement: '$1'
|
|
@@ -4840,7 +4990,7 @@ device_parsers:
|
|
|
4840
4990
|
#########
|
|
4841
4991
|
# LG Windows Phones
|
|
4842
4992
|
#########
|
|
4843
|
-
- regex: 'Windows Phone [^;]
|
|
4993
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:LG|Lg)[^;]{0,200}; {0,2}(?:LG[ \-]|)([^;,\)]+)'
|
|
4844
4994
|
device_replacement: 'LG $1'
|
|
4845
4995
|
brand_replacement: 'LG'
|
|
4846
4996
|
model_replacement: '$1'
|
|
@@ -4848,15 +4998,15 @@ device_parsers:
|
|
|
4848
4998
|
#########
|
|
4849
4999
|
# Noka Windows Phones
|
|
4850
5000
|
#########
|
|
4851
|
-
- regex: 'Windows Phone [^;]
|
|
5001
|
+
- 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
5002
|
device_replacement: 'Lumia $1'
|
|
4853
5003
|
brand_replacement: 'Nokia'
|
|
4854
5004
|
model_replacement: 'Lumia $1'
|
|
4855
|
-
- regex: 'Windows Phone [^;]
|
|
5005
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]{0,200}; {0,2}(RM-\d{3,})'
|
|
4856
5006
|
device_replacement: 'Nokia $1'
|
|
4857
5007
|
brand_replacement: 'Nokia'
|
|
4858
5008
|
model_replacement: '$1'
|
|
4859
|
-
- regex: '(?:Windows Phone [^;]
|
|
5009
|
+
- regex: '(?:Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)]|WPDesktop;) ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]{0,200}; {0,2}(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?|)([^;\)]+)'
|
|
4860
5010
|
device_replacement: 'Nokia $1'
|
|
4861
5011
|
brand_replacement: 'Nokia'
|
|
4862
5012
|
model_replacement: '$1'
|
|
@@ -4864,7 +5014,7 @@ device_parsers:
|
|
|
4864
5014
|
#########
|
|
4865
5015
|
# Microsoft Windows Phones
|
|
4866
5016
|
#########
|
|
4867
|
-
- regex: 'Windows Phone [^;]
|
|
5017
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:Microsoft(?: Corporation|))[^;]{0,200}; {0,2}([^;,\)]+)'
|
|
4868
5018
|
device_replacement: 'Microsoft $1'
|
|
4869
5019
|
brand_replacement: 'Microsoft'
|
|
4870
5020
|
model_replacement: '$1'
|
|
@@ -4872,7 +5022,7 @@ device_parsers:
|
|
|
4872
5022
|
#########
|
|
4873
5023
|
# Samsung Windows Phones
|
|
4874
5024
|
#########
|
|
4875
|
-
- regex: 'Windows Phone [^;]
|
|
5025
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:SAMSUNG)[^;]{0,200}; {0,2}(?:SAMSUNG |)([^;,\.\)]+)'
|
|
4876
5026
|
device_replacement: 'Samsung $1'
|
|
4877
5027
|
brand_replacement: 'Samsung'
|
|
4878
5028
|
model_replacement: '$1'
|
|
@@ -4880,7 +5030,7 @@ device_parsers:
|
|
|
4880
5030
|
#########
|
|
4881
5031
|
# Toshiba Windows Phones
|
|
4882
5032
|
#########
|
|
4883
|
-
- regex: 'Windows Phone [^;]
|
|
5033
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:TOSHIBA|FujitsuToshibaMobileCommun)[^;]{0,200}; {0,2}([^;,\)]+)'
|
|
4884
5034
|
device_replacement: 'Toshiba $1'
|
|
4885
5035
|
brand_replacement: 'Toshiba'
|
|
4886
5036
|
model_replacement: '$1'
|
|
@@ -4888,7 +5038,7 @@ device_parsers:
|
|
|
4888
5038
|
#########
|
|
4889
5039
|
# Generic Windows Phones
|
|
4890
5040
|
#########
|
|
4891
|
-
- regex: 'Windows Phone [^;]
|
|
5041
|
+
- regex: 'Windows Phone [^;]{1,30}; .{0,100}?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)([^;]{1,200}); {0,2}([^;,\)]+)'
|
|
4892
5042
|
device_replacement: '$1 $2'
|
|
4893
5043
|
brand_replacement: '$1'
|
|
4894
5044
|
model_replacement: '$2'
|
|
@@ -4900,7 +5050,7 @@ device_parsers:
|
|
|
4900
5050
|
#########
|
|
4901
5051
|
# Samsung Bada Phones
|
|
4902
5052
|
#########
|
|
4903
|
-
- regex: '(?:^|; )SAMSUNG\-([A-Za-z0-9\-]
|
|
5053
|
+
- regex: '(?:^|; )SAMSUNG\-([A-Za-z0-9\-]{1,50}).{0,200} Bada/'
|
|
4904
5054
|
device_replacement: 'Samsung $1'
|
|
4905
5055
|
brand_replacement: 'Samsung'
|
|
4906
5056
|
model_replacement: '$1'
|
|
@@ -4908,11 +5058,11 @@ device_parsers:
|
|
|
4908
5058
|
#########
|
|
4909
5059
|
# Firefox OS
|
|
4910
5060
|
#########
|
|
4911
|
-
- regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]
|
|
5061
|
+
- regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]{1,100}?)(?:/[^;]{1,200}|); rv:[^\)]{1,200}\) Gecko/[^\/]{1,200} Firefox/'
|
|
4912
5062
|
device_replacement: 'Alcatel $1 $2 $3'
|
|
4913
5063
|
brand_replacement: 'Alcatel'
|
|
4914
5064
|
model_replacement: 'One Touch $3'
|
|
4915
|
-
- regex: '\(Mobile; (?:ZTE([^;]
|
|
5065
|
+
- regex: '\(Mobile; (?:ZTE([^;]{1,200})|(OpenC)); rv:[^\)]{1,200}\) Gecko/[^\/]{1,200} Firefox/'
|
|
4916
5066
|
device_replacement: 'ZTE $1$2'
|
|
4917
5067
|
brand_replacement: 'ZTE'
|
|
4918
5068
|
model_replacement: '$1$2'
|
|
@@ -4920,15 +5070,15 @@ device_parsers:
|
|
|
4920
5070
|
#########
|
|
4921
5071
|
# KaiOS
|
|
4922
5072
|
#########
|
|
4923
|
-
- regex: '\(Mobile; ALCATEL([A-Za-z0-9\-]+); rv:[^\)]
|
|
5073
|
+
- regex: '\(Mobile; ALCATEL([A-Za-z0-9\-]+); rv:[^\)]{1,200}\) Gecko/[^\/]{1,200} Firefox/[^\/]{1,200} KaiOS/'
|
|
4924
5074
|
device_replacement: 'Alcatel $1'
|
|
4925
5075
|
brand_replacement: 'Alcatel'
|
|
4926
5076
|
model_replacement: '$1'
|
|
4927
|
-
- regex: '\(Mobile; LYF\/([A-Za-z0-9\-]
|
|
5077
|
+
- regex: '\(Mobile; LYF\/([A-Za-z0-9\-]{1,100})\/.{0,100};.{0,100}rv:[^\)]{1,100}\) Gecko/[^\/]{1,100} Firefox/[^\/]{1,100} KAIOS/'
|
|
4928
5078
|
device_replacement: 'LYF $1'
|
|
4929
5079
|
brand_replacement: 'LYF'
|
|
4930
5080
|
model_replacement: '$1'
|
|
4931
|
-
- regex: '\(Mobile; Nokia_([A-Za-z0-9\-]
|
|
5081
|
+
- regex: '\(Mobile; Nokia_([A-Za-z0-9\-]{1,100})_.{1,100}; rv:[^\)]{1,100}\) Gecko/[^\/]{1,100} Firefox/[^\/]{1,100} KAIOS/'
|
|
4932
5082
|
device_replacement: 'Nokia $1'
|
|
4933
5083
|
brand_replacement: 'Nokia'
|
|
4934
5084
|
model_replacement: '$1'
|
|
@@ -4941,7 +5091,7 @@ device_parsers:
|
|
|
4941
5091
|
device_replacement: 'Nokia $1'
|
|
4942
5092
|
brand_replacement: 'Nokia'
|
|
4943
5093
|
model_replacement: '$1$2'
|
|
4944
|
-
- regex: '(?:NOKIA|Nokia)(?:\-|
|
|
5094
|
+
- regex: '(?:NOKIA|Nokia)(?:\-| {0,2})(?:([A-Za-z0-9]+)\-[0-9a-f]{32}|([A-Za-z0-9\-]+)(?:UCBrowser)|([A-Za-z0-9\-]+))'
|
|
4945
5095
|
device_replacement: 'Nokia $1$2$3'
|
|
4946
5096
|
brand_replacement: 'Nokia'
|
|
4947
5097
|
model_replacement: '$1$2$3'
|
|
@@ -4950,12 +5100,12 @@ device_parsers:
|
|
|
4950
5100
|
brand_replacement: 'Nokia'
|
|
4951
5101
|
model_replacement: 'Lumia $1'
|
|
4952
5102
|
# UCWEB Browser on Symbian
|
|
4953
|
-
- regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]
|
|
5103
|
+
- regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]{1,100}?)\)'
|
|
4954
5104
|
device_replacement: '$1 $2'
|
|
4955
5105
|
brand_replacement: '$1'
|
|
4956
5106
|
model_replacement: '$2'
|
|
4957
5107
|
# Nokia Symbian
|
|
4958
|
-
- regex: '\(Symbian(?:/3|); U; ([^;]
|
|
5108
|
+
- regex: '\(Symbian(?:/3|); U; ([^;]{1,200});'
|
|
4959
5109
|
device_replacement: 'Nokia $1'
|
|
4960
5110
|
brand_replacement: 'Nokia'
|
|
4961
5111
|
model_replacement: '$1'
|
|
@@ -4968,7 +5118,7 @@ device_parsers:
|
|
|
4968
5118
|
device_replacement: 'BlackBerry $1'
|
|
4969
5119
|
brand_replacement: 'BlackBerry'
|
|
4970
5120
|
model_replacement: '$1'
|
|
4971
|
-
- regex: 'Play[Bb]ook
|
|
5121
|
+
- regex: 'Play[Bb]ook.{1,200}RIM Tablet OS'
|
|
4972
5122
|
device_replacement: 'BlackBerry Playbook'
|
|
4973
5123
|
brand_replacement: 'BlackBerry'
|
|
4974
5124
|
model_replacement: 'Playbook'
|
|
@@ -5000,7 +5150,7 @@ device_parsers:
|
|
|
5000
5150
|
device_replacement: 'Palm Treo $1'
|
|
5001
5151
|
brand_replacement: 'Palm'
|
|
5002
5152
|
model_replacement: 'Treo $1'
|
|
5003
|
-
- regex: 'webOS
|
|
5153
|
+
- regex: 'webOS.{0,200}(P160U(?:NA|))/(\d+).(\d+)'
|
|
5004
5154
|
device_replacement: 'HP Veer'
|
|
5005
5155
|
brand_replacement: 'HP'
|
|
5006
5156
|
model_replacement: 'Veer'
|
|
@@ -5008,7 +5158,7 @@ device_parsers:
|
|
|
5008
5158
|
device_replacement: 'HP TouchPad'
|
|
5009
5159
|
brand_replacement: 'HP'
|
|
5010
5160
|
model_replacement: 'TouchPad'
|
|
5011
|
-
- regex: 'HPiPAQ([A-Za-z0-9]
|
|
5161
|
+
- regex: 'HPiPAQ([A-Za-z0-9]{1,20})/\d+\.\d+'
|
|
5012
5162
|
device_replacement: 'HP iPAQ $1'
|
|
5013
5163
|
brand_replacement: 'HP'
|
|
5014
5164
|
model_replacement: 'iPAQ $1'
|
|
@@ -5076,18 +5226,18 @@ device_parsers:
|
|
|
5076
5226
|
brand_replacement: 'Apple'
|
|
5077
5227
|
model_replacement: 'iPhone'
|
|
5078
5228
|
# @note: desktop applications show device info
|
|
5079
|
-
- regex: 'CFNetwork
|
|
5229
|
+
- regex: 'CFNetwork/.{0,100} Darwin/\d.{0,100}\(((?:Mac|iMac|PowerMac|PowerBook)[^\d]*)(\d+)(?:,|%2C)(\d+)'
|
|
5080
5230
|
device_replacement: '$1$2,$3'
|
|
5081
5231
|
brand_replacement: 'Apple'
|
|
5082
5232
|
model_replacement: '$1$2,$3'
|
|
5083
5233
|
# @note: newer desktop applications don't show device info
|
|
5084
5234
|
# This is here so as to not have them recorded as iOS-Device
|
|
5085
|
-
- regex: 'CFNetwork
|
|
5235
|
+
- regex: 'CFNetwork/.{0,100} Darwin/\d+\.\d+\.\d+ \(x86_64\)'
|
|
5086
5236
|
device_replacement: 'Mac'
|
|
5087
5237
|
brand_replacement: 'Apple'
|
|
5088
5238
|
model_replacement: 'Mac'
|
|
5089
5239
|
# @note: iOS applications do not show device info
|
|
5090
|
-
- regex: 'CFNetwork
|
|
5240
|
+
- regex: 'CFNetwork/.{0,100} Darwin/\d'
|
|
5091
5241
|
device_replacement: 'iOS-Device'
|
|
5092
5242
|
brand_replacement: 'Apple'
|
|
5093
5243
|
model_replacement: 'iOS-Device'
|
|
@@ -5131,7 +5281,7 @@ device_parsers:
|
|
|
5131
5281
|
device_replacement: 'Asus $1'
|
|
5132
5282
|
brand_replacement: 'Asus'
|
|
5133
5283
|
model_replacement: '$1'
|
|
5134
|
-
- regex: '(?:asus
|
|
5284
|
+
- regex: '(?:asus.{0,200}?ASUS|Asus|ASUS|asus)[\- ;]*((?:Transformer (?:Pad|Prime) |Transformer |Padfone |Nexus[ _]|)[A-Za-z0-9]+)'
|
|
5135
5285
|
device_replacement: 'Asus $1'
|
|
5136
5286
|
brand_replacement: 'Asus'
|
|
5137
5287
|
model_replacement: '$1'
|
|
@@ -5164,11 +5314,11 @@ device_parsers:
|
|
|
5164
5314
|
device_replacement: 'DoCoMo $1'
|
|
5165
5315
|
brand_replacement: 'DoCoMo'
|
|
5166
5316
|
model_replacement: '$1'
|
|
5167
|
-
- regex: '([A-Za-z0-9]
|
|
5317
|
+
- regex: '^.{0,50}?([A-Za-z0-9]{1,30})_W;FOMA'
|
|
5168
5318
|
device_replacement: 'DoCoMo $1'
|
|
5169
5319
|
brand_replacement: 'DoCoMo'
|
|
5170
5320
|
model_replacement: '$1'
|
|
5171
|
-
- regex: '([A-Za-z0-9]
|
|
5321
|
+
- regex: '^.{0,50}?([A-Za-z0-9]{1,30});FOMA'
|
|
5172
5322
|
device_replacement: 'DoCoMo $1'
|
|
5173
5323
|
brand_replacement: 'DoCoMo'
|
|
5174
5324
|
model_replacement: '$1'
|
|
@@ -5176,7 +5326,7 @@ device_parsers:
|
|
|
5176
5326
|
##########
|
|
5177
5327
|
# htc
|
|
5178
5328
|
##########
|
|
5179
|
-
- regex: '\b(?:HTC/|HTC/[a-z0-9]
|
|
5329
|
+
- regex: '\b(?:HTC/|HTC/[a-z0-9]{1,20}/|)HTC[ _\-;]? {0,2}(.{0,200}?)(?:-?Mozilla|fingerPrint|[;/\(\)]|$)'
|
|
5180
5330
|
device_replacement: 'HTC $1'
|
|
5181
5331
|
brand_replacement: 'HTC'
|
|
5182
5332
|
model_replacement: '$1'
|
|
@@ -5237,18 +5387,18 @@ device_parsers:
|
|
|
5237
5387
|
device_replacement: '$1'
|
|
5238
5388
|
brand_replacement: '$2'
|
|
5239
5389
|
model_replacement: '$3'
|
|
5240
|
-
- regex: '(HbbTV)/1\.1\.1
|
|
5390
|
+
- regex: '(HbbTV)/1\.1\.1.{0,200}CE-HTML/1\.\d;(Vendor/|)(THOM[^;]{0,200}?)[;\s].{0,30}(LF[^;]{1,200});?'
|
|
5241
5391
|
device_replacement: '$1'
|
|
5242
5392
|
brand_replacement: 'Thomson'
|
|
5243
5393
|
model_replacement: '$4'
|
|
5244
|
-
- regex: '(HbbTV)(?:/1\.1\.1|) ?(?: \(;;;;;\)|);
|
|
5394
|
+
- regex: '(HbbTV)(?:/1\.1\.1|) ?(?: \(;;;;;\)|); {0,2}CE-HTML(?:/1\.\d|); {0,2}([^ ]{1,30}) ([^;]{1,200});'
|
|
5245
5395
|
device_replacement: '$1'
|
|
5246
5396
|
brand_replacement: '$2'
|
|
5247
5397
|
model_replacement: '$3'
|
|
5248
5398
|
- regex: '(HbbTV)/1\.1\.1 \(;;;;;\) Maple_2011'
|
|
5249
5399
|
device_replacement: '$1'
|
|
5250
5400
|
brand_replacement: 'Samsung'
|
|
5251
|
-
- regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]{0,30}; ?(?:CUS:([^;]
|
|
5401
|
+
- regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]{0,30}; ?(?:CUS:([^;]{0,200})|([^;]{1,200})) ?; ?([^;]{0,30})'
|
|
5252
5402
|
device_replacement: '$1'
|
|
5253
5403
|
brand_replacement: '$2$3'
|
|
5254
5404
|
model_replacement: '$4'
|
|
@@ -5258,7 +5408,7 @@ device_parsers:
|
|
|
5258
5408
|
##########
|
|
5259
5409
|
# LGE NetCast TV
|
|
5260
5410
|
##########
|
|
5261
|
-
- regex: 'LGE; (?:Media\/|)([^;]
|
|
5411
|
+
- regex: 'LGE; (?:Media\/|)([^;]{0,200});[^;]{0,200};[^;]{0,200};?\); "?LG NetCast(\.TV|\.Media|)-\d+'
|
|
5262
5412
|
device_replacement: 'NetCast$2'
|
|
5263
5413
|
brand_replacement: 'LG'
|
|
5264
5414
|
model_replacement: '$1'
|
|
@@ -5266,11 +5416,11 @@ device_parsers:
|
|
|
5266
5416
|
##########
|
|
5267
5417
|
# InettvBrowser
|
|
5268
5418
|
##########
|
|
5269
|
-
- regex: 'InettvBrowser/[0-9]
|
|
5419
|
+
- regex: 'InettvBrowser/[0-9]{1,30}\.[0-9A-Z]{1,30} \([^;]{0,200};(Sony)([^;]{0,200});[^;]{0,200};[^\)]{0,10}\)'
|
|
5270
5420
|
device_replacement: 'Inettv'
|
|
5271
5421
|
brand_replacement: '$1'
|
|
5272
5422
|
model_replacement: '$2'
|
|
5273
|
-
- regex: 'InettvBrowser/[0-9]
|
|
5423
|
+
- regex: 'InettvBrowser/[0-9]{1,30}\.[0-9A-Z]{1,30} \([^;]{0,200};([^;]{0,200});[^;]{0,200};[^\)]{0,10}\)'
|
|
5274
5424
|
device_replacement: 'Inettv'
|
|
5275
5425
|
brand_replacement: 'Generic_Inettv'
|
|
5276
5426
|
model_replacement: '$1'
|
|
@@ -5307,7 +5457,7 @@ device_parsers:
|
|
|
5307
5457
|
device_replacement: 'Microsoft $1'
|
|
5308
5458
|
brand_replacement: 'Microsoft'
|
|
5309
5459
|
model_replacement: '$1'
|
|
5310
|
-
- regex: '(?:MSIE|XBMC)
|
|
5460
|
+
- regex: '(?:MSIE|XBMC).{0,200}\b(Xbox)\b'
|
|
5311
5461
|
device_replacement: '$1'
|
|
5312
5462
|
brand_replacement: 'Microsoft'
|
|
5313
5463
|
model_replacement: '$1'
|
|
@@ -5368,12 +5518,12 @@ device_parsers:
|
|
|
5368
5518
|
# Samsung
|
|
5369
5519
|
##########
|
|
5370
5520
|
# Samsung Smart-TV
|
|
5371
|
-
- regex: '(SMART-TV);
|
|
5521
|
+
- regex: '(SMART-TV); .{0,200} Tizen '
|
|
5372
5522
|
device_replacement: 'Samsung $1'
|
|
5373
5523
|
brand_replacement: 'Samsung'
|
|
5374
5524
|
model_replacement: '$1'
|
|
5375
5525
|
# Samsung Symbian Devices
|
|
5376
|
-
- regex: 'SymbianOS/9\.\d
|
|
5526
|
+
- regex: 'SymbianOS/9\.\d.{0,200} Samsung[/\-]([A-Za-z0-9 \-]+)'
|
|
5377
5527
|
device_replacement: 'Samsung $1'
|
|
5378
5528
|
brand_replacement: 'Samsung'
|
|
5379
5529
|
model_replacement: '$1'
|
|
@@ -5381,7 +5531,7 @@ device_parsers:
|
|
|
5381
5531
|
device_replacement: '$1 $2$3'
|
|
5382
5532
|
brand_replacement: '$1'
|
|
5383
5533
|
model_replacement: '$2-$3'
|
|
5384
|
-
- regex: 'SAMSUNG-ANDROID-MMS/([^;/]
|
|
5534
|
+
- regex: 'SAMSUNG-ANDROID-MMS/([^;/]{1,100})'
|
|
5385
5535
|
device_replacement: '$1'
|
|
5386
5536
|
brand_replacement: 'Samsung'
|
|
5387
5537
|
model_replacement: '$1'
|
|
@@ -5428,7 +5578,7 @@ device_parsers:
|
|
|
5428
5578
|
##########
|
|
5429
5579
|
# Sony
|
|
5430
5580
|
##########
|
|
5431
|
-
- regex: 'Android [^;]
|
|
5581
|
+
- regex: 'Android [^;]{1,200}; ([^ ]+) (Sony)/'
|
|
5432
5582
|
device_replacement: '$2 $1'
|
|
5433
5583
|
brand_replacement: '$2'
|
|
5434
5584
|
model_replacement: '$1'
|
|
@@ -5462,33 +5612,33 @@ device_parsers:
|
|
|
5462
5612
|
#########
|
|
5463
5613
|
# Android General Device Matching (far from perfect)
|
|
5464
5614
|
#########
|
|
5465
|
-
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; WOWMobile (
|
|
5615
|
+
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; WOWMobile (.{1,200})( Build[/ ]|\))'
|
|
5466
5616
|
brand_replacement: 'Generic_Android'
|
|
5467
5617
|
model_replacement: '$1'
|
|
5468
|
-
- regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{0,2}
|
|
5618
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{0,2} {0,2}; {0,2}(.{1,200}?)( Build[/ ]|\))'
|
|
5469
5619
|
brand_replacement: 'Generic_Android'
|
|
5470
5620
|
model_replacement: '$1'
|
|
5471
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
|
5621
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,2}[A-Za-z]{2}[_\-][A-Za-z]{0,2}\-? {0,2}; {0,2}(.{1,200}?)( Build[/ ]|\))'
|
|
5472
5622
|
brand_replacement: 'Generic_Android'
|
|
5473
5623
|
model_replacement: '$1'
|
|
5474
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
|
5624
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,2}[A-Za-z]{0,2}\- {0,2}; {0,2}(.{1,200}?)( Build[/ ]|\))'
|
|
5475
5625
|
brand_replacement: 'Generic_Android'
|
|
5476
5626
|
model_replacement: '$1'
|
|
5477
5627
|
# No build info at all - "Build" follows locale immediately
|
|
5478
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
|
5628
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,2}[a-z]{0,2}[_\-]?[A-Za-z]{0,2};?( Build[/ ]|\))'
|
|
5479
5629
|
device_replacement: 'Generic Smartphone'
|
|
5480
5630
|
brand_replacement: 'Generic'
|
|
5481
5631
|
model_replacement: 'Smartphone'
|
|
5482
|
-
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|);
|
|
5632
|
+
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); {0,3}\-?[A-Za-z]{2}; {0,2}(.{1,50}?)( Build[/ ]|\))'
|
|
5483
5633
|
brand_replacement: 'Generic_Android'
|
|
5484
5634
|
model_replacement: '$1'
|
|
5485
|
-
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]
|
|
5635
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]{1,100}?)(?: Build|\) AppleWebKit).{1,200}? Mobile Safari'
|
|
5486
5636
|
brand_replacement: 'Generic_Android'
|
|
5487
5637
|
model_replacement: '$1'
|
|
5488
|
-
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]
|
|
5638
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]{1,100}?)(?: Build|\) AppleWebKit).{1,200}? Safari'
|
|
5489
5639
|
brand_replacement: 'Generic_Android_Tablet'
|
|
5490
5640
|
model_replacement: '$1'
|
|
5491
|
-
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]
|
|
5641
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]{1,100}?)(?: Build|\))'
|
|
5492
5642
|
brand_replacement: 'Generic_Android'
|
|
5493
5643
|
model_replacement: '$1'
|
|
5494
5644
|
|
|
@@ -5513,7 +5663,7 @@ device_parsers:
|
|
|
5513
5663
|
##########
|
|
5514
5664
|
# Generic Tablet
|
|
5515
5665
|
##########
|
|
5516
|
-
- regex: '(Android 3\.\d|Opera Tablet|Tablet;
|
|
5666
|
+
- regex: '(Android 3\.\d|Opera Tablet|Tablet; .{1,100}Firefox/|Android.{0,100}(?:Tab|Pad))'
|
|
5517
5667
|
regex_flag: 'i'
|
|
5518
5668
|
device_replacement: 'Generic Tablet'
|
|
5519
5669
|
brand_replacement: 'Generic'
|
|
@@ -5522,7 +5672,7 @@ device_parsers:
|
|
|
5522
5672
|
##########
|
|
5523
5673
|
# Generic Smart Phone
|
|
5524
5674
|
##########
|
|
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;
|
|
5675
|
+
- 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
5676
|
device_replacement: 'Generic Smartphone'
|
|
5527
5677
|
brand_replacement: 'Generic'
|
|
5528
5678
|
model_replacement: 'Smartphone'
|
|
@@ -5535,7 +5685,7 @@ device_parsers:
|
|
|
5535
5685
|
##########
|
|
5536
5686
|
# Spiders (this is a hack...)
|
|
5537
5687
|
##########
|
|
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
|
|
5688
|
+
- 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
5689
|
regex_flag: 'i'
|
|
5540
5690
|
device_replacement: 'Spider'
|
|
5541
5691
|
brand_replacement: 'Spider'
|