user_agent_parser 2.5.2 → 2.5.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of user_agent_parser might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/user_agent_parser/device.rb +3 -1
- data/lib/user_agent_parser/operating_system.rb +3 -1
- data/lib/user_agent_parser/user_agent.rb +3 -1
- data/vendor/uap-core/regexes.yaml +416 -340
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74b02298a0828b22d71e294ab077e484496ebb8fda03dbf41e3d01db8c2de4ea
|
4
|
+
data.tar.gz: 005e91640c3294abd45ab9eb31405bf5a5b245606606712da136d959b112b3d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adf323d558143989636c1635dd97b0559c455aa339a68ca230212be2c34672cc951234fa6db8d2e5d684ab23fe8b04a1927de872da7194219324ad482f325812
|
7
|
+
data.tar.gz: a4fa3dd7b32670821dfb547f217951ba2e6ecc639327e24e19f805c258881ec55bc681834d42e43b09ab789bd9d5614065ae7eba0501cdcaca1133a87d56602d
|
@@ -2,12 +2,14 @@
|
|
2
2
|
|
3
3
|
module UserAgentParser
|
4
4
|
class Device
|
5
|
+
DEFAULT_FAMILY = 'Other'
|
6
|
+
|
5
7
|
attr_reader :family, :model, :brand
|
6
8
|
|
7
9
|
alias name family
|
8
10
|
|
9
11
|
def initialize(family = nil, model = nil, brand = nil)
|
10
|
-
@family = family ||
|
12
|
+
@family = family || DEFAULT_FAMILY
|
11
13
|
@model = model || @family
|
12
14
|
@brand = brand
|
13
15
|
end
|
@@ -2,11 +2,13 @@
|
|
2
2
|
|
3
3
|
module UserAgentParser
|
4
4
|
class OperatingSystem
|
5
|
+
DEFAULT_FAMILY = 'Other'
|
6
|
+
|
5
7
|
attr_reader :family, :version
|
6
8
|
|
7
9
|
alias name family
|
8
10
|
|
9
|
-
def initialize(family =
|
11
|
+
def initialize(family = DEFAULT_FAMILY, version = nil)
|
10
12
|
@family = family
|
11
13
|
@version = version
|
12
14
|
end
|
@@ -2,12 +2,14 @@
|
|
2
2
|
|
3
3
|
module UserAgentParser
|
4
4
|
class UserAgent
|
5
|
+
DEFAULT_FAMILY = 'Other'
|
6
|
+
|
5
7
|
attr_reader :family, :version, :os, :device
|
6
8
|
|
7
9
|
alias name family
|
8
10
|
|
9
11
|
def initialize(family = nil, version = nil, os = nil, device = nil)
|
10
|
-
@family = family ||
|
12
|
+
@family = family || DEFAULT_FAMILY
|
11
13
|
@version = version
|
12
14
|
@os = os
|
13
15
|
@device = device
|
@@ -2,6 +2,7 @@ user_agent_parsers:
|
|
2
2
|
#### SPECIAL CASES TOP ####
|
3
3
|
|
4
4
|
# CFNetwork Podcast catcher Applications
|
5
|
+
- regex: '^(Luminary)[Stage]+/(\d+) CFNetwork'
|
5
6
|
- regex: '(ESPN)[%20| ]+Radio/(\d+)\.(\d+)\.(\d+) CFNetwork'
|
6
7
|
- regex: '(Antenna)/(\d+) CFNetwork'
|
7
8
|
family_replacement: 'AntennaPod'
|
@@ -12,6 +13,7 @@ user_agent_parsers:
|
|
12
13
|
- regex: '^(.*)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork'
|
13
14
|
|
14
15
|
# Podcast catchers
|
16
|
+
- regex: '^(Luminary)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
15
17
|
- regex: '(espn\.go)'
|
16
18
|
family_replacement: 'ESPN'
|
17
19
|
- regex: '(espnradio\.com)'
|
@@ -48,6 +50,10 @@ user_agent_parsers:
|
|
48
50
|
- regex: '(Tableau)/(\d+)\.(\d+)'
|
49
51
|
family_replacement: 'Tableau'
|
50
52
|
|
53
|
+
# Adobe CreativeCloud
|
54
|
+
- regex: 'AppleWebKit/\d+\.\d+.* Safari.* (CreativeCloud)/(\d+)\.(\d+).(\d+)'
|
55
|
+
family_replacement: 'Adobe CreativeCloud'
|
56
|
+
|
51
57
|
# Salesforce
|
52
58
|
- regex: '(Salesforce)(?:.)\/(\d+)\.(\d?)'
|
53
59
|
|
@@ -73,12 +79,12 @@ user_agent_parsers:
|
|
73
79
|
|
74
80
|
# Twitter
|
75
81
|
- regex: '(Twitterbot)/(\d+)\.(\d+)'
|
76
|
-
family_replacement: '
|
82
|
+
family_replacement: 'Twitterbot'
|
77
83
|
|
78
|
-
# Bots Pattern '/
|
84
|
+
# Bots Pattern 'name/0.0.0'
|
79
85
|
- regex: '/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
80
|
-
# Bots Pattern 'name/0.0'
|
81
|
-
- regex: '\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
86
|
+
# Bots Pattern 'name/0.0.0'
|
87
|
+
- 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+)|)'
|
82
88
|
|
83
89
|
# MSIECrawler
|
84
90
|
- regex: '(MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|);.* MSIECrawler'
|
@@ -88,18 +94,18 @@ user_agent_parsers:
|
|
88
94
|
- regex: '(DAVdroid)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
89
95
|
|
90
96
|
# Downloader ...
|
91
|
-
- regex: '(Google-HTTP-Java-Client|Apache-HttpClient|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
97
|
+
- 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+)|)|)'
|
92
98
|
|
93
99
|
# Pinterestbot
|
94
100
|
- regex: '(Pinterest(?:bot|))/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)[;\s(]+\+https://www.pinterest.com/bot.html'
|
95
101
|
family_replacement: 'Pinterestbot'
|
96
102
|
|
97
103
|
# Bots
|
98
|
-
- 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|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|
|
104
|
+
- regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
|
99
105
|
|
100
106
|
# AWS S3 Clients
|
101
107
|
# must come before "Bots General matcher" to catch "boto"/"boto3" before "bot"
|
102
|
-
- regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2
|
108
|
+
- regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
103
109
|
|
104
110
|
# Facebook
|
105
111
|
# Must come before "Bots General matcher" to catch OrangeBotswana
|
@@ -146,6 +152,9 @@ user_agent_parsers:
|
|
146
152
|
- regex: 'Mozilla.*Mobile.*(Onefootball)\/Android.(\d+)\.(\d+)\.(\d+)'
|
147
153
|
# Snapchat
|
148
154
|
- regex: '(Snapchat)\/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
155
|
+
# Twitter
|
156
|
+
- regex: '(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|)'
|
157
|
+
family_replacement: 'Twitter'
|
149
158
|
|
150
159
|
# Basilisk
|
151
160
|
- regex: '(Firefox)/(\d+)\.(\d+) Basilisk/(\d+)'
|
@@ -308,6 +317,10 @@ user_agent_parsers:
|
|
308
317
|
# Edge Mobile
|
309
318
|
- regex: 'Windows Phone .*(Edge)/(\d+)\.(\d+)'
|
310
319
|
family_replacement: 'Edge Mobile'
|
320
|
+
- regex: '(EdgA)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
321
|
+
family_replacement: 'Edge Mobile'
|
322
|
+
- regex: '(EdgiOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
323
|
+
family_replacement: 'Edge Mobile'
|
311
324
|
|
312
325
|
# Samsung Internet (based on Chrome, but lacking some features)
|
313
326
|
- regex: '(SamsungBrowser)/(\d+)\.(\d+)'
|
@@ -347,9 +360,21 @@ user_agent_parsers:
|
|
347
360
|
- regex: '(Mint Browser)/(\d+)\.(\d+)\.(\d+)'
|
348
361
|
family_replacement: 'Mint Browser'
|
349
362
|
|
363
|
+
# TopBuzz Android must go before Chrome Mobile WebView
|
364
|
+
- regex: '(TopBuzz)/(\d+).(\d+).(\d+)'
|
365
|
+
family_replacement: 'TopBuzz'
|
366
|
+
|
350
367
|
# Google Search App on Android, eg:
|
351
368
|
- regex: 'Mozilla.+Android.+(GSA)/(\d+)\.(\d+)\.(\d+)'
|
352
369
|
family_replacement: 'Google'
|
370
|
+
|
371
|
+
# QQ Browsers
|
372
|
+
- regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
373
|
+
family_replacement: 'QQ Browser Mini'
|
374
|
+
- regex: '(MQQBrowser)(?:/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
375
|
+
family_replacement: 'QQ Browser Mobile'
|
376
|
+
- regex: '(QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|)'
|
377
|
+
family_replacement: 'QQ Browser'
|
353
378
|
|
354
379
|
# Chrome Mobile
|
355
380
|
- regex: 'Version/.+(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
@@ -377,14 +402,6 @@ user_agent_parsers:
|
|
377
402
|
- regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
|
378
403
|
family_replacement: 'Sogou Explorer'
|
379
404
|
|
380
|
-
# QQ Browsers
|
381
|
-
- regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
382
|
-
family_replacement: 'QQ Browser Mini'
|
383
|
-
- regex: '(MQQBrowser)(?:/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
384
|
-
family_replacement: 'QQ Browser Mobile'
|
385
|
-
- regex: '(QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|)'
|
386
|
-
family_replacement: 'QQ Browser'
|
387
|
-
|
388
405
|
# Rackspace Monitoring
|
389
406
|
- regex: '(Rackspace Monitoring)/(\d+)\.(\d+)'
|
390
407
|
family_replacement: 'RackspaceBot'
|
@@ -417,6 +434,9 @@ user_agent_parsers:
|
|
417
434
|
- regex: '(Whale)/(\d+)\.(\d+)\.(\d+)'
|
418
435
|
family_replacement: 'Whale'
|
419
436
|
|
437
|
+
# 1Password
|
438
|
+
- regex: '(1Password)/(\d+)\.(\d+)\.(\d+)'
|
439
|
+
|
420
440
|
# Ghost
|
421
441
|
# @ref: http://www.ghost.org
|
422
442
|
- regex: '(Ghost)/(\d+)\.(\d+)\.(\d+)'
|
@@ -454,7 +474,7 @@ user_agent_parsers:
|
|
454
474
|
v1_replacement: '2013'
|
455
475
|
|
456
476
|
# Outlook 2016
|
457
|
-
- regex: 'Microsoft Outlook (?:Mail )?16\.\d+\.\d
|
477
|
+
- regex: 'Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16'
|
458
478
|
family_replacement: 'Outlook'
|
459
479
|
v1_replacement: '2016'
|
460
480
|
|
@@ -484,6 +504,11 @@ user_agent_parsers:
|
|
484
504
|
- regex: '(Lotus-Notes)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
485
505
|
family_replacement: 'Lotus Notes'
|
486
506
|
|
507
|
+
# Superhuman Mail Client
|
508
|
+
# @ref: https://www.superhuman.com
|
509
|
+
- regex: 'Superhuman'
|
510
|
+
family_replacement: 'Superhuman'
|
511
|
+
|
487
512
|
# Vivaldi uses "Vivaldi"
|
488
513
|
- regex: '(Vivaldi)/(\d+)\.(\d+)\.(\d+)'
|
489
514
|
|
@@ -657,6 +682,14 @@ user_agent_parsers:
|
|
657
682
|
- regex: '(BonEcho)/(\d+)\.(\d+)\.?([ab]?\d+|)'
|
658
683
|
family_replacement: 'Bon Echo'
|
659
684
|
|
685
|
+
# topbuzz on IOS
|
686
|
+
- regex: '(TopBuzz) com.alex.NewsMaster/(\d+).(\d+).(\d+)'
|
687
|
+
family_replacement: 'TopBuzz'
|
688
|
+
- regex: '(TopBuzz) com.mobilesrepublic.newsrepublic/(\d+).(\d+).(\d+)'
|
689
|
+
family_replacement: 'TopBuzz'
|
690
|
+
- regex: '(TopBuzz) com.topbuzz.videoen/(\d+).(\d+).(\d+)'
|
691
|
+
family_replacement: 'TopBuzz'
|
692
|
+
|
660
693
|
# @note: iOS / OSX Applications
|
661
694
|
- regex: '(iPod|iPhone|iPad).+GSA/(\d+)\.(\d+)\.(\d+) Mobile'
|
662
695
|
family_replacement: 'Google'
|
@@ -810,13 +843,23 @@ user_agent_parsers:
|
|
810
843
|
family_replacement: 'Python Requests'
|
811
844
|
|
812
845
|
# headless user-agents
|
813
|
-
- regex: '\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
846
|
+
- regex: '\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
847
|
+
|
848
|
+
# Asynchronous HTTP Client/Server for asyncio and Python (https://aiohttp.readthedocs.io/)
|
849
|
+
- regex: '(Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+)'
|
850
|
+
# Asynchronous HTTP Client/Server for asyncio and Python (https://aiohttp.readthedocs.io/)
|
851
|
+
- regex: '(Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+)'
|
814
852
|
|
815
853
|
- regex: '(Java)[/ ]{0,1}\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)'
|
816
854
|
|
817
855
|
# Cloud Storage Clients
|
818
856
|
- regex: '^(Cyberduck)/(\d+)\.(\d+)\.(\d+)(?:\.\d+|)'
|
819
857
|
- regex: '^(S3 Browser) (\d+)-(\d+)-(\d+)(?:\s*http://s3browser\.com|)'
|
858
|
+
- regex: '(S3Gof3r)'
|
859
|
+
# IBM COS (Cloud Object Storage) API
|
860
|
+
- regex: '\b(ibm-cos-sdk-(?:core|java|js|python))/(\d+)\.(\d+)(?:\.(\d+)|)'
|
861
|
+
# rusoto - Rusoto - AWS SDK for Rust - https://github.com/rusoto/rusoto
|
862
|
+
- regex: '^(rusoto)/(\d+)\.(\d+)\.(\d+)'
|
820
863
|
# rclone - rsync for cloud storage - https://rclone.org/
|
821
864
|
- regex: '^(rclone)/v(\d+)\.(\d+)'
|
822
865
|
|
@@ -932,6 +975,9 @@ os_parsers:
|
|
932
975
|
- regex: '(Android) Honeycomb'
|
933
976
|
os_v1_replacement: '3'
|
934
977
|
|
978
|
+
# Android 9; Android 10;
|
979
|
+
- regex: '(Android) (\d+);'
|
980
|
+
|
935
981
|
# UCWEB
|
936
982
|
- regex: '^UCWEB.*; (Adr) (\d+)\.(\d+)(?:[.\-]([a-z0-9]+)|);'
|
937
983
|
os_replacement: 'Android'
|
@@ -1385,6 +1431,12 @@ os_parsers:
|
|
1385
1431
|
- regex: '(Black[Bb]erry)'
|
1386
1432
|
os_replacement: 'BlackBerry OS'
|
1387
1433
|
|
1434
|
+
##########
|
1435
|
+
# KaiOS
|
1436
|
+
##########
|
1437
|
+
- regex: '(K[Aa][Ii]OS)\/(\d+)\.(\d+)(?:\.(\d+)|)'
|
1438
|
+
os_replacement: 'KaiOS'
|
1439
|
+
|
1388
1440
|
##########
|
1389
1441
|
# Firefox OS
|
1390
1442
|
##########
|
@@ -1487,6 +1539,8 @@ os_parsers:
|
|
1487
1539
|
os_replacement: 'Red Hat'
|
1488
1540
|
- regex: '\((freebsd)(\d+)\.(\d+)\)'
|
1489
1541
|
os_replacement: 'FreeBSD'
|
1542
|
+
- regex: 'linux'
|
1543
|
+
os_replacement: 'Linux'
|
1490
1544
|
|
1491
1545
|
# Roku Digital-Video-Players https://www.roku.com/
|
1492
1546
|
- regex: '^(Roku)/DVP-(\d+)\.(\d+)'
|
@@ -1552,11 +1606,11 @@ device_parsers:
|
|
1552
1606
|
# 3Q
|
1553
1607
|
# @ref: http://www.3q-int.com/
|
1554
1608
|
#########
|
1555
|
-
- regex: '; *([BLRQ]C\d{4}[A-Z]
|
1609
|
+
- regex: '; *([BLRQ]C\d{4}[A-Z]+?)(?: Build|\) AppleWebKit)'
|
1556
1610
|
device_replacement: '3Q $1'
|
1557
1611
|
brand_replacement: '3Q'
|
1558
1612
|
model_replacement: '$1'
|
1559
|
-
- regex: '; *(?:3Q_)([^;/]
|
1613
|
+
- regex: '; *(?:3Q_)([^;/]+?)(?: Build|\) AppleWebKit)'
|
1560
1614
|
device_replacement: '3Q $1'
|
1561
1615
|
brand_replacement: '3Q'
|
1562
1616
|
model_replacement: '$1'
|
@@ -1565,19 +1619,19 @@ device_parsers:
|
|
1565
1619
|
# Acer
|
1566
1620
|
# @ref: http://us.acer.com/ac/en/US/content/group/tablets
|
1567
1621
|
#########
|
1568
|
-
- regex: 'Android [34].*; *(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[^;/]
|
1622
|
+
- regex: 'Android [34].*; *(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[^;/]+?)(?: Build|\) AppleWebKit)'
|
1569
1623
|
device_replacement: '$1'
|
1570
1624
|
brand_replacement: 'Acer'
|
1571
1625
|
model_replacement: '$1'
|
1572
|
-
- regex: '; *Acer Iconia Tab ([^;/]
|
1626
|
+
- regex: '; *Acer Iconia Tab ([^;/]+?)(?: Build|\) AppleWebKit)'
|
1573
1627
|
device_replacement: '$1'
|
1574
1628
|
brand_replacement: 'Acer'
|
1575
1629
|
model_replacement: '$1'
|
1576
|
-
- regex: '; *(Z1[1235]0|E320[^/]*|S500|S510|Liquid[^;/]*|Iconia A\d+) Build'
|
1630
|
+
- regex: '; *(Z1[1235]0|E320[^/]*|S500|S510|Liquid[^;/]*|Iconia A\d+)(?: Build|\) AppleWebKit)'
|
1577
1631
|
device_replacement: '$1'
|
1578
1632
|
brand_replacement: 'Acer'
|
1579
1633
|
model_replacement: '$1'
|
1580
|
-
- regex: '; *(Acer |ACER )([^;/]
|
1634
|
+
- regex: '; *(Acer |ACER )([^;/]+?)(?: Build|\) AppleWebKit)'
|
1581
1635
|
device_replacement: '$1$2'
|
1582
1636
|
brand_replacement: 'Acer'
|
1583
1637
|
model_replacement: '$2'
|
@@ -1588,7 +1642,7 @@ device_parsers:
|
|
1588
1642
|
# @note: VegaBean and VegaComb (names derived from jellybean, honeycomb) are
|
1589
1643
|
# custom ROM builds for Vega
|
1590
1644
|
#########
|
1591
|
-
- regex: '; *(Advent |)(Vega(?:Bean|Comb|))
|
1645
|
+
- regex: '; *(Advent |)(Vega(?:Bean|Comb|)).*?(?: Build|\) AppleWebKit)'
|
1592
1646
|
device_replacement: '$1$2'
|
1593
1647
|
brand_replacement: 'Advent'
|
1594
1648
|
model_replacement: '$2'
|
@@ -1597,7 +1651,7 @@ device_parsers:
|
|
1597
1651
|
# Ainol
|
1598
1652
|
# @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product
|
1599
1653
|
#########
|
1600
|
-
- regex: '; *(Ainol |)((?:NOVO|[Nn]ovo)[^;/]
|
1654
|
+
- regex: '; *(Ainol |)((?:NOVO|[Nn]ovo)[^;/]+?)(?: Build|\) AppleWebKit)'
|
1601
1655
|
device_replacement: '$1$2'
|
1602
1656
|
brand_replacement: 'Ainol'
|
1603
1657
|
model_replacement: '$2'
|
@@ -1611,7 +1665,7 @@ device_parsers:
|
|
1611
1665
|
device_replacement: '$1'
|
1612
1666
|
brand_replacement: 'Airis'
|
1613
1667
|
model_replacement: '$1'
|
1614
|
-
- regex: '; *(OnePAD[^;/]
|
1668
|
+
- regex: '; *(OnePAD[^;/]+?)(?: Build|\) AppleWebKit)'
|
1615
1669
|
regex_flag: 'i'
|
1616
1670
|
device_replacement: '$1'
|
1617
1671
|
brand_replacement: 'Airis'
|
@@ -1621,7 +1675,7 @@ device_parsers:
|
|
1621
1675
|
# Airpad
|
1622
1676
|
# @ref: ??
|
1623
1677
|
#########
|
1624
|
-
- regex: '; *Airpad[ \-]([^;/]
|
1678
|
+
- regex: '; *Airpad[ \-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
1625
1679
|
device_replacement: 'Airpad $1'
|
1626
1680
|
brand_replacement: 'Airpad'
|
1627
1681
|
model_replacement: '$1'
|
@@ -1630,29 +1684,29 @@ device_parsers:
|
|
1630
1684
|
# Alcatel - TCT
|
1631
1685
|
# @ref: http://www.alcatelonetouch.com/global-en/products/smartphones.html
|
1632
1686
|
#########
|
1633
|
-
- regex: '; *(one ?touch) (EVO7|T10|T20) Build'
|
1687
|
+
- regex: '; *(one ?touch) (EVO7|T10|T20)(?: Build|\) AppleWebKit)'
|
1634
1688
|
device_replacement: 'Alcatel One Touch $2'
|
1635
1689
|
brand_replacement: 'Alcatel'
|
1636
1690
|
model_replacement: 'One Touch $2'
|
1637
|
-
- regex: '; *(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]
|
1691
|
+
- regex: '; *(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]+?)(?: Build|\) AppleWebKit)'
|
1638
1692
|
regex_flag: 'i'
|
1639
1693
|
device_replacement: 'Alcatel One Touch $1'
|
1640
1694
|
brand_replacement: 'Alcatel'
|
1641
1695
|
model_replacement: 'One Touch $1'
|
1642
|
-
- regex: '; *(TCL)[ _]([^;/]
|
1696
|
+
- regex: '; *(TCL)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
1643
1697
|
device_replacement: '$1 $2'
|
1644
1698
|
brand_replacement: '$1'
|
1645
1699
|
model_replacement: '$2'
|
1646
1700
|
# operator specific models
|
1647
|
-
- regex: '; *(Vodafone Smart II|Optimus_Madrid) Build'
|
1701
|
+
- regex: '; *(Vodafone Smart II|Optimus_Madrid)(?: Build|\) AppleWebKit)'
|
1648
1702
|
device_replacement: 'Alcatel $1'
|
1649
1703
|
brand_replacement: 'Alcatel'
|
1650
1704
|
model_replacement: '$1'
|
1651
|
-
- regex: '; *BASE_Lutea_3 Build'
|
1705
|
+
- regex: '; *BASE_Lutea_3(?: Build|\) AppleWebKit)'
|
1652
1706
|
device_replacement: 'Alcatel One Touch 998'
|
1653
1707
|
brand_replacement: 'Alcatel'
|
1654
1708
|
model_replacement: 'One Touch 998'
|
1655
|
-
- regex: '; *BASE_Varia Build'
|
1709
|
+
- regex: '; *BASE_Varia(?: Build|\) AppleWebKit)'
|
1656
1710
|
device_replacement: 'Alcatel One Touch 918D'
|
1657
1711
|
brand_replacement: 'Alcatel'
|
1658
1712
|
model_replacement: 'One Touch 918D'
|
@@ -1661,7 +1715,7 @@ device_parsers:
|
|
1661
1715
|
# Allfine
|
1662
1716
|
# @ref: http://www.myallfine.com/Products.asp
|
1663
1717
|
#########
|
1664
|
-
- regex: '; *((?:FINE|Fine)\d[^;/]
|
1718
|
+
- regex: '; *((?:FINE|Fine)\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
1665
1719
|
device_replacement: '$1'
|
1666
1720
|
brand_replacement: 'Allfine'
|
1667
1721
|
model_replacement: '$1'
|
@@ -1670,15 +1724,15 @@ device_parsers:
|
|
1670
1724
|
# Allview
|
1671
1725
|
# @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/
|
1672
1726
|
#########
|
1673
|
-
- regex: '; *(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED)
|
1727
|
+
- regex: '; *(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).*?)(?: Build|\) AppleWebKit)'
|
1674
1728
|
device_replacement: '$1$2'
|
1675
1729
|
brand_replacement: 'Allview'
|
1676
1730
|
model_replacement: '$2'
|
1677
|
-
- regex: '; *(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy) Build'
|
1731
|
+
- regex: '; *(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy)(?: Build|\) AppleWebKit)'
|
1678
1732
|
device_replacement: '$1$2'
|
1679
1733
|
brand_replacement: 'Allview'
|
1680
1734
|
model_replacement: '$2'
|
1681
|
-
- regex: '; *(ALLVIEW[ _]?|Allview[ _]?)([^;/]
|
1735
|
+
- regex: '; *(ALLVIEW[ _]?|Allview[ _]?)([^;/]*?)(?: Build|\) AppleWebKit)'
|
1682
1736
|
device_replacement: '$1$2'
|
1683
1737
|
brand_replacement: 'Allview'
|
1684
1738
|
model_replacement: '$2'
|
@@ -1688,11 +1742,11 @@ device_parsers:
|
|
1688
1742
|
# @ref: http://www.allwinner.com/
|
1689
1743
|
# @models: A31 (13.3"),A20,A10,
|
1690
1744
|
#########
|
1691
|
-
- regex: '; *(A13-MID) Build'
|
1745
|
+
- regex: '; *(A13-MID)(?: Build|\) AppleWebKit)'
|
1692
1746
|
device_replacement: '$1'
|
1693
1747
|
brand_replacement: 'Allwinner'
|
1694
1748
|
model_replacement: '$1'
|
1695
|
-
- regex: '; *(Allwinner)[ _\-]?([^;/]
|
1749
|
+
- regex: '; *(Allwinner)[ _\-]?([^;/]+?)(?: Build|\) AppleWebKit)'
|
1696
1750
|
device_replacement: '$1 $2'
|
1697
1751
|
brand_replacement: 'Allwinner'
|
1698
1752
|
model_replacement: '$1'
|
@@ -1701,7 +1755,7 @@ device_parsers:
|
|
1701
1755
|
# Amaway
|
1702
1756
|
# @ref: http://www.amaway.cn/
|
1703
1757
|
#########
|
1704
|
-
- regex: '; *(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'
|
1758
|
+
- regex: '; *(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)'
|
1705
1759
|
device_replacement: '$1'
|
1706
1760
|
brand_replacement: 'Amaway'
|
1707
1761
|
model_replacement: '$1'
|
@@ -1710,11 +1764,11 @@ device_parsers:
|
|
1710
1764
|
# Amoi
|
1711
1765
|
# @ref: http://www.amoi.com/en/prd/prd_index.jspx
|
1712
1766
|
#########
|
1713
|
-
- regex: '; *(?:AMOI|Amoi)[ _]([^;/]
|
1767
|
+
- regex: '; *(?:AMOI|Amoi)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
1714
1768
|
device_replacement: 'Amoi $1'
|
1715
1769
|
brand_replacement: 'Amoi'
|
1716
1770
|
model_replacement: '$1'
|
1717
|
-
- regex: '^(?:AMOI|Amoi)[ _]([^;/]
|
1771
|
+
- regex: '^(?:AMOI|Amoi)[ _]([^;/]+?) Linux'
|
1718
1772
|
device_replacement: 'Amoi $1'
|
1719
1773
|
brand_replacement: 'Amoi'
|
1720
1774
|
model_replacement: '$1'
|
@@ -1723,7 +1777,7 @@ device_parsers:
|
|
1723
1777
|
# Aoc
|
1724
1778
|
# @ref: http://latin.aoc.com/media_tablet
|
1725
1779
|
#########
|
1726
|
-
- regex: '; *(MW(?:0[789]|10)[^;/]
|
1780
|
+
- regex: '; *(MW(?:0[789]|10)[^;/]+?)(?: Build|\) AppleWebKit)'
|
1727
1781
|
device_replacement: '$1'
|
1728
1782
|
brand_replacement: 'Aoc'
|
1729
1783
|
model_replacement: '$1'
|
@@ -1734,11 +1788,11 @@ device_parsers:
|
|
1734
1788
|
# @ref: http://www.luckystar.com.cn/en/mobiletel.aspx?page=1
|
1735
1789
|
# @note: brand owned by luckystar
|
1736
1790
|
#########
|
1737
|
-
- regex: '; *(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'
|
1791
|
+
- regex: '; *(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)'
|
1738
1792
|
device_replacement: 'Aoson $1'
|
1739
1793
|
brand_replacement: 'Aoson'
|
1740
1794
|
model_replacement: '$1'
|
1741
|
-
- regex: '; *Aoson ([^;/]
|
1795
|
+
- regex: '; *Aoson ([^;/]+?)(?: Build|\) AppleWebKit)'
|
1742
1796
|
regex_flag: 'i'
|
1743
1797
|
device_replacement: 'Aoson $1'
|
1744
1798
|
brand_replacement: 'Aoson'
|
@@ -1748,7 +1802,7 @@ device_parsers:
|
|
1748
1802
|
# Apanda
|
1749
1803
|
# @ref: http://www.apanda.com.cn/
|
1750
1804
|
#########
|
1751
|
-
- regex: '; *[Aa]panda[ _\-]([^;/]
|
1805
|
+
- regex: '; *[Aa]panda[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
1752
1806
|
device_replacement: 'Apanda $1'
|
1753
1807
|
brand_replacement: 'Apanda'
|
1754
1808
|
model_replacement: '$1'
|
@@ -1758,7 +1812,7 @@ device_parsers:
|
|
1758
1812
|
# @ref: http://www.archos.com/de/products/tablets.html
|
1759
1813
|
# @ref: http://www.archos.com/de/products/smartphones/index.html
|
1760
1814
|
#########
|
1761
|
-
- regex: '; *(?:ARCHOS|Archos) ?(GAMEPAD.*?)(?: Build
|
1815
|
+
- regex: '; *(?:ARCHOS|Archos) ?(GAMEPAD.*?)(?: Build|\) AppleWebKit)'
|
1762
1816
|
device_replacement: 'Archos $1'
|
1763
1817
|
brand_replacement: 'Archos'
|
1764
1818
|
model_replacement: '$1'
|
@@ -1770,11 +1824,11 @@ device_parsers:
|
|
1770
1824
|
device_replacement: 'Archos $1'
|
1771
1825
|
brand_replacement: 'Archos'
|
1772
1826
|
model_replacement: '$1'
|
1773
|
-
- regex: '; *(AN(?:7|8|9|10|13)[A-Z0-9]{1,4}) Build'
|
1827
|
+
- regex: '; *(AN(?:7|8|9|10|13)[A-Z0-9]{1,4})(?: Build|\) AppleWebKit)'
|
1774
1828
|
device_replacement: 'Archos $1'
|
1775
1829
|
brand_replacement: 'Archos'
|
1776
1830
|
model_replacement: '$1'
|
1777
|
-
- regex: '; *(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9) Build'
|
1831
|
+
- regex: '; *(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9)(?: Build|\) AppleWebKit)'
|
1778
1832
|
device_replacement: 'Archos $1'
|
1779
1833
|
brand_replacement: 'Archos'
|
1780
1834
|
model_replacement: '$1'
|
@@ -1783,11 +1837,11 @@ device_parsers:
|
|
1783
1837
|
# A-rival
|
1784
1838
|
# @ref: http://www.a-rival.de/de/
|
1785
1839
|
#########
|
1786
|
-
- regex: '; *(PAD-FMD[^;/]
|
1840
|
+
- regex: '; *(PAD-FMD[^;/]+?)(?: Build|\) AppleWebKit)'
|
1787
1841
|
device_replacement: '$1'
|
1788
1842
|
brand_replacement: 'Arival'
|
1789
1843
|
model_replacement: '$1'
|
1790
|
-
- regex: '; *(BioniQ) ?([^;/]
|
1844
|
+
- regex: '; *(BioniQ) ?([^;/]+?)(?: Build|\) AppleWebKit)'
|
1791
1845
|
device_replacement: '$1 $2'
|
1792
1846
|
brand_replacement: 'Arival'
|
1793
1847
|
model_replacement: '$1 $2'
|
@@ -1796,11 +1850,11 @@ device_parsers:
|
|
1796
1850
|
# Arnova
|
1797
1851
|
# @ref: http://arnovatech.com/
|
1798
1852
|
#########
|
1799
|
-
- regex: '; *(AN\d[^;/]+|ARCHM\d+) Build'
|
1853
|
+
- regex: '; *(AN\d[^;/]+|ARCHM\d+)(?: Build|\) AppleWebKit)'
|
1800
1854
|
device_replacement: 'Arnova $1'
|
1801
1855
|
brand_replacement: 'Arnova'
|
1802
1856
|
model_replacement: '$1'
|
1803
|
-
- regex: '; *(?:ARNOVA|Arnova) ?([^;/]
|
1857
|
+
- regex: '; *(?:ARNOVA|Arnova) ?([^;/]+?)(?: Build|\) AppleWebKit)'
|
1804
1858
|
device_replacement: 'Arnova $1'
|
1805
1859
|
brand_replacement: 'Arnova'
|
1806
1860
|
model_replacement: '$1'
|
@@ -1809,7 +1863,7 @@ device_parsers:
|
|
1809
1863
|
# Assistant
|
1810
1864
|
# @ref: http://www.assistant.ua
|
1811
1865
|
#########
|
1812
|
-
- regex: '; *(?:ASSISTANT |)(AP)-?([1789]\d{2}[A-Z]{0,2}|80104) Build'
|
1866
|
+
- regex: '; *(?:ASSISTANT |)(AP)-?([1789]\d{2}[A-Z]{0,2}|80104)(?: Build|\) AppleWebKit)'
|
1813
1867
|
device_replacement: 'Assistant $1-$2'
|
1814
1868
|
brand_replacement: 'Assistant'
|
1815
1869
|
model_replacement: '$1-$2'
|
@@ -1818,11 +1872,11 @@ device_parsers:
|
|
1818
1872
|
# Asus
|
1819
1873
|
# @ref: http://www.asus.com/uk/Tablets_Mobile/
|
1820
1874
|
#########
|
1821
|
-
- regex: '; *(ME17\d[^;/]*|ME3\d{2}[^;/]+|K00[A-Z]|Nexus 10|Nexus 7(?: 2013|)|PadFone[^;/]*|Transformer[^;/]*|TF\d{3}[^;/]*|eeepc) Build'
|
1875
|
+
- regex: '; *(ME17\d[^;/]*|ME3\d{2}[^;/]+|K00[A-Z]|Nexus 10|Nexus 7(?: 2013|)|PadFone[^;/]*|Transformer[^;/]*|TF\d{3}[^;/]*|eeepc)(?: Build|\) AppleWebKit)'
|
1822
1876
|
device_replacement: 'Asus $1'
|
1823
1877
|
brand_replacement: 'Asus'
|
1824
1878
|
model_replacement: '$1'
|
1825
|
-
- regex: '; *ASUS[ _]*([^;/]
|
1879
|
+
- regex: '; *ASUS[ _]*([^;/]+?)(?: Build|\) AppleWebKit)'
|
1826
1880
|
device_replacement: 'Asus $1'
|
1827
1881
|
brand_replacement: 'Asus'
|
1828
1882
|
model_replacement: '$1'
|
@@ -1830,11 +1884,11 @@ device_parsers:
|
|
1830
1884
|
#########
|
1831
1885
|
# Garmin-Asus
|
1832
1886
|
#########
|
1833
|
-
- regex: '; *Garmin-Asus ([^;/]
|
1887
|
+
- regex: '; *Garmin-Asus ([^;/]+?)(?: Build|\) AppleWebKit)'
|
1834
1888
|
device_replacement: 'Garmin-Asus $1'
|
1835
1889
|
brand_replacement: 'Garmin-Asus'
|
1836
1890
|
model_replacement: '$1'
|
1837
|
-
- regex: '; *(Garminfone) Build'
|
1891
|
+
- regex: '; *(Garminfone)(?: Build|\) AppleWebKit)'
|
1838
1892
|
device_replacement: 'Garmin $1'
|
1839
1893
|
brand_replacement: 'Garmin-Asus'
|
1840
1894
|
model_replacement: '$1'
|
@@ -1843,7 +1897,7 @@ device_parsers:
|
|
1843
1897
|
# Attab
|
1844
1898
|
# @ref: http://www.theattab.com/
|
1845
1899
|
#########
|
1846
|
-
- regex: '; (@TAB-[^;/]
|
1900
|
+
- regex: '; (@TAB-[^;/]+?)(?: Build|\) AppleWebKit)'
|
1847
1901
|
device_replacement: '$1'
|
1848
1902
|
brand_replacement: 'Attab'
|
1849
1903
|
model_replacement: '$1'
|
@@ -1853,7 +1907,7 @@ device_parsers:
|
|
1853
1907
|
# @ref: ??
|
1854
1908
|
# @note: Take care with Docomo T-01 Toshiba
|
1855
1909
|
#########
|
1856
|
-
- regex: '; *(T-(?:07|[^0]\d)[^;/]
|
1910
|
+
- regex: '; *(T-(?:07|[^0]\d)[^;/]+?)(?: Build|\) AppleWebKit)'
|
1857
1911
|
device_replacement: '$1'
|
1858
1912
|
brand_replacement: 'Audiosonic'
|
1859
1913
|
model_replacement: '$1'
|
@@ -1862,7 +1916,7 @@ device_parsers:
|
|
1862
1916
|
# Axioo
|
1863
1917
|
# @ref: http://www.axiooworld.com/ww/index.php
|
1864
1918
|
#########
|
1865
|
-
- regex: '; *(?:Axioo[ _\-]([^;/]
|
1919
|
+
- regex: '; *(?:Axioo[ _\-]([^;/]+?)|(picopad)[ _\-]([^;/]+?))(?: Build|\) AppleWebKit)'
|
1866
1920
|
regex_flag: 'i'
|
1867
1921
|
device_replacement: 'Axioo $1$2 $3'
|
1868
1922
|
brand_replacement: 'Axioo'
|
@@ -1872,7 +1926,7 @@ device_parsers:
|
|
1872
1926
|
# Azend
|
1873
1927
|
# @ref: http://azendcorp.com/index.php/products/portable-electronics
|
1874
1928
|
#########
|
1875
|
-
- regex: '; *(V(?:100|700|800)[^;/]*) Build'
|
1929
|
+
- regex: '; *(V(?:100|700|800)[^;/]*)(?: Build|\) AppleWebKit)'
|
1876
1930
|
device_replacement: '$1'
|
1877
1931
|
brand_replacement: 'Azend'
|
1878
1932
|
model_replacement: '$1'
|
@@ -1881,7 +1935,7 @@ device_parsers:
|
|
1881
1935
|
# Bak
|
1882
1936
|
# @ref: http://www.bakinternational.com/produtos.php?cat=80
|
1883
1937
|
#########
|
1884
|
-
- regex: '; *(IBAK\-[^;/]*) Build'
|
1938
|
+
- regex: '; *(IBAK\-[^;/]*)(?: Build|\) AppleWebKit)'
|
1885
1939
|
regex_flag: 'i'
|
1886
1940
|
device_replacement: '$1'
|
1887
1941
|
brand_replacement: 'Bak'
|
@@ -1892,7 +1946,7 @@ device_parsers:
|
|
1892
1946
|
# @ref: http://www.bedove.com/product.html
|
1893
1947
|
# @models: HY6501|HY5001|X12|X21|I5
|
1894
1948
|
#########
|
1895
|
-
- regex: '; *(HY5001|HY6501|X12|X21|I5) Build'
|
1949
|
+
- regex: '; *(HY5001|HY6501|X12|X21|I5)(?: Build|\) AppleWebKit)'
|
1896
1950
|
device_replacement: 'Bedove $1'
|
1897
1951
|
brand_replacement: 'Bedove'
|
1898
1952
|
model_replacement: '$1'
|
@@ -1901,7 +1955,7 @@ device_parsers:
|
|
1901
1955
|
# Benss
|
1902
1956
|
# @ref: http://www.benss.net/
|
1903
1957
|
#########
|
1904
|
-
- regex: '; *(JC-[^;/]*) Build'
|
1958
|
+
- regex: '; *(JC-[^;/]*)(?: Build|\) AppleWebKit)'
|
1905
1959
|
device_replacement: 'Benss $1'
|
1906
1960
|
brand_replacement: 'Benss'
|
1907
1961
|
model_replacement: '$1'
|
@@ -1911,7 +1965,7 @@ device_parsers:
|
|
1911
1965
|
# @ref: http://uk.blackberry.com/
|
1912
1966
|
# @note: Android Apps seams to be used here
|
1913
1967
|
#########
|
1914
|
-
- regex: '; *(BB) ([^;/]
|
1968
|
+
- regex: '; *(BB) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
1915
1969
|
device_replacement: '$1 $2'
|
1916
1970
|
brand_replacement: 'Blackberry'
|
1917
1971
|
model_replacement: '$2'
|
@@ -1920,11 +1974,11 @@ device_parsers:
|
|
1920
1974
|
# Blackbird
|
1921
1975
|
# @ref: http://iblackbird.co.kr
|
1922
1976
|
#########
|
1923
|
-
- regex: '; *(BlackBird)[ _](I8
|
1977
|
+
- regex: '; *(BlackBird)[ _](I8.*?)(?: Build|\) AppleWebKit)'
|
1924
1978
|
device_replacement: '$1 $2'
|
1925
1979
|
brand_replacement: '$1'
|
1926
1980
|
model_replacement: '$2'
|
1927
|
-
- regex: '; *(BlackBird)[ _](
|
1981
|
+
- regex: '; *(BlackBird)[ _](.*?)(?: Build|\) AppleWebKit)'
|
1928
1982
|
device_replacement: '$1 $2'
|
1929
1983
|
brand_replacement: '$1'
|
1930
1984
|
model_replacement: '$2'
|
@@ -1934,7 +1988,7 @@ device_parsers:
|
|
1934
1988
|
# @ref: http://www.blaupunkt.com
|
1935
1989
|
#########
|
1936
1990
|
# Endeavour
|
1937
|
-
- regex: '; *([0-9]+BP[EM][^;/]*|Endeavour[^;/]
|
1991
|
+
- regex: '; *([0-9]+BP[EM][^;/]*|Endeavour[^;/]+?)(?: Build|\) AppleWebKit)'
|
1938
1992
|
device_replacement: 'Blaupunkt $1'
|
1939
1993
|
brand_replacement: 'Blaupunkt'
|
1940
1994
|
model_replacement: '$1'
|
@@ -1943,12 +1997,12 @@ device_parsers:
|
|
1943
1997
|
# Blu
|
1944
1998
|
# @ref: http://bluproducts.com
|
1945
1999
|
#########
|
1946
|
-
- regex: '; *((?:BLU|Blu)[ _\-])([^;/]
|
2000
|
+
- regex: '; *((?:BLU|Blu)[ _\-])([^;/]+?)(?: Build|\) AppleWebKit)'
|
1947
2001
|
device_replacement: '$1$2'
|
1948
2002
|
brand_replacement: 'Blu'
|
1949
2003
|
model_replacement: '$2'
|
1950
2004
|
# BMOBILE = operator branded device
|
1951
|
-
- regex: '; *(?:BMOBILE )?(Blu|BLU|DASH [^;/]+|VIVO 4\.3|TANK 4\.5) Build'
|
2005
|
+
- regex: '; *(?:BMOBILE )?(Blu|BLU|DASH [^;/]+|VIVO 4\.3|TANK 4\.5)(?: Build|\) AppleWebKit)'
|
1952
2006
|
device_replacement: '$1'
|
1953
2007
|
brand_replacement: 'Blu'
|
1954
2008
|
model_replacement: '$1'
|
@@ -1958,7 +2012,7 @@ device_parsers:
|
|
1958
2012
|
# @ref: http://www.blusens.com/es/?sg=1&sv=al&roc=1
|
1959
2013
|
#########
|
1960
2014
|
# tablet
|
1961
|
-
- regex: '; *(TOUCH\d[^;/]
|
2015
|
+
- regex: '; *(TOUCH\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
1962
2016
|
device_replacement: '$1'
|
1963
2017
|
brand_replacement: 'Blusens'
|
1964
2018
|
model_replacement: '$1'
|
@@ -1969,7 +2023,7 @@ device_parsers:
|
|
1969
2023
|
# @note: Might collide with Maxx as AX is used also there.
|
1970
2024
|
#########
|
1971
2025
|
# smartphone
|
1972
|
-
- regex: '; *(AX5\d+) Build'
|
2026
|
+
- regex: '; *(AX5\d+)(?: Build|\) AppleWebKit)'
|
1973
2027
|
device_replacement: '$1'
|
1974
2028
|
brand_replacement: 'Bmobile'
|
1975
2029
|
model_replacement: '$1'
|
@@ -1978,11 +2032,11 @@ device_parsers:
|
|
1978
2032
|
# bq
|
1979
2033
|
# @ref: http://bqreaders.com
|
1980
2034
|
#########
|
1981
|
-
- regex: '; *([Bb]q) ([^;/]
|
2035
|
+
- regex: '; *([Bb]q) ([^;/]+?);?(?: Build|\) AppleWebKit)'
|
1982
2036
|
device_replacement: '$1 $2'
|
1983
2037
|
brand_replacement: 'bq'
|
1984
2038
|
model_replacement: '$2'
|
1985
|
-
- regex: '; *(Maxwell [^;/]
|
2039
|
+
- regex: '; *(Maxwell [^;/]+?)(?: Build|\) AppleWebKit)'
|
1986
2040
|
device_replacement: '$1'
|
1987
2041
|
brand_replacement: 'bq'
|
1988
2042
|
model_replacement: '$1'
|
@@ -1991,7 +2045,7 @@ device_parsers:
|
|
1991
2045
|
# Braun Phototechnik
|
1992
2046
|
# @ref: http://www.braun-phototechnik.de/en/products/list/~pcat.250/Tablet-PC.html
|
1993
2047
|
#########
|
1994
|
-
- regex: '; *((?:B-Tab|B-TAB) ?\d[^;/]
|
2048
|
+
- regex: '; *((?:B-Tab|B-TAB) ?\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
1995
2049
|
device_replacement: '$1'
|
1996
2050
|
brand_replacement: 'Braun'
|
1997
2051
|
model_replacement: '$1'
|
@@ -2000,7 +2054,7 @@ device_parsers:
|
|
2000
2054
|
# Broncho
|
2001
2055
|
# @ref: http://www.broncho.cn/
|
2002
2056
|
#########
|
2003
|
-
- regex: '; *(Broncho) ([^;/]
|
2057
|
+
- regex: '; *(Broncho) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2004
2058
|
device_replacement: '$1 $2'
|
2005
2059
|
brand_replacement: '$1'
|
2006
2060
|
model_replacement: '$2'
|
@@ -2009,7 +2063,7 @@ device_parsers:
|
|
2009
2063
|
# Captiva
|
2010
2064
|
# @ref: http://www.captiva-power.de
|
2011
2065
|
#########
|
2012
|
-
- regex: '; *CAPTIVA ([^;/]
|
2066
|
+
- regex: '; *CAPTIVA ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2013
2067
|
device_replacement: 'Captiva $1'
|
2014
2068
|
brand_replacement: 'Captiva'
|
2015
2069
|
model_replacement: '$1'
|
@@ -2018,7 +2072,7 @@ device_parsers:
|
|
2018
2072
|
# Casio
|
2019
2073
|
# @ref: http://www.casiogzone.com/
|
2020
2074
|
#########
|
2021
|
-
- regex: '; *(C771|CAL21|IS11CA) Build'
|
2075
|
+
- regex: '; *(C771|CAL21|IS11CA)(?: Build|\) AppleWebKit)'
|
2022
2076
|
device_replacement: '$1'
|
2023
2077
|
brand_replacement: 'Casio'
|
2024
2078
|
model_replacement: '$1'
|
@@ -2027,15 +2081,15 @@ device_parsers:
|
|
2027
2081
|
# Cat
|
2028
2082
|
# @ref: http://www.cat-sound.com
|
2029
2083
|
#########
|
2030
|
-
- regex: '; *(?:Cat|CAT) ([^;/]
|
2084
|
+
- regex: '; *(?:Cat|CAT) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2031
2085
|
device_replacement: 'Cat $1'
|
2032
2086
|
brand_replacement: 'Cat'
|
2033
2087
|
model_replacement: '$1'
|
2034
|
-
- regex: '; *(?:Cat)(Nova
|
2088
|
+
- regex: '; *(?:Cat)(Nova.*?)(?: Build|\) AppleWebKit)'
|
2035
2089
|
device_replacement: 'Cat $1'
|
2036
2090
|
brand_replacement: 'Cat'
|
2037
2091
|
model_replacement: '$1'
|
2038
|
-
- regex: '; *(INM8002KP|ADM8000KP_[AB]) Build'
|
2092
|
+
- regex: '; *(INM8002KP|ADM8000KP_[AB])(?: Build|\) AppleWebKit)'
|
2039
2093
|
device_replacement: '$1'
|
2040
2094
|
brand_replacement: 'Cat'
|
2041
2095
|
model_replacement: 'Tablet PHOENIX 8.1J0'
|
@@ -2053,7 +2107,7 @@ device_parsers:
|
|
2053
2107
|
device_replacement: '$1'
|
2054
2108
|
brand_replacement: 'Celkon'
|
2055
2109
|
model_replacement: '$1'
|
2056
|
-
- regex: '; *(CT)-?(\d+) Build'
|
2110
|
+
- regex: '; *(CT)-?(\d+)(?: Build|\) AppleWebKit)'
|
2057
2111
|
device_replacement: '$1$2'
|
2058
2112
|
brand_replacement: 'Celkon'
|
2059
2113
|
model_replacement: '$1$2'
|
@@ -2069,7 +2123,7 @@ device_parsers:
|
|
2069
2123
|
# @brief: China manufacturer makes tablets for different small brands
|
2070
2124
|
# (eg. http://www.zeepad.net/index.html)
|
2071
2125
|
#########
|
2072
|
-
- regex: '; *(TPC[0-9]{4,5}) Build'
|
2126
|
+
- regex: '; *(TPC[0-9]{4,5})(?: Build|\) AppleWebKit)'
|
2073
2127
|
device_replacement: '$1'
|
2074
2128
|
brand_replacement: 'ChangJia'
|
2075
2129
|
model_replacement: '$1'
|
@@ -2078,15 +2132,15 @@ device_parsers:
|
|
2078
2132
|
# Cloudfone
|
2079
2133
|
# @ref: http://www.cloudfonemobile.com/
|
2080
2134
|
#########
|
2081
|
-
- regex: '; *(Cloudfone)[ _](Excite)([^ ][^;/]
|
2135
|
+
- regex: '; *(Cloudfone)[ _](Excite)([^ ][^;/]+?)(?: Build|\) AppleWebKit)'
|
2082
2136
|
device_replacement: '$1 $2 $3'
|
2083
2137
|
brand_replacement: 'Cloudfone'
|
2084
2138
|
model_replacement: '$1 $2 $3'
|
2085
|
-
- regex: '; *(Excite|ICE)[ _](\d+[^;/]
|
2139
|
+
- regex: '; *(Excite|ICE)[ _](\d+[^;/]+?)(?: Build|\) AppleWebKit)'
|
2086
2140
|
device_replacement: 'Cloudfone $1 $2'
|
2087
2141
|
brand_replacement: 'Cloudfone'
|
2088
2142
|
model_replacement: 'Cloudfone $1 $2'
|
2089
|
-
- regex: '; *(Cloudfone|CloudPad)[ _]([^;/]
|
2143
|
+
- regex: '; *(Cloudfone|CloudPad)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2090
2144
|
device_replacement: '$1 $2'
|
2091
2145
|
brand_replacement: 'Cloudfone'
|
2092
2146
|
model_replacement: '$1 $2'
|
@@ -2095,7 +2149,7 @@ device_parsers:
|
|
2095
2149
|
# Cmx
|
2096
2150
|
# @ref: http://cmx.at/de/
|
2097
2151
|
#########
|
2098
|
-
- regex: '; *((?:Aquila|Clanga|Rapax)[^;/]
|
2152
|
+
- regex: '; *((?:Aquila|Clanga|Rapax)[^;/]+?)(?: Build|\) AppleWebKit)'
|
2099
2153
|
regex_flag: 'i'
|
2100
2154
|
device_replacement: '$1'
|
2101
2155
|
brand_replacement: 'Cmx'
|
@@ -2115,7 +2169,7 @@ device_parsers:
|
|
2115
2169
|
# Coolpad
|
2116
2170
|
# @ref: ??
|
2117
2171
|
#########
|
2118
|
-
- regex: '; *([^;/]*)Coolpad[ _]([^;/]
|
2172
|
+
- regex: '; *([^;/]*)Coolpad[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2119
2173
|
device_replacement: '$1$2'
|
2120
2174
|
brand_replacement: 'Coolpad'
|
2121
2175
|
model_replacement: '$1$2'
|
@@ -2124,7 +2178,7 @@ device_parsers:
|
|
2124
2178
|
# Cube
|
2125
2179
|
# @ref: http://www.cube-tablet.com/buy-products.html
|
2126
2180
|
#########
|
2127
|
-
- regex: '; *(CUBE[ _])?([KU][0-9]+ ?GT
|
2181
|
+
- regex: '; *(CUBE[ _])?([KU][0-9]+ ?GT.*?|A5300)(?: Build|\) AppleWebKit)'
|
2128
2182
|
regex_flag: 'i'
|
2129
2183
|
device_replacement: '$1$2'
|
2130
2184
|
brand_replacement: 'Cube'
|
@@ -2134,12 +2188,12 @@ device_parsers:
|
|
2134
2188
|
# Cubot
|
2135
2189
|
# @ref: http://www.cubotmall.com/
|
2136
2190
|
#########
|
2137
|
-
- regex: '; *CUBOT ([^;/]
|
2191
|
+
- regex: '; *CUBOT ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2138
2192
|
regex_flag: 'i'
|
2139
2193
|
device_replacement: '$1'
|
2140
2194
|
brand_replacement: 'Cubot'
|
2141
2195
|
model_replacement: '$1'
|
2142
|
-
- regex: '; *(BOBBY) Build'
|
2196
|
+
- regex: '; *(BOBBY)(?: Build|\) AppleWebKit)'
|
2143
2197
|
regex_flag: 'i'
|
2144
2198
|
device_replacement: '$1'
|
2145
2199
|
brand_replacement: 'Cubot'
|
@@ -2149,7 +2203,7 @@ device_parsers:
|
|
2149
2203
|
# Danew
|
2150
2204
|
# @ref: http://www.danew.com/produits-tablette.php
|
2151
2205
|
#########
|
2152
|
-
- regex: '; *(Dslide [^;/]
|
2206
|
+
- regex: '; *(Dslide [^;/]+?)(?: Build|\) AppleWebKit)'
|
2153
2207
|
device_replacement: '$1'
|
2154
2208
|
brand_replacement: 'Danew'
|
2155
2209
|
model_replacement: '$1'
|
@@ -2163,39 +2217,39 @@ device_parsers:
|
|
2163
2217
|
# @ref: http://www.dell.com/in/p/mobile-xcd28/pd
|
2164
2218
|
# @ref: http://www.dell.com/in/p/mobile-xcd35/pd
|
2165
2219
|
#########
|
2166
|
-
- regex: '; *(XCD)[ _]?(28|35) Build'
|
2220
|
+
- regex: '; *(XCD)[ _]?(28|35)(?: Build|\) AppleWebKit)'
|
2167
2221
|
device_replacement: 'Dell $1$2'
|
2168
2222
|
brand_replacement: 'Dell'
|
2169
2223
|
model_replacement: '$1$2'
|
2170
|
-
- regex: '; *(001DL) Build'
|
2224
|
+
- regex: '; *(001DL)(?: Build|\) AppleWebKit)'
|
2171
2225
|
device_replacement: 'Dell $1'
|
2172
2226
|
brand_replacement: 'Dell'
|
2173
2227
|
model_replacement: 'Streak'
|
2174
|
-
- regex: '; *(?:Dell|DELL) (Streak) Build'
|
2228
|
+
- regex: '; *(?:Dell|DELL) (Streak)(?: Build|\) AppleWebKit)'
|
2175
2229
|
device_replacement: 'Dell $1'
|
2176
2230
|
brand_replacement: 'Dell'
|
2177
2231
|
model_replacement: 'Streak'
|
2178
|
-
- regex: '; *(101DL|GS01|Streak Pro[^;/]*) Build'
|
2232
|
+
- regex: '; *(101DL|GS01|Streak Pro[^;/]*)(?: Build|\) AppleWebKit)'
|
2179
2233
|
device_replacement: 'Dell $1'
|
2180
2234
|
brand_replacement: 'Dell'
|
2181
2235
|
model_replacement: 'Streak Pro'
|
2182
|
-
- regex: '; *([Ss]treak ?7) Build'
|
2236
|
+
- regex: '; *([Ss]treak ?7)(?: Build|\) AppleWebKit)'
|
2183
2237
|
device_replacement: 'Dell $1'
|
2184
2238
|
brand_replacement: 'Dell'
|
2185
2239
|
model_replacement: 'Streak 7'
|
2186
|
-
- regex: '; *(Mini-3iX) Build'
|
2240
|
+
- regex: '; *(Mini-3iX)(?: Build|\) AppleWebKit)'
|
2187
2241
|
device_replacement: 'Dell $1'
|
2188
2242
|
brand_replacement: 'Dell'
|
2189
2243
|
model_replacement: '$1'
|
2190
|
-
- regex: '; *(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini
|
2244
|
+
- regex: '; *(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.*?|Streak[ _]Pro)(?: Build|\) AppleWebKit)'
|
2191
2245
|
device_replacement: 'Dell $1'
|
2192
2246
|
brand_replacement: 'Dell'
|
2193
2247
|
model_replacement: '$1'
|
2194
|
-
- regex: '; *Dell[ _]([^;/]
|
2248
|
+
- regex: '; *Dell[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2195
2249
|
device_replacement: 'Dell $1'
|
2196
2250
|
brand_replacement: 'Dell'
|
2197
2251
|
model_replacement: '$1'
|
2198
|
-
- regex: '; *Dell ([^;/]
|
2252
|
+
- regex: '; *Dell ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2199
2253
|
device_replacement: 'Dell $1'
|
2200
2254
|
brand_replacement: 'Dell'
|
2201
2255
|
model_replacement: '$1'
|
@@ -2204,7 +2258,7 @@ device_parsers:
|
|
2204
2258
|
# Denver
|
2205
2259
|
# @ref: http://www.denver-electronics.com/tablets1/
|
2206
2260
|
#########
|
2207
|
-
- regex: '; *(TA[CD]-\d+[^;/]*) Build'
|
2261
|
+
- regex: '; *(TA[CD]-\d+[^;/]*)(?: Build|\) AppleWebKit)'
|
2208
2262
|
device_replacement: '$1'
|
2209
2263
|
brand_replacement: 'Denver'
|
2210
2264
|
model_replacement: '$1'
|
@@ -2213,7 +2267,7 @@ device_parsers:
|
|
2213
2267
|
# Dex
|
2214
2268
|
# @ref: http://dex.ua/
|
2215
2269
|
#########
|
2216
|
-
- regex: '; *(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?) Build'
|
2270
|
+
- regex: '; *(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?)(?: Build|\) AppleWebKit)'
|
2217
2271
|
device_replacement: '$1'
|
2218
2272
|
brand_replacement: 'Dex'
|
2219
2273
|
model_replacement: '$1'
|
@@ -2222,7 +2276,7 @@ device_parsers:
|
|
2222
2276
|
# DNS AirTab
|
2223
2277
|
# @ref: http://www.dns-shop.ru/
|
2224
2278
|
#########
|
2225
|
-
- regex: '; *(AirTab)[ _\-]([^;/]
|
2279
|
+
- regex: '; *(AirTab)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2226
2280
|
device_replacement: '$1 $2'
|
2227
2281
|
brand_replacement: 'DNS'
|
2228
2282
|
model_replacement: '$1 $2'
|
@@ -2231,43 +2285,43 @@ device_parsers:
|
|
2231
2285
|
# Docomo (Operator Branded Device)
|
2232
2286
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
2233
2287
|
#########
|
2234
|
-
- regex: '; *(F\-\d[^;/]
|
2288
|
+
- regex: '; *(F\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2235
2289
|
device_replacement: '$1'
|
2236
2290
|
brand_replacement: 'Fujitsu'
|
2237
2291
|
model_replacement: '$1'
|
2238
|
-
- regex: '; *(HT-03A) Build'
|
2292
|
+
- regex: '; *(HT-03A)(?: Build|\) AppleWebKit)'
|
2239
2293
|
device_replacement: '$1'
|
2240
2294
|
brand_replacement: 'HTC'
|
2241
2295
|
model_replacement: 'Magic'
|
2242
|
-
- regex: '; *(HT\-\d[^;/]
|
2296
|
+
- regex: '; *(HT\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2243
2297
|
device_replacement: '$1'
|
2244
2298
|
brand_replacement: 'HTC'
|
2245
2299
|
model_replacement: '$1'
|
2246
|
-
- regex: '; *(L\-\d[^;/]
|
2300
|
+
- regex: '; *(L\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2247
2301
|
device_replacement: '$1'
|
2248
2302
|
brand_replacement: 'LG'
|
2249
2303
|
model_replacement: '$1'
|
2250
|
-
- regex: '; *(N\-\d[^;/]
|
2304
|
+
- regex: '; *(N\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2251
2305
|
device_replacement: '$1'
|
2252
2306
|
brand_replacement: 'Nec'
|
2253
2307
|
model_replacement: '$1'
|
2254
|
-
- regex: '; *(P\-\d[^;/]
|
2308
|
+
- regex: '; *(P\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2255
2309
|
device_replacement: '$1'
|
2256
2310
|
brand_replacement: 'Panasonic'
|
2257
2311
|
model_replacement: '$1'
|
2258
|
-
- regex: '; *(SC\-\d[^;/]
|
2312
|
+
- regex: '; *(SC\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2259
2313
|
device_replacement: '$1'
|
2260
2314
|
brand_replacement: 'Samsung'
|
2261
2315
|
model_replacement: '$1'
|
2262
|
-
- regex: '; *(SH\-\d[^;/]
|
2316
|
+
- regex: '; *(SH\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2263
2317
|
device_replacement: '$1'
|
2264
2318
|
brand_replacement: 'Sharp'
|
2265
2319
|
model_replacement: '$1'
|
2266
|
-
- regex: '; *(SO\-\d[^;/]
|
2320
|
+
- regex: '; *(SO\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2267
2321
|
device_replacement: '$1'
|
2268
2322
|
brand_replacement: 'SonyEricsson'
|
2269
2323
|
model_replacement: '$1'
|
2270
|
-
- regex: '; *(T\-0[12][^;/]
|
2324
|
+
- regex: '; *(T\-0[12][^;/]+?)(?: Build|\) AppleWebKit)'
|
2271
2325
|
device_replacement: '$1'
|
2272
2326
|
brand_replacement: 'Toshiba'
|
2273
2327
|
model_replacement: '$1'
|
@@ -2276,7 +2330,7 @@ device_parsers:
|
|
2276
2330
|
# DOOV
|
2277
2331
|
# @ref: http://www.doov.com.cn/
|
2278
2332
|
#########
|
2279
|
-
- regex: '; *(DOOV)[ _]([^;/]
|
2333
|
+
- regex: '; *(DOOV)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2280
2334
|
device_replacement: '$1 $2'
|
2281
2335
|
brand_replacement: 'DOOV'
|
2282
2336
|
model_replacement: '$2'
|
@@ -2285,7 +2339,7 @@ device_parsers:
|
|
2285
2339
|
# Enot
|
2286
2340
|
# @ref: http://www.enot.ua/
|
2287
2341
|
#########
|
2288
|
-
- regex: '; *(Enot|ENOT)[ -]?([^;/]
|
2342
|
+
- regex: '; *(Enot|ENOT)[ -]?([^;/]+?)(?: Build|\) AppleWebKit)'
|
2289
2343
|
device_replacement: '$1 $2'
|
2290
2344
|
brand_replacement: 'Enot'
|
2291
2345
|
model_replacement: '$2'
|
@@ -2298,7 +2352,7 @@ device_parsers:
|
|
2298
2352
|
device_replacement: 'CROSS $1'
|
2299
2353
|
brand_replacement: 'Evercoss'
|
2300
2354
|
model_replacement: 'Cross $1'
|
2301
|
-
- regex: '; *(CROSS|Cross)[ _\-]([^;/]
|
2355
|
+
- regex: '; *(CROSS|Cross)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2302
2356
|
device_replacement: '$1 $2'
|
2303
2357
|
brand_replacement: 'Evercoss'
|
2304
2358
|
model_replacement: 'Cross $2'
|
@@ -2316,11 +2370,11 @@ device_parsers:
|
|
2316
2370
|
# Fly
|
2317
2371
|
# @ref: http://www.fly-phone.com/
|
2318
2372
|
#########
|
2319
|
-
- regex: '; *(IQ
|
2373
|
+
- regex: '; *(IQ.*?)(?: Build|\) AppleWebKit)'
|
2320
2374
|
device_replacement: '$1'
|
2321
2375
|
brand_replacement: 'Fly'
|
2322
2376
|
model_replacement: '$1'
|
2323
|
-
- regex: '; *(Fly|FLY)[ _](IQ[^;]
|
2377
|
+
- regex: '; *(Fly|FLY)[ _](IQ[^;]+?|F[34]\d+[^;]*?);?(?: Build|\) AppleWebKit)'
|
2324
2378
|
device_replacement: '$1 $2'
|
2325
2379
|
brand_replacement: 'Fly'
|
2326
2380
|
model_replacement: '$2'
|
@@ -2329,7 +2383,7 @@ device_parsers:
|
|
2329
2383
|
# Fujitsu
|
2330
2384
|
# @ref: http://www.fujitsu.com/global/
|
2331
2385
|
#########
|
2332
|
-
- regex: '; *(M532|Q572|FJL21) Build
|
2386
|
+
- regex: '; *(M532|Q572|FJL21)(?: Build|\) AppleWebKit)'
|
2333
2387
|
device_replacement: '$1'
|
2334
2388
|
brand_replacement: 'Fujitsu'
|
2335
2389
|
model_replacement: '$1'
|
@@ -2338,7 +2392,7 @@ device_parsers:
|
|
2338
2392
|
# Galapad
|
2339
2393
|
# @ref: http://www.galapad.net/product.html
|
2340
2394
|
#########
|
2341
|
-
- regex: '; *(G1) Build'
|
2395
|
+
- regex: '; *(G1)(?: Build|\) AppleWebKit)'
|
2342
2396
|
device_replacement: '$1'
|
2343
2397
|
brand_replacement: 'Galapad'
|
2344
2398
|
model_replacement: '$1'
|
@@ -2347,7 +2401,7 @@ device_parsers:
|
|
2347
2401
|
# Geeksphone
|
2348
2402
|
# @ref: http://www.geeksphone.com/
|
2349
2403
|
#########
|
2350
|
-
- regex: '; *(Geeksphone) ([^;/]
|
2404
|
+
- regex: '; *(Geeksphone) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2351
2405
|
device_replacement: '$1 $2'
|
2352
2406
|
brand_replacement: '$1'
|
2353
2407
|
model_replacement: '$2'
|
@@ -2357,7 +2411,7 @@ device_parsers:
|
|
2357
2411
|
# @ref: http://www.gfivemobile.com/en
|
2358
2412
|
#########
|
2359
2413
|
#- regex: '; *(G\'?FIVE) ([^;/]+) Build' # there is a problem with python yaml parser here
|
2360
|
-
- regex: '; *(G[^F]?FIVE) ([^;/]
|
2414
|
+
- regex: '; *(G[^F]?FIVE) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2361
2415
|
device_replacement: '$1 $2'
|
2362
2416
|
brand_replacement: 'Gfive'
|
2363
2417
|
model_replacement: '$2'
|
@@ -2366,12 +2420,12 @@ device_parsers:
|
|
2366
2420
|
# Gionee
|
2367
2421
|
# @ref: http://www.gionee.com/
|
2368
2422
|
#########
|
2369
|
-
- regex: '; *(Gionee)[ _\-]([^;/]
|
2423
|
+
- regex: '; *(Gionee)[ _\-]([^;/]+?)(?:/[^;/]+|)(?: Build|\) AppleWebKit)'
|
2370
2424
|
regex_flag: 'i'
|
2371
2425
|
device_replacement: '$1 $2'
|
2372
2426
|
brand_replacement: 'Gionee'
|
2373
2427
|
model_replacement: '$2'
|
2374
|
-
- regex: '; *(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1) Build'
|
2428
|
+
- regex: '; *(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1)(?: Build|\) AppleWebKit)'
|
2375
2429
|
device_replacement: 'Gionee $1'
|
2376
2430
|
brand_replacement: 'Gionee'
|
2377
2431
|
model_replacement: '$1'
|
@@ -2389,11 +2443,11 @@ device_parsers:
|
|
2389
2443
|
# GoClever
|
2390
2444
|
# @ref: http://www.goclever.com
|
2391
2445
|
#########
|
2392
|
-
- regex: '; *((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]*|PLAYTAB) Build'
|
2446
|
+
- regex: '; *((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]*|PLAYTAB)(?: Build|\) AppleWebKit)'
|
2393
2447
|
device_replacement: 'GoClever $1'
|
2394
2448
|
brand_replacement: 'GoClever'
|
2395
2449
|
model_replacement: '$1'
|
2396
|
-
- regex: '; *GOCLEVER ([^;/]
|
2450
|
+
- regex: '; *GOCLEVER ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2397
2451
|
device_replacement: 'GoClever $1'
|
2398
2452
|
brand_replacement: 'GoClever'
|
2399
2453
|
model_replacement: '$1'
|
@@ -2402,11 +2456,11 @@ device_parsers:
|
|
2402
2456
|
# Google
|
2403
2457
|
# @ref: http://www.google.de/glass/start/
|
2404
2458
|
#########
|
2405
|
-
- regex: '; *(Glass \d+) Build'
|
2459
|
+
- regex: '; *(Glass \d+)(?: Build|\) AppleWebKit)'
|
2406
2460
|
device_replacement: '$1'
|
2407
2461
|
brand_replacement: 'Google'
|
2408
2462
|
model_replacement: '$1'
|
2409
|
-
- regex: '; *(Pixel
|
2463
|
+
- regex: '; *(Pixel.*?)(?: Build|\) AppleWebKit)'
|
2410
2464
|
device_replacement: '$1'
|
2411
2465
|
brand_replacement: 'Google'
|
2412
2466
|
model_replacement: '$1'
|
@@ -2415,7 +2469,7 @@ device_parsers:
|
|
2415
2469
|
# Gigabyte
|
2416
2470
|
# @ref: http://gsmart.gigabytecm.com/en/
|
2417
2471
|
#########
|
2418
|
-
- regex: '; *(GSmart)[ -]([^/]+) Build'
|
2472
|
+
- regex: '; *(GSmart)[ -]([^/]+)(?: Build|\) AppleWebKit)'
|
2419
2473
|
device_replacement: '$1 $2'
|
2420
2474
|
brand_replacement: 'Gigabyte'
|
2421
2475
|
model_replacement: '$1 $2'
|
@@ -2424,7 +2478,7 @@ device_parsers:
|
|
2424
2478
|
# Freescale development boards
|
2425
2479
|
# @ref: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB
|
2426
2480
|
#########
|
2427
|
-
- regex: '; *(imx5[13]_[^/]+) Build'
|
2481
|
+
- regex: '; *(imx5[13]_[^/]+)(?: Build|\) AppleWebKit)'
|
2428
2482
|
device_replacement: 'Freescale $1'
|
2429
2483
|
brand_replacement: 'Freescale'
|
2430
2484
|
model_replacement: '$1'
|
@@ -2434,11 +2488,11 @@ device_parsers:
|
|
2434
2488
|
# @ref: http://www.haier.com/
|
2435
2489
|
# @ref: http://www.haier.com/de/produkte/tablet/
|
2436
2490
|
#########
|
2437
|
-
- regex: '; *Haier[ _\-]([^/]+) Build'
|
2491
|
+
- regex: '; *Haier[ _\-]([^/]+)(?: Build|\) AppleWebKit)'
|
2438
2492
|
device_replacement: 'Haier $1'
|
2439
2493
|
brand_replacement: 'Haier'
|
2440
2494
|
model_replacement: '$1'
|
2441
|
-
- regex: '; *(PAD1016) Build'
|
2495
|
+
- regex: '; *(PAD1016)(?: Build|\) AppleWebKit)'
|
2442
2496
|
device_replacement: 'Haipad $1'
|
2443
2497
|
brand_replacement: 'Haipad'
|
2444
2498
|
model_replacement: '$1'
|
@@ -2448,7 +2502,7 @@ device_parsers:
|
|
2448
2502
|
# @ref: http://www.haipad.net/
|
2449
2503
|
# @models: V7P|M7SM7S|M9XM9X|M7XM7X|M9|M8|M7-M|M1002|M7|M701
|
2450
2504
|
#########
|
2451
|
-
- regex: '; *(M701|M7|M8|M9) Build'
|
2505
|
+
- regex: '; *(M701|M7|M8|M9)(?: Build|\) AppleWebKit)'
|
2452
2506
|
device_replacement: 'Haipad $1'
|
2453
2507
|
brand_replacement: 'Haipad'
|
2454
2508
|
model_replacement: '$1'
|
@@ -2480,7 +2534,7 @@ device_parsers:
|
|
2480
2534
|
# Hena
|
2481
2535
|
# @ref: http://www.henadigital.com/en/product/index.asp?id=6
|
2482
2536
|
#########
|
2483
|
-
- regex: '; *(MID-?\d{4}C[EM]) Build'
|
2537
|
+
- regex: '; *(MID-?\d{4}C[EM])(?: Build|\) AppleWebKit)'
|
2484
2538
|
device_replacement: 'Hena $1'
|
2485
2539
|
brand_replacement: 'Hena'
|
2486
2540
|
model_replacement: '$1'
|
@@ -2489,11 +2543,11 @@ device_parsers:
|
|
2489
2543
|
# Hisense
|
2490
2544
|
# @ref: http://www.hisense.com/
|
2491
2545
|
#########
|
2492
|
-
- regex: '; *(EG\d{2,}|HS-[^;/]+|MIRA[^;/]
|
2546
|
+
- regex: '; *(EG\d{2,}|HS-[^;/]+|MIRA[^;/]+?)(?: Build|\) AppleWebKit)'
|
2493
2547
|
device_replacement: 'Hisense $1'
|
2494
2548
|
brand_replacement: 'Hisense'
|
2495
2549
|
model_replacement: '$1'
|
2496
|
-
- regex: '; *(andromax[^;/]
|
2550
|
+
- regex: '; *(andromax[^;/]+?)(?: Build|\) AppleWebKit)'
|
2497
2551
|
regex_flag: 'i'
|
2498
2552
|
device_replacement: 'Hisense $1'
|
2499
2553
|
brand_replacement: 'Hisense'
|
@@ -2503,7 +2557,7 @@ device_parsers:
|
|
2503
2557
|
# hitech
|
2504
2558
|
# @ref: http://www.hitech-mobiles.com/
|
2505
2559
|
#########
|
2506
|
-
- regex: '; *(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE) Build'
|
2560
|
+
- regex: '; *(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE)(?: Build|\) AppleWebKit)'
|
2507
2561
|
device_replacement: 'AMAZE $1$2'
|
2508
2562
|
brand_replacement: 'hitech'
|
2509
2563
|
model_replacement: 'AMAZE $1$2'
|
@@ -2512,15 +2566,15 @@ device_parsers:
|
|
2512
2566
|
# HP
|
2513
2567
|
# @ref: http://www.hp.com/
|
2514
2568
|
#########
|
2515
|
-
- regex: '; *(PlayBook) Build'
|
2569
|
+
- regex: '; *(PlayBook)(?: Build|\) AppleWebKit)'
|
2516
2570
|
device_replacement: 'HP $1'
|
2517
2571
|
brand_replacement: 'HP'
|
2518
2572
|
model_replacement: '$1'
|
2519
|
-
- regex: '; *HP ([^/]+) Build'
|
2573
|
+
- regex: '; *HP ([^/]+)(?: Build|\) AppleWebKit)'
|
2520
2574
|
device_replacement: 'HP $1'
|
2521
2575
|
brand_replacement: 'HP'
|
2522
2576
|
model_replacement: '$1'
|
2523
|
-
- regex: '; *([^/]+_tenderloin) Build'
|
2577
|
+
- regex: '; *([^/]+_tenderloin)(?: Build|\) AppleWebKit)'
|
2524
2578
|
device_replacement: 'HP TouchPad'
|
2525
2579
|
brand_replacement: 'HP'
|
2526
2580
|
model_replacement: 'TouchPad'
|
@@ -2663,16 +2717,16 @@ device_parsers:
|
|
2663
2717
|
# Hyundai
|
2664
2718
|
# @ref: http://www.hyundaitechnologies.com
|
2665
2719
|
#########
|
2666
|
-
- regex: '; *HYUNDAI (T\d[^/]*) Build'
|
2720
|
+
- regex: '; *HYUNDAI (T\d[^/]*)(?: Build|\) AppleWebKit)'
|
2667
2721
|
device_replacement: 'Hyundai $1'
|
2668
2722
|
brand_replacement: 'Hyundai'
|
2669
2723
|
model_replacement: '$1'
|
2670
|
-
- regex: '; *HYUNDAI ([^;/]
|
2724
|
+
- regex: '; *HYUNDAI ([^;/]+?)(?: Build|\) AppleWebKit)'
|
2671
2725
|
device_replacement: 'Hyundai $1'
|
2672
2726
|
brand_replacement: 'Hyundai'
|
2673
2727
|
model_replacement: '$1'
|
2674
2728
|
# X900? http://www.amazon.com/Hyundai-X900-Retina-Android-Bluetooth/dp/B00AO07H3O
|
2675
|
-
- regex: '; *(X700|Hold X|MB-6900) Build'
|
2729
|
+
- regex: '; *(X700|Hold X|MB-6900)(?: Build|\) AppleWebKit)'
|
2676
2730
|
device_replacement: 'Hyundai $1'
|
2677
2731
|
brand_replacement: 'Hyundai'
|
2678
2732
|
model_replacement: '$1'
|
@@ -2681,12 +2735,12 @@ device_parsers:
|
|
2681
2735
|
# iBall
|
2682
2736
|
# @ref: http://www.iball.co.in/Category/Mobiles/22
|
2683
2737
|
#########
|
2684
|
-
- regex: '; *(?:iBall[ _\-]|)(Andi)[ _]?(\d[^;/]*) Build'
|
2738
|
+
- regex: '; *(?:iBall[ _\-]|)(Andi)[ _]?(\d[^;/]*)(?: Build|\) AppleWebKit)'
|
2685
2739
|
regex_flag: 'i'
|
2686
2740
|
device_replacement: '$1 $2'
|
2687
2741
|
brand_replacement: 'iBall'
|
2688
2742
|
model_replacement: '$1 $2'
|
2689
|
-
- regex: '; *(IBall)(?:[ _]([^;/]
|
2743
|
+
- regex: '; *(IBall)(?:[ _]([^;/]+?)|)(?: Build|\) AppleWebKit)'
|
2690
2744
|
regex_flag: 'i'
|
2691
2745
|
device_replacement: '$1 $2'
|
2692
2746
|
brand_replacement: 'iBall'
|
@@ -2696,7 +2750,7 @@ device_parsers:
|
|
2696
2750
|
# IconBIT
|
2697
2751
|
# @ref: http://www.iconbit.com/catalog/tablets/
|
2698
2752
|
#########
|
2699
|
-
- regex: '; *(NT-\d+[^ ;/]*|Net[Tt]AB [^;/]+|Mercury [A-Z]+|iconBIT)(?: S/N:[^;/]+|) Build'
|
2753
|
+
- regex: '; *(NT-\d+[^ ;/]*|Net[Tt]AB [^;/]+|Mercury [A-Z]+|iconBIT)(?: S/N:[^;/]+|)(?: Build|\) AppleWebKit)'
|
2700
2754
|
device_replacement: '$1'
|
2701
2755
|
brand_replacement: 'IconBIT'
|
2702
2756
|
model_replacement: '$1'
|
@@ -2705,7 +2759,7 @@ device_parsers:
|
|
2705
2759
|
# IMO
|
2706
2760
|
# @ref: http://www.ponselimo.com/
|
2707
2761
|
#########
|
2708
|
-
- regex: '; *(IMO)[ _]([^;/]
|
2762
|
+
- regex: '; *(IMO)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2709
2763
|
regex_flag: 'i'
|
2710
2764
|
device_replacement: '$1 $2'
|
2711
2765
|
brand_replacement: 'IMO'
|
@@ -2715,12 +2769,12 @@ device_parsers:
|
|
2715
2769
|
# i-mobile
|
2716
2770
|
# @ref: http://www.i-mobilephone.com/
|
2717
2771
|
#########
|
2718
|
-
- regex: '; *i-?mobile[ _]([^/]+) Build
|
2772
|
+
- regex: '; *i-?mobile[ _]([^/]+)(?: Build|\) AppleWebKit)'
|
2719
2773
|
regex_flag: 'i'
|
2720
2774
|
device_replacement: 'i-mobile $1'
|
2721
2775
|
brand_replacement: 'imobile'
|
2722
2776
|
model_replacement: '$1'
|
2723
|
-
- regex: '; *(i-(?:style|note)[^/]*) Build
|
2777
|
+
- regex: '; *(i-(?:style|note)[^/]*)(?: Build|\) AppleWebKit)'
|
2724
2778
|
regex_flag: 'i'
|
2725
2779
|
device_replacement: 'i-mobile $1'
|
2726
2780
|
brand_replacement: 'imobile'
|
@@ -2730,7 +2784,7 @@ device_parsers:
|
|
2730
2784
|
# Impression
|
2731
2785
|
# @ref: http://impression.ua/planshetnye-kompyutery
|
2732
2786
|
#########
|
2733
|
-
- regex: '; *(ImPAD) ?(\d+(?:.)
|
2787
|
+
- regex: '; *(ImPAD) ?(\d+(?:.)*?)(?: Build|\) AppleWebKit)'
|
2734
2788
|
device_replacement: '$1 $2'
|
2735
2789
|
brand_replacement: 'Impression'
|
2736
2790
|
model_replacement: '$1 $2'
|
@@ -2739,7 +2793,7 @@ device_parsers:
|
|
2739
2793
|
# Infinix
|
2740
2794
|
# @ref: http://www.infinixmobility.com/index.html
|
2741
2795
|
#########
|
2742
|
-
- regex: '; *(Infinix)[ _]([^;/]
|
2796
|
+
- regex: '; *(Infinix)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2743
2797
|
device_replacement: '$1 $2'
|
2744
2798
|
brand_replacement: 'Infinix'
|
2745
2799
|
model_replacement: '$2'
|
@@ -2748,7 +2802,7 @@ device_parsers:
|
|
2748
2802
|
# Informer
|
2749
2803
|
# @ref: ??
|
2750
2804
|
#########
|
2751
|
-
- regex: '; *(Informer)[ \-]([^;/]
|
2805
|
+
- regex: '; *(Informer)[ \-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2752
2806
|
device_replacement: '$1 $2'
|
2753
2807
|
brand_replacement: 'Informer'
|
2754
2808
|
model_replacement: '$2'
|
@@ -2758,7 +2812,7 @@ device_parsers:
|
|
2758
2812
|
# @ref: http://www.intenso.de
|
2759
2813
|
# @models: 7":TAB 714,TAB 724;8":TAB 814,TAB 824;10":TAB 1004
|
2760
2814
|
#########
|
2761
|
-
- regex: '; *(TAB) ?([78][12]4) Build'
|
2815
|
+
- regex: '; *(TAB) ?([78][12]4)(?: Build|\) AppleWebKit)'
|
2762
2816
|
device_replacement: 'Intenso $1'
|
2763
2817
|
brand_replacement: 'Intenso'
|
2764
2818
|
model_replacement: '$1 $2'
|
@@ -2769,7 +2823,7 @@ device_parsers:
|
|
2769
2823
|
# @note: Zync also offers a "Cloud Z5" device
|
2770
2824
|
#########
|
2771
2825
|
# smartphones
|
2772
|
-
- regex: '; *(?:Intex[ _]|)(AQUA|Aqua)([ _\.\-])([^;/]
|
2826
|
+
- regex: '; *(?:Intex[ _]|)(AQUA|Aqua)([ _\.\-])([^;/]+?) *(?:Build|;)'
|
2773
2827
|
device_replacement: '$1$2$3'
|
2774
2828
|
brand_replacement: 'Intex'
|
2775
2829
|
model_replacement: '$1 $3'
|
@@ -2783,7 +2837,7 @@ device_parsers:
|
|
2783
2837
|
device_replacement: '$1 $2 $3'
|
2784
2838
|
brand_replacement: 'Intex'
|
2785
2839
|
model_replacement: 'iBuddy $2 $3'
|
2786
|
-
- regex: '; *(I-Buddy)[ _]([^;/]
|
2840
|
+
- regex: '; *(I-Buddy)[ _]([^;/]+?) *(?:Build|;)'
|
2787
2841
|
device_replacement: '$1 $2'
|
2788
2842
|
brand_replacement: 'Intex'
|
2789
2843
|
model_replacement: 'iBuddy $2'
|
@@ -2792,7 +2846,7 @@ device_parsers:
|
|
2792
2846
|
# iOCEAN
|
2793
2847
|
# @ref: http://www.iocean.cc/
|
2794
2848
|
#########
|
2795
|
-
- regex: '; *(iOCEAN) ([^/]+) Build'
|
2849
|
+
- regex: '; *(iOCEAN) ([^/]+)(?: Build|\) AppleWebKit)'
|
2796
2850
|
regex_flag: 'i'
|
2797
2851
|
device_replacement: '$1 $2'
|
2798
2852
|
brand_replacement: 'iOCEAN'
|
@@ -2802,7 +2856,7 @@ device_parsers:
|
|
2802
2856
|
# i.onik
|
2803
2857
|
# @ref: http://www.i-onik.de/
|
2804
2858
|
#########
|
2805
|
-
- regex: '; *(TP\d+(?:\.\d+|)\-\d[^;/]
|
2859
|
+
- regex: '; *(TP\d+(?:\.\d+|)\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
2806
2860
|
device_replacement: 'ionik $1'
|
2807
2861
|
brand_replacement: 'ionik'
|
2808
2862
|
model_replacement: '$1'
|
@@ -2811,7 +2865,7 @@ device_parsers:
|
|
2811
2865
|
# IRU.ru
|
2812
2866
|
# @ref: http://www.iru.ru/catalog/soho/planetable/
|
2813
2867
|
#########
|
2814
|
-
- regex: '; *(M702pro) Build'
|
2868
|
+
- regex: '; *(M702pro)(?: Build|\) AppleWebKit)'
|
2815
2869
|
device_replacement: '$1'
|
2816
2870
|
brand_replacement: 'Iru'
|
2817
2871
|
model_replacement: '$1'
|
@@ -2821,11 +2875,11 @@ device_parsers:
|
|
2821
2875
|
# @ref: http://www.ivio.com/mobile.php
|
2822
2876
|
# @models: DG80,DG20,DE38,DE88,MD70
|
2823
2877
|
#########
|
2824
|
-
- regex: '; *(DE88Plus|MD70) Build'
|
2878
|
+
- regex: '; *(DE88Plus|MD70)(?: Build|\) AppleWebKit)'
|
2825
2879
|
device_replacement: '$1'
|
2826
2880
|
brand_replacement: 'Ivio'
|
2827
2881
|
model_replacement: '$1'
|
2828
|
-
- regex: '; *IVIO[_\-]([^;/]
|
2882
|
+
- regex: '; *IVIO[_\-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2829
2883
|
device_replacement: '$1'
|
2830
2884
|
brand_replacement: 'Ivio'
|
2831
2885
|
model_replacement: '$1'
|
@@ -2834,7 +2888,7 @@ device_parsers:
|
|
2834
2888
|
# Jaytech
|
2835
2889
|
# @ref: http://www.jay-tech.de/jaytech/servlet/frontend/
|
2836
2890
|
#########
|
2837
|
-
- regex: '; *(TPC-\d+|JAY-TECH) Build'
|
2891
|
+
- regex: '; *(TPC-\d+|JAY-TECH)(?: Build|\) AppleWebKit)'
|
2838
2892
|
device_replacement: '$1'
|
2839
2893
|
brand_replacement: 'Jaytech'
|
2840
2894
|
model_replacement: '$1'
|
@@ -2843,7 +2897,7 @@ device_parsers:
|
|
2843
2897
|
# Jiayu
|
2844
2898
|
# @ref: http://www.ejiayu.com/en/Product.html
|
2845
2899
|
#########
|
2846
|
-
- regex: '; *(JY-[^;/]+|G[234]S?) Build'
|
2900
|
+
- regex: '; *(JY-[^;/]+|G[234]S?)(?: Build|\) AppleWebKit)'
|
2847
2901
|
device_replacement: '$1'
|
2848
2902
|
brand_replacement: 'Jiayu'
|
2849
2903
|
model_replacement: '$1'
|
@@ -2852,7 +2906,7 @@ device_parsers:
|
|
2852
2906
|
# JXD
|
2853
2907
|
# @ref: http://www.jxd.hk/
|
2854
2908
|
#########
|
2855
|
-
- regex: '; *(JXD)[ _\-]([^;/]
|
2909
|
+
- regex: '; *(JXD)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2856
2910
|
device_replacement: '$1 $2'
|
2857
2911
|
brand_replacement: 'JXD'
|
2858
2912
|
model_replacement: '$2'
|
@@ -2879,84 +2933,84 @@ device_parsers:
|
|
2879
2933
|
# KDDI (Operator Branded Device)
|
2880
2934
|
# @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
|
2881
2935
|
#########
|
2882
|
-
- regex: '; *(IS01|IS03|IS05|IS\d{2}SH) Build'
|
2936
|
+
- regex: '; *(IS01|IS03|IS05|IS\d{2}SH)(?: Build|\) AppleWebKit)'
|
2883
2937
|
device_replacement: '$1'
|
2884
2938
|
brand_replacement: 'Sharp'
|
2885
2939
|
model_replacement: '$1'
|
2886
|
-
- regex: '; *(IS04) Build'
|
2940
|
+
- regex: '; *(IS04)(?: Build|\) AppleWebKit)'
|
2887
2941
|
device_replacement: '$1'
|
2888
2942
|
brand_replacement: 'Regza'
|
2889
2943
|
model_replacement: '$1'
|
2890
|
-
- regex: '; *(IS06|IS\d{2}PT) Build'
|
2944
|
+
- regex: '; *(IS06|IS\d{2}PT)(?: Build|\) AppleWebKit)'
|
2891
2945
|
device_replacement: '$1'
|
2892
2946
|
brand_replacement: 'Pantech'
|
2893
2947
|
model_replacement: '$1'
|
2894
|
-
- regex: '; *(IS11S) Build'
|
2948
|
+
- regex: '; *(IS11S)(?: Build|\) AppleWebKit)'
|
2895
2949
|
device_replacement: '$1'
|
2896
2950
|
brand_replacement: 'SonyEricsson'
|
2897
2951
|
model_replacement: 'Xperia Acro'
|
2898
|
-
- regex: '; *(IS11CA) Build'
|
2952
|
+
- regex: '; *(IS11CA)(?: Build|\) AppleWebKit)'
|
2899
2953
|
device_replacement: '$1'
|
2900
2954
|
brand_replacement: 'Casio'
|
2901
2955
|
model_replacement: 'GzOne $1'
|
2902
|
-
- regex: '; *(IS11LG) Build'
|
2956
|
+
- regex: '; *(IS11LG)(?: Build|\) AppleWebKit)'
|
2903
2957
|
device_replacement: '$1'
|
2904
2958
|
brand_replacement: 'LG'
|
2905
2959
|
model_replacement: 'Optimus X'
|
2906
|
-
- regex: '; *(IS11N) Build'
|
2960
|
+
- regex: '; *(IS11N)(?: Build|\) AppleWebKit)'
|
2907
2961
|
device_replacement: '$1'
|
2908
2962
|
brand_replacement: 'Medias'
|
2909
2963
|
model_replacement: '$1'
|
2910
|
-
- regex: '; *(IS11PT) Build'
|
2964
|
+
- regex: '; *(IS11PT)(?: Build|\) AppleWebKit)'
|
2911
2965
|
device_replacement: '$1'
|
2912
2966
|
brand_replacement: 'Pantech'
|
2913
2967
|
model_replacement: 'MIRACH'
|
2914
|
-
- regex: '; *(IS12F) Build'
|
2968
|
+
- regex: '; *(IS12F)(?: Build|\) AppleWebKit)'
|
2915
2969
|
device_replacement: '$1'
|
2916
2970
|
brand_replacement: 'Fujitsu'
|
2917
2971
|
model_replacement: 'Arrows ES'
|
2918
2972
|
# @ref: https://ja.wikipedia.org/wiki/IS12M
|
2919
|
-
- regex: '; *(IS12M) Build'
|
2973
|
+
- regex: '; *(IS12M)(?: Build|\) AppleWebKit)'
|
2920
2974
|
device_replacement: '$1'
|
2921
2975
|
brand_replacement: 'Motorola'
|
2922
2976
|
model_replacement: 'XT909'
|
2923
|
-
- regex: '; *(IS12S) Build'
|
2977
|
+
- regex: '; *(IS12S)(?: Build|\) AppleWebKit)'
|
2924
2978
|
device_replacement: '$1'
|
2925
2979
|
brand_replacement: 'SonyEricsson'
|
2926
2980
|
model_replacement: 'Xperia Acro HD'
|
2927
|
-
- regex: '; *(ISW11F) Build'
|
2981
|
+
- regex: '; *(ISW11F)(?: Build|\) AppleWebKit)'
|
2928
2982
|
device_replacement: '$1'
|
2929
2983
|
brand_replacement: 'Fujitsu'
|
2930
2984
|
model_replacement: 'Arrowz Z'
|
2931
|
-
- regex: '; *(ISW11HT) Build'
|
2985
|
+
- regex: '; *(ISW11HT)(?: Build|\) AppleWebKit)'
|
2932
2986
|
device_replacement: '$1'
|
2933
2987
|
brand_replacement: 'HTC'
|
2934
2988
|
model_replacement: 'EVO'
|
2935
|
-
- regex: '; *(ISW11K) Build'
|
2989
|
+
- regex: '; *(ISW11K)(?: Build|\) AppleWebKit)'
|
2936
2990
|
device_replacement: '$1'
|
2937
2991
|
brand_replacement: 'Kyocera'
|
2938
2992
|
model_replacement: 'DIGNO'
|
2939
|
-
- regex: '; *(ISW11M) Build'
|
2993
|
+
- regex: '; *(ISW11M)(?: Build|\) AppleWebKit)'
|
2940
2994
|
device_replacement: '$1'
|
2941
2995
|
brand_replacement: 'Motorola'
|
2942
2996
|
model_replacement: 'Photon'
|
2943
|
-
- regex: '; *(ISW11SC) Build'
|
2997
|
+
- regex: '; *(ISW11SC)(?: Build|\) AppleWebKit)'
|
2944
2998
|
device_replacement: '$1'
|
2945
2999
|
brand_replacement: 'Samsung'
|
2946
3000
|
model_replacement: 'GALAXY S II WiMAX'
|
2947
|
-
- regex: '; *(ISW12HT) Build'
|
3001
|
+
- regex: '; *(ISW12HT)(?: Build|\) AppleWebKit)'
|
2948
3002
|
device_replacement: '$1'
|
2949
3003
|
brand_replacement: 'HTC'
|
2950
3004
|
model_replacement: 'EVO 3D'
|
2951
|
-
- regex: '; *(ISW13HT) Build'
|
3005
|
+
- regex: '; *(ISW13HT)(?: Build|\) AppleWebKit)'
|
2952
3006
|
device_replacement: '$1'
|
2953
3007
|
brand_replacement: 'HTC'
|
2954
3008
|
model_replacement: 'J'
|
2955
|
-
- regex: '; *(ISW?[0-9]{2}[A-Z]{0,2}) Build'
|
3009
|
+
- regex: '; *(ISW?[0-9]{2}[A-Z]{0,2})(?: Build|\) AppleWebKit)'
|
2956
3010
|
device_replacement: '$1'
|
2957
3011
|
brand_replacement: 'KDDI'
|
2958
3012
|
model_replacement: '$1'
|
2959
|
-
- regex: '; *(INFOBAR [^;/]
|
3013
|
+
- regex: '; *(INFOBAR [^;/]+?)(?: Build|\) AppleWebKit)'
|
2960
3014
|
device_replacement: '$1'
|
2961
3015
|
brand_replacement: 'KDDI'
|
2962
3016
|
model_replacement: '$1'
|
@@ -2965,7 +3019,7 @@ device_parsers:
|
|
2965
3019
|
# Kingcom
|
2966
3020
|
# @ref: http://www.e-kingcom.com
|
2967
3021
|
#########
|
2968
|
-
- regex: '; *(JOYPAD|Joypad)[ _]([^;/]
|
3022
|
+
- regex: '; *(JOYPAD|Joypad)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2969
3023
|
device_replacement: '$1 $2'
|
2970
3024
|
brand_replacement: 'Kingcom'
|
2971
3025
|
model_replacement: '$1 $2'
|
@@ -2975,7 +3029,7 @@ device_parsers:
|
|
2975
3029
|
# @ref: https://en.wikipedia.org/wiki/Kobo_Inc.
|
2976
3030
|
# @ref: http://www.kobo.com/devices#tablets
|
2977
3031
|
#########
|
2978
|
-
- regex: '; *(Vox|VOX|Arc|K080) Build
|
3032
|
+
- regex: '; *(Vox|VOX|Arc|K080)(?: Build|\) AppleWebKit)'
|
2979
3033
|
regex_flag: 'i'
|
2980
3034
|
device_replacement: '$1'
|
2981
3035
|
brand_replacement: 'Kobo'
|
@@ -2989,7 +3043,7 @@ device_parsers:
|
|
2989
3043
|
# K-Touch
|
2990
3044
|
# @ref: ??
|
2991
3045
|
#########
|
2992
|
-
- regex: '; *(K-Touch)[ _]([^;/]
|
3046
|
+
- regex: '; *(K-Touch)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
2993
3047
|
regex_flag: 'i'
|
2994
3048
|
device_replacement: '$1 $2'
|
2995
3049
|
brand_replacement: 'Ktouch'
|
@@ -2999,7 +3053,7 @@ device_parsers:
|
|
2999
3053
|
# KT Tech
|
3000
3054
|
# @ref: http://www.kttech.co.kr
|
3001
3055
|
#########
|
3002
|
-
- regex: '; *((?:EV|KM)-S\d+[A-Z]?) Build'
|
3056
|
+
- regex: '; *((?:EV|KM)-S\d+[A-Z]?)(?: Build|\) AppleWebKit)'
|
3003
3057
|
regex_flag: 'i'
|
3004
3058
|
device_replacement: '$1'
|
3005
3059
|
brand_replacement: 'KTtech'
|
@@ -3009,7 +3063,7 @@ device_parsers:
|
|
3009
3063
|
# Kyocera
|
3010
3064
|
# @ref: http://www.android.com/devices/?country=all&m=kyocera
|
3011
3065
|
#########
|
3012
|
-
- regex: '; *(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\d{2}) Build
|
3066
|
+
- regex: '; *(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\d{2})(?: Build|\) AppleWebKit)'
|
3013
3067
|
device_replacement: '$1'
|
3014
3068
|
brand_replacement: 'Kyocera'
|
3015
3069
|
model_replacement: '$1'
|
@@ -3032,7 +3086,7 @@ device_parsers:
|
|
3032
3086
|
# Lemon
|
3033
3087
|
# @ref: http://www.lemonmobiles.com/products.php?type=1
|
3034
3088
|
#########
|
3035
|
-
- regex: '; *(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]+))_? Build'
|
3089
|
+
- regex: '; *(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]+))_?(?: Build|\) AppleWebKit)'
|
3036
3090
|
device_replacement: 'Lemon $1$2'
|
3037
3091
|
brand_replacement: 'Lemon'
|
3038
3092
|
model_replacement: '$1$2'
|
@@ -3041,11 +3095,11 @@ device_parsers:
|
|
3041
3095
|
# Lenco
|
3042
3096
|
# @ref: http://www.lenco.com/c/tablets/
|
3043
3097
|
#########
|
3044
|
-
- regex: '; *(TAB-1012) Build
|
3098
|
+
- regex: '; *(TAB-1012)(?: Build|\) AppleWebKit)'
|
3045
3099
|
device_replacement: 'Lenco $1'
|
3046
3100
|
brand_replacement: 'Lenco'
|
3047
3101
|
model_replacement: '$1'
|
3048
|
-
- regex: '; Lenco ([^;/]
|
3102
|
+
- regex: '; Lenco ([^;/]+?)(?: Build|\) AppleWebKit)'
|
3049
3103
|
device_replacement: 'Lenco $1'
|
3050
3104
|
brand_replacement: 'Lenco'
|
3051
3105
|
model_replacement: '$1'
|
@@ -3095,7 +3149,7 @@ device_parsers:
|
|
3095
3149
|
# Lexibook
|
3096
3150
|
# @ref: http://www.lexibook.com/fr
|
3097
3151
|
#########
|
3098
|
-
- regex: '; *(MFC\d+)[A-Z]{2}([^;,/]*),? Build'
|
3152
|
+
- regex: '; *(MFC\d+)[A-Z]{2}([^;,/]*),?(?: Build|\) AppleWebKit)'
|
3099
3153
|
device_replacement: '$1$2'
|
3100
3154
|
brand_replacement: 'Lexibook'
|
3101
3155
|
model_replacement: '$1$2'
|
@@ -3133,11 +3187,11 @@ device_parsers:
|
|
3133
3187
|
# Malata
|
3134
3188
|
# @ref: http://www.malata.com/en/products.aspx?classid=680
|
3135
3189
|
#########
|
3136
|
-
- regex: '; *((?:SMB|smb)[^;/]
|
3190
|
+
- regex: '; *((?:SMB|smb)[^;/]+?)(?: Build|\) AppleWebKit)'
|
3137
3191
|
device_replacement: '$1'
|
3138
3192
|
brand_replacement: 'Malata'
|
3139
3193
|
model_replacement: '$1'
|
3140
|
-
- regex: '; *(?:Malata|MALATA) ([^;/]
|
3194
|
+
- regex: '; *(?:Malata|MALATA) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
3141
3195
|
device_replacement: '$1'
|
3142
3196
|
brand_replacement: 'Malata'
|
3143
3197
|
model_replacement: '$1'
|
@@ -3146,7 +3200,7 @@ device_parsers:
|
|
3146
3200
|
# Manta
|
3147
3201
|
# @ref: http://www.manta.com.pl/en
|
3148
3202
|
#########
|
3149
|
-
- regex: '; *(MS[45][0-9]{3}|MID0[568][NS]?|MID[1-9]|MID[78]0[1-9]|MID970[1-9]|MID100[1-9]) Build
|
3203
|
+
- regex: '; *(MS[45][0-9]{3}|MID0[568][NS]?|MID[1-9]|MID[78]0[1-9]|MID970[1-9]|MID100[1-9])(?: Build|\) AppleWebKit)'
|
3150
3204
|
device_replacement: '$1'
|
3151
3205
|
brand_replacement: 'Manta'
|
3152
3206
|
model_replacement: '$1'
|
@@ -3155,7 +3209,7 @@ device_parsers:
|
|
3155
3209
|
# Match
|
3156
3210
|
# @ref: http://www.match.net.cn/products.asp
|
3157
3211
|
#########
|
3158
|
-
- regex: '; *(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
|
3212
|
+
- regex: '; *(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)'
|
3159
3213
|
device_replacement: '$1'
|
3160
3214
|
brand_replacement: 'Match'
|
3161
3215
|
model_replacement: '$1'
|
@@ -3169,7 +3223,7 @@ device_parsers:
|
|
3169
3223
|
# Maxx MT150, Maxx MQ601, Maxx M2020, Maxx Sleek MX463neo, Maxx MX525, Maxx MX192-Tune, Maxx Genx Droid 7 AX353,
|
3170
3224
|
# @note: Need more User-Agents!!!
|
3171
3225
|
#########
|
3172
|
-
- regex: '; *(GenxDroid7|MSD7
|
3226
|
+
- regex: '; *(GenxDroid7|MSD7.*?|AX\d.*?|Tab 701|Tab 722)(?: Build|\) AppleWebKit)'
|
3173
3227
|
device_replacement: 'Maxx $1'
|
3174
3228
|
brand_replacement: 'Maxx'
|
3175
3229
|
model_replacement: '$1'
|
@@ -3178,11 +3232,11 @@ device_parsers:
|
|
3178
3232
|
# Mediacom
|
3179
3233
|
# @ref: http://www.mediacomeurope.it/
|
3180
3234
|
#########
|
3181
|
-
- regex: '; *(M-PP[^;/]+|PhonePad ?\d{2,}[^;/]
|
3235
|
+
- regex: '; *(M-PP[^;/]+|PhonePad ?\d{2,}[^;/]+?)(?: Build|\) AppleWebKit)'
|
3182
3236
|
device_replacement: 'Mediacom $1'
|
3183
3237
|
brand_replacement: 'Mediacom'
|
3184
3238
|
model_replacement: '$1'
|
3185
|
-
- regex: '; *(M-MP[^;/]+|SmartPad ?\d{2,}[^;/]
|
3239
|
+
- regex: '; *(M-MP[^;/]+|SmartPad ?\d{2,}[^;/]+?)(?: Build|\) AppleWebKit)'
|
3186
3240
|
device_replacement: 'Mediacom $1'
|
3187
3241
|
brand_replacement: 'Mediacom'
|
3188
3242
|
model_replacement: '$1'
|
@@ -3191,12 +3245,12 @@ device_parsers:
|
|
3191
3245
|
# Medion
|
3192
3246
|
# @ref: http://www.medion.com/en/
|
3193
3247
|
#########
|
3194
|
-
- regex: '; *(?:MD_|)LIFETAB[ _]([^;/]
|
3248
|
+
- regex: '; *(?:MD_|)LIFETAB[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3195
3249
|
regex_flag: 'i'
|
3196
3250
|
device_replacement: 'Medion Lifetab $1'
|
3197
3251
|
brand_replacement: 'Medion'
|
3198
3252
|
model_replacement: 'Lifetab $1'
|
3199
|
-
- regex: '; *MEDION ([^;/]
|
3253
|
+
- regex: '; *MEDION ([^;/]+?)(?: Build|\) AppleWebKit)'
|
3200
3254
|
device_replacement: 'Medion $1'
|
3201
3255
|
brand_replacement: 'Medion'
|
3202
3256
|
model_replacement: '$1'
|
@@ -3205,7 +3259,7 @@ device_parsers:
|
|
3205
3259
|
# Meizu
|
3206
3260
|
# @ref: http://www.meizu.com
|
3207
3261
|
#########
|
3208
|
-
- regex: '; *(M030|M031|M035|M040|M065|m9) Build'
|
3262
|
+
- regex: '; *(M030|M031|M035|M040|M065|m9)(?: Build|\) AppleWebKit)'
|
3209
3263
|
device_replacement: 'Meizu $1'
|
3210
3264
|
brand_replacement: 'Meizu'
|
3211
3265
|
model_replacement: '$1'
|
@@ -3249,7 +3303,7 @@ device_parsers:
|
|
3249
3303
|
# Mito
|
3250
3304
|
# @ref: http://new.mitomobile.com/
|
3251
3305
|
#########
|
3252
|
-
- regex: '; *(MITO)[ _\-]?([^;/]
|
3306
|
+
- regex: '; *(MITO)[ _\-]?([^;/]+?)(?: Build|\) AppleWebKit)'
|
3253
3307
|
regex_flag: 'i'
|
3254
3308
|
device_replacement: '$1 $2'
|
3255
3309
|
brand_replacement: 'Mito'
|
@@ -3269,12 +3323,12 @@ device_parsers:
|
|
3269
3323
|
# Modecom
|
3270
3324
|
# @ref: http://www.modecom.eu/tablets/portal/
|
3271
3325
|
#########
|
3272
|
-
- regex: '; *(MODECOM |)(FreeTab) ?([^;/]
|
3326
|
+
- regex: '; *(MODECOM |)(FreeTab) ?([^;/]+?)(?: Build|\) AppleWebKit)'
|
3273
3327
|
regex_flag: 'i'
|
3274
3328
|
device_replacement: '$1$2 $3'
|
3275
3329
|
brand_replacement: 'Modecom'
|
3276
3330
|
model_replacement: '$2 $3'
|
3277
|
-
- regex: '; *(MODECOM )([^;/]
|
3331
|
+
- regex: '; *(MODECOM )([^;/]+?)(?: Build|\) AppleWebKit)'
|
3278
3332
|
regex_flag: 'i'
|
3279
3333
|
device_replacement: '$1 $2'
|
3280
3334
|
brand_replacement: 'Modecom'
|
@@ -3318,7 +3372,7 @@ device_parsers:
|
|
3318
3372
|
# MpMan
|
3319
3373
|
# @ref: http://www.mpmaneurope.com
|
3320
3374
|
#########
|
3321
|
-
- regex: '; *((?: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'
|
3375
|
+
- regex: '; *((?: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)'
|
3322
3376
|
device_replacement: '$1'
|
3323
3377
|
brand_replacement: 'Mpman'
|
3324
3378
|
model_replacement: '$1'
|
@@ -3327,7 +3381,7 @@ device_parsers:
|
|
3327
3381
|
# MSI
|
3328
3382
|
# @ref: http://www.msi.com/product/windpad/
|
3329
3383
|
#########
|
3330
|
-
- regex: '; *(?:MSI[ _]|)(Primo\d+|Enjoy[ _\-][^;/]
|
3384
|
+
- regex: '; *(?:MSI[ _]|)(Primo\d+|Enjoy[ _\-][^;/]+?)(?: Build|\) AppleWebKit)'
|
3331
3385
|
regex_flag: 'i'
|
3332
3386
|
device_replacement: '$1'
|
3333
3387
|
brand_replacement: 'Msi'
|
@@ -3337,7 +3391,7 @@ device_parsers:
|
|
3337
3391
|
# Multilaser
|
3338
3392
|
# http://www.multilaser.com.br/listagem_produtos.php?cat=5
|
3339
3393
|
#########
|
3340
|
-
- regex: '; *Multilaser[ _]([^;/]
|
3394
|
+
- regex: '; *Multilaser[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3341
3395
|
device_replacement: '$1'
|
3342
3396
|
brand_replacement: 'Multilaser'
|
3343
3397
|
model_replacement: '$1'
|
@@ -3346,15 +3400,15 @@ device_parsers:
|
|
3346
3400
|
# MyPhone
|
3347
3401
|
# @ref: http://myphone.com.ph/
|
3348
3402
|
#########
|
3349
|
-
- regex: '; *(My)[_]?(Pad)[ _]([^;/]
|
3403
|
+
- regex: '; *(My)[_]?(Pad)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3350
3404
|
device_replacement: '$1$2 $3'
|
3351
3405
|
brand_replacement: 'MyPhone'
|
3352
3406
|
model_replacement: '$1$2 $3'
|
3353
|
-
- regex: '; *(My)\|?(Phone)[ _]([^;/]
|
3407
|
+
- regex: '; *(My)\|?(Phone)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3354
3408
|
device_replacement: '$1$2 $3'
|
3355
3409
|
brand_replacement: 'MyPhone'
|
3356
3410
|
model_replacement: '$3'
|
3357
|
-
- regex: '; *(A\d+)[ _](Duo|) Build'
|
3411
|
+
- regex: '; *(A\d+)[ _](Duo|)(?: Build|\) AppleWebKit)'
|
3358
3412
|
regex_flag: 'i'
|
3359
3413
|
device_replacement: '$1 $2'
|
3360
3414
|
brand_replacement: 'MyPhone'
|
@@ -3364,7 +3418,7 @@ device_parsers:
|
|
3364
3418
|
# Mytab
|
3365
3419
|
# @ref: http://www.mytab.eu/en/category/mytab-products/
|
3366
3420
|
#########
|
3367
|
-
- regex: '; *(myTab[^;/]*) Build'
|
3421
|
+
- regex: '; *(myTab[^;/]*)(?: Build|\) AppleWebKit)'
|
3368
3422
|
device_replacement: '$1'
|
3369
3423
|
brand_replacement: 'Mytab'
|
3370
3424
|
model_replacement: '$1'
|
@@ -3373,7 +3427,7 @@ device_parsers:
|
|
3373
3427
|
# Nabi
|
3374
3428
|
# @ref: https://www.nabitablet.com
|
3375
3429
|
#########
|
3376
|
-
- regex: '; *(NABI2?-)([^;/]
|
3430
|
+
- regex: '; *(NABI2?-)([^;/]+?)(?: Build|\) AppleWebKit)'
|
3377
3431
|
device_replacement: '$1$2'
|
3378
3432
|
brand_replacement: 'Nabi'
|
3379
3433
|
model_replacement: '$2'
|
@@ -3382,15 +3436,15 @@ device_parsers:
|
|
3382
3436
|
# Nec Medias
|
3383
3437
|
# @ref: http://www.n-keitai.com/
|
3384
3438
|
#########
|
3385
|
-
- regex: '; *(N-\d+[CDE]) Build
|
3439
|
+
- regex: '; *(N-\d+[CDE])(?: Build|\) AppleWebKit)'
|
3386
3440
|
device_replacement: '$1'
|
3387
3441
|
brand_replacement: 'Nec'
|
3388
3442
|
model_replacement: '$1'
|
3389
|
-
- regex: '; ?(NEC-)(
|
3443
|
+
- regex: '; ?(NEC-)(.*?)(?: Build|\) AppleWebKit)'
|
3390
3444
|
device_replacement: '$1$2'
|
3391
3445
|
brand_replacement: 'Nec'
|
3392
3446
|
model_replacement: '$2'
|
3393
|
-
- regex: '; *(LT-NA7) Build
|
3447
|
+
- regex: '; *(LT-NA7)(?: Build|\) AppleWebKit)'
|
3394
3448
|
device_replacement: '$1'
|
3395
3449
|
brand_replacement: 'Nec'
|
3396
3450
|
model_replacement: 'Lifetouch Note'
|
@@ -3399,7 +3453,7 @@ device_parsers:
|
|
3399
3453
|
# Nextbook
|
3400
3454
|
# @ref: http://nextbookusa.com
|
3401
3455
|
#########
|
3402
|
-
- regex: '; *(NXM\d+[A-z0-9_]*|Next\d[A-z0-9_ \-]*|NEXT\d[A-z0-9_ \-]*|Nextbook [A-z0-9_ ]*|DATAM803HC|M805)(?: Build|[\);])'
|
3456
|
+
- regex: '; *(NXM\d+[A-Za-z0-9_]*|Next\d[A-Za-z0-9_ \-]*|NEXT\d[A-Za-z0-9_ \-]*|Nextbook [A-Za-z0-9_ ]*|DATAM803HC|M805)(?: Build|[\);])'
|
3403
3457
|
device_replacement: '$1'
|
3404
3458
|
brand_replacement: 'Nextbook'
|
3405
3459
|
model_replacement: '$1'
|
@@ -3419,11 +3473,11 @@ device_parsers:
|
|
3419
3473
|
# @ref:
|
3420
3474
|
# TODO nook browser/1.0
|
3421
3475
|
#########
|
3422
|
-
- regex: '; *(Nook ?|Barnes & Noble Nook |BN )([^;/]
|
3476
|
+
- regex: '; *(Nook ?|Barnes & Noble Nook |BN )([^;/]+?)(?: Build|\) AppleWebKit)'
|
3423
3477
|
device_replacement: '$1$2'
|
3424
3478
|
brand_replacement: 'Nook'
|
3425
3479
|
model_replacement: '$2'
|
3426
|
-
- regex: '; *(NOOK |)(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2) Build'
|
3480
|
+
- regex: '; *(NOOK |)(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2)(?: Build|\) AppleWebKit)'
|
3427
3481
|
device_replacement: '$1$2'
|
3428
3482
|
brand_replacement: 'Nook'
|
3429
3483
|
model_replacement: '$2'
|
@@ -3436,7 +3490,7 @@ device_parsers:
|
|
3436
3490
|
# Olivetti
|
3437
3491
|
# @ref: http://www.olivetti.de/EN/Page/t02/view_html?idp=348
|
3438
3492
|
#########
|
3439
|
-
- regex: '; *(OP110|OliPad[^;/]
|
3493
|
+
- regex: '; *(OP110|OliPad[^;/]+?)(?: Build|\) AppleWebKit)'
|
3440
3494
|
device_replacement: 'Olivetti $1'
|
3441
3495
|
brand_replacement: 'Olivetti'
|
3442
3496
|
model_replacement: '$1'
|
@@ -3447,7 +3501,7 @@ device_parsers:
|
|
3447
3501
|
# @note: MID tablets might get matched by CobyKyros first
|
3448
3502
|
# @models: (T107|MID(?:700[2-5]|7031|7108|7132|750[02]|8001|8500|9001|971[12])
|
3449
3503
|
#########
|
3450
|
-
- regex: '; *OMEGA[ _\-](MID[^;/]
|
3504
|
+
- regex: '; *OMEGA[ _\-](MID[^;/]+?)(?: Build|\) AppleWebKit)'
|
3451
3505
|
device_replacement: 'Omega $1'
|
3452
3506
|
brand_replacement: 'Omega'
|
3453
3507
|
model_replacement: '$1'
|
@@ -3460,7 +3514,7 @@ device_parsers:
|
|
3460
3514
|
# OpenPeak
|
3461
3515
|
# @ref: https://support.google.com/googleplay/answer/1727131?hl=en
|
3462
3516
|
#########
|
3463
|
-
- regex: '; *((?:CIUS|cius)[^;/]*) Build'
|
3517
|
+
- regex: '; *((?:CIUS|cius)[^;/]*)(?: Build|\) AppleWebKit)'
|
3464
3518
|
device_replacement: 'Openpeak $1'
|
3465
3519
|
brand_replacement: 'Openpeak'
|
3466
3520
|
model_replacement: '$1'
|
@@ -3469,11 +3523,11 @@ device_parsers:
|
|
3469
3523
|
# Oppo
|
3470
3524
|
# @ref: http://en.oppo.com/products/
|
3471
3525
|
#########
|
3472
|
-
- regex: '; *(Find ?(?:5|7a)|R8[012]\d{1,2}|T703\d{0,1}|U70\d{1,2}T?|X90\d{1,2}) Build'
|
3526
|
+
- regex: '; *(Find ?(?:5|7a)|R8[012]\d{1,2}|T703\d{0,1}|U70\d{1,2}T?|X90\d{1,2})(?: Build|\) AppleWebKit)'
|
3473
3527
|
device_replacement: 'Oppo $1'
|
3474
3528
|
brand_replacement: 'Oppo'
|
3475
3529
|
model_replacement: '$1'
|
3476
|
-
- regex: '; *OPPO ?([^;/]
|
3530
|
+
- regex: '; *OPPO ?([^;/]+?)(?: Build|\) AppleWebKit)'
|
3477
3531
|
device_replacement: 'Oppo $1'
|
3478
3532
|
brand_replacement: 'Oppo'
|
3479
3533
|
model_replacement: '$1'
|
@@ -3482,20 +3536,20 @@ device_parsers:
|
|
3482
3536
|
# Odys
|
3483
3537
|
# @ref: http://odys.de
|
3484
3538
|
#########
|
3485
|
-
- regex: '; *(?:Odys\-|ODYS\-|ODYS )([^;/]
|
3539
|
+
- regex: '; *(?:Odys\-|ODYS\-|ODYS )([^;/]+?)(?: Build|\) AppleWebKit)'
|
3486
3540
|
device_replacement: 'Odys $1'
|
3487
3541
|
brand_replacement: 'Odys'
|
3488
3542
|
model_replacement: '$1'
|
3489
|
-
- regex: '; *(SELECT) ?(7) Build'
|
3543
|
+
- regex: '; *(SELECT) ?(7)(?: Build|\) AppleWebKit)'
|
3490
3544
|
device_replacement: 'Odys $1 $2'
|
3491
3545
|
brand_replacement: 'Odys'
|
3492
3546
|
model_replacement: '$1 $2'
|
3493
|
-
- regex: '; *(PEDI)_(PLUS)_(W) Build'
|
3547
|
+
- regex: '; *(PEDI)_(PLUS)_(W)(?: Build|\) AppleWebKit)'
|
3494
3548
|
device_replacement: 'Odys $1 $2 $3'
|
3495
3549
|
brand_replacement: 'Odys'
|
3496
3550
|
model_replacement: '$1 $2 $3'
|
3497
3551
|
# Weltbild - Tablet PC 4 = Cat Phoenix = Odys Tablet PC 4?
|
3498
|
-
- regex: '; *(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'
|
3552
|
+
- regex: '; *(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)'
|
3499
3553
|
device_replacement: 'Odys $1'
|
3500
3554
|
brand_replacement: 'Odys'
|
3501
3555
|
model_replacement: '$1'
|
@@ -3504,11 +3558,11 @@ device_parsers:
|
|
3504
3558
|
# OnePlus
|
3505
3559
|
# @ref https://oneplus.net/
|
3506
3560
|
#########
|
3507
|
-
- regex: '; (ONE [a-zA-Z]\d+) Build
|
3561
|
+
- regex: '; (ONE [a-zA-Z]\d+)(?: Build|\) AppleWebKit)'
|
3508
3562
|
device_replacement: 'OnePlus $1'
|
3509
3563
|
brand_replacement: 'OnePlus'
|
3510
3564
|
model_replacement: '$1'
|
3511
|
-
- regex: '; (ONEPLUS [a-zA-Z]\d+)(?: Build
|
3565
|
+
- regex: '; (ONEPLUS [a-zA-Z]\d+)(?: Build|\) AppleWebKit)'
|
3512
3566
|
device_replacement: 'OnePlus $1'
|
3513
3567
|
brand_replacement: 'OnePlus'
|
3514
3568
|
model_replacement: '$1'
|
@@ -3517,7 +3571,7 @@ device_parsers:
|
|
3517
3571
|
# Orion
|
3518
3572
|
# @ref: http://www.orion.ua/en/products/computer-products/tablet-pcs.html
|
3519
3573
|
#########
|
3520
|
-
- regex: '; *(TP-\d+) Build
|
3574
|
+
- regex: '; *(TP-\d+)(?: Build|\) AppleWebKit)'
|
3521
3575
|
device_replacement: 'Orion $1'
|
3522
3576
|
brand_replacement: 'Orion'
|
3523
3577
|
model_replacement: '$1'
|
@@ -3526,7 +3580,7 @@ device_parsers:
|
|
3526
3580
|
# PackardBell
|
3527
3581
|
# @ref: http://www.packardbell.com/pb/en/AE/content/productgroup/tablets
|
3528
3582
|
#########
|
3529
|
-
- regex: '; *(G100W?) Build
|
3583
|
+
- regex: '; *(G100W?)(?: Build|\) AppleWebKit)'
|
3530
3584
|
device_replacement: 'PackardBell $1'
|
3531
3585
|
brand_replacement: 'PackardBell'
|
3532
3586
|
model_replacement: '$1'
|
@@ -3537,17 +3591,17 @@ device_parsers:
|
|
3537
3591
|
# @models: T11, T21, T31, P11, P51, Eluga Power, Eluga DL1
|
3538
3592
|
# @models: (tab) Toughpad FZ-A1, Toughpad JT-B1
|
3539
3593
|
#########
|
3540
|
-
- regex: '; *(Panasonic)[_ ]([^;/]
|
3594
|
+
- regex: '; *(Panasonic)[_ ]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3541
3595
|
device_replacement: '$1 $2'
|
3542
3596
|
brand_replacement: '$1'
|
3543
3597
|
model_replacement: '$2'
|
3544
3598
|
# Toughpad
|
3545
|
-
- regex: '; *(FZ-A1B|JT-B1) Build'
|
3599
|
+
- regex: '; *(FZ-A1B|JT-B1)(?: Build|\) AppleWebKit)'
|
3546
3600
|
device_replacement: 'Panasonic $1'
|
3547
3601
|
brand_replacement: 'Panasonic'
|
3548
3602
|
model_replacement: '$1'
|
3549
3603
|
# Eluga Power
|
3550
|
-
- regex: '; *(dL1|DL1) Build'
|
3604
|
+
- regex: '; *(dL1|DL1)(?: Build|\) AppleWebKit)'
|
3551
3605
|
device_replacement: 'Panasonic $1'
|
3552
3606
|
brand_replacement: 'Panasonic'
|
3553
3607
|
model_replacement: '$1'
|
@@ -3575,7 +3629,7 @@ device_parsers:
|
|
3575
3629
|
# Papayre
|
3576
3630
|
# @ref: http://grammata.es/
|
3577
3631
|
#########
|
3578
|
-
- regex: '; *(papyre)[ _\-]([^;/]
|
3632
|
+
- regex: '; *(papyre)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3579
3633
|
regex_flag: 'i'
|
3580
3634
|
device_replacement: '$1 $2'
|
3581
3635
|
brand_replacement: 'Papyre'
|
@@ -3585,7 +3639,7 @@ device_parsers:
|
|
3585
3639
|
# Pearl
|
3586
3640
|
# @ref: http://www.pearl.de/c-1540.shtml
|
3587
3641
|
#########
|
3588
|
-
- regex: '; *(?:Touchlet )?(X10\.[^;/]
|
3642
|
+
- regex: '; *(?:Touchlet )?(X10\.[^;/]+?)(?: Build|\) AppleWebKit)'
|
3589
3643
|
device_replacement: 'Pearl $1'
|
3590
3644
|
brand_replacement: 'Pearl'
|
3591
3645
|
model_replacement: '$1'
|
@@ -3594,15 +3648,15 @@ device_parsers:
|
|
3594
3648
|
# Phicomm
|
3595
3649
|
# @ref: http://www.phicomm.com.cn/
|
3596
3650
|
#########
|
3597
|
-
- regex: '; PHICOMM (i800) Build
|
3651
|
+
- regex: '; PHICOMM (i800)(?: Build|\) AppleWebKit)'
|
3598
3652
|
device_replacement: 'Phicomm $1'
|
3599
3653
|
brand_replacement: 'Phicomm'
|
3600
3654
|
model_replacement: '$1'
|
3601
|
-
- regex: '; PHICOMM ([^;/]
|
3655
|
+
- regex: '; PHICOMM ([^;/]+?)(?: Build|\) AppleWebKit)'
|
3602
3656
|
device_replacement: 'Phicomm $1'
|
3603
3657
|
brand_replacement: 'Phicomm'
|
3604
3658
|
model_replacement: '$1'
|
3605
|
-
- regex: '; *(FWS\d{3}[^;/]
|
3659
|
+
- regex: '; *(FWS\d{3}[^;/]+?)(?: Build|\) AppleWebKit)'
|
3606
3660
|
device_replacement: 'Phicomm $1'
|
3607
3661
|
brand_replacement: 'Phicomm'
|
3608
3662
|
model_replacement: '$1'
|
@@ -3614,11 +3668,11 @@ device_parsers:
|
|
3614
3668
|
# @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
|
3615
3669
|
#########
|
3616
3670
|
# @note: this a best guess according to available philips models. Need more User-Agents
|
3617
|
-
- regex: '; *(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'
|
3671
|
+
- regex: '; *(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)'
|
3618
3672
|
device_replacement: '$1'
|
3619
3673
|
brand_replacement: 'Philips'
|
3620
3674
|
model_replacement: '$1'
|
3621
|
-
- regex: '; *(?:Philips|PHILIPS)[ _]([^;/]
|
3675
|
+
- regex: '; *(?:Philips|PHILIPS)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3622
3676
|
device_replacement: 'Philips $1'
|
3623
3677
|
brand_replacement: 'Philips'
|
3624
3678
|
model_replacement: '$1'
|
@@ -3627,7 +3681,7 @@ device_parsers:
|
|
3627
3681
|
# Pipo
|
3628
3682
|
# @ref: http://www.pipo.cn/En/
|
3629
3683
|
#########
|
3630
|
-
- regex: 'Android 4\..*; *(M[12356789]|U[12368]|S[123])\ ?(pro)? Build'
|
3684
|
+
- regex: 'Android 4\..*; *(M[12356789]|U[12368]|S[123])\ ?(pro)?(?: Build|\) AppleWebKit)'
|
3631
3685
|
device_replacement: 'Pipo $1$2'
|
3632
3686
|
brand_replacement: 'Pipo'
|
3633
3687
|
model_replacement: '$1$2'
|
@@ -3636,7 +3690,7 @@ device_parsers:
|
|
3636
3690
|
# Ployer
|
3637
3691
|
# @ref: http://en.ployer.cn/
|
3638
3692
|
#########
|
3639
|
-
- regex: '; *(MOMO[^;/]
|
3693
|
+
- regex: '; *(MOMO[^;/]+?)(?: Build|\) AppleWebKit)'
|
3640
3694
|
device_replacement: '$1'
|
3641
3695
|
brand_replacement: 'Ployer'
|
3642
3696
|
model_replacement: '$1'
|
@@ -3645,11 +3699,11 @@ device_parsers:
|
|
3645
3699
|
# Polaroid/ Acho
|
3646
3700
|
# @ref: http://polaroidstore.com/store/start.asp?category_id=382&category_id2=0&order=title&filter1=&filter2=&filter3=&view=all
|
3647
3701
|
#########
|
3648
|
-
- regex: '; *(?:Polaroid[ _]|)((?:MIDC\d{3,}|PMID\d{2,}|PTAB\d{3,})[^;/]
|
3702
|
+
- regex: '; *(?:Polaroid[ _]|)((?:MIDC\d{3,}|PMID\d{2,}|PTAB\d{3,})[^;/]*?)(\/[^;/]*|)(?: Build|\) AppleWebKit)'
|
3649
3703
|
device_replacement: '$1'
|
3650
3704
|
brand_replacement: 'Polaroid'
|
3651
3705
|
model_replacement: '$1'
|
3652
|
-
- regex: '; *(?:Polaroid )(Tablet) Build
|
3706
|
+
- regex: '; *(?:Polaroid )(Tablet)(?: Build|\) AppleWebKit)'
|
3653
3707
|
device_replacement: '$1'
|
3654
3708
|
brand_replacement: 'Polaroid'
|
3655
3709
|
model_replacement: '$1'
|
@@ -3668,11 +3722,11 @@ device_parsers:
|
|
3668
3722
|
# Positivo
|
3669
3723
|
# @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
|
3670
3724
|
#########
|
3671
|
-
- regex: '; *(TB07STA|TB10STA|TB07FTA|TB10FTA) Build
|
3725
|
+
- regex: '; *(TB07STA|TB10STA|TB07FTA|TB10FTA)(?: Build|\) AppleWebKit)'
|
3672
3726
|
device_replacement: '$1'
|
3673
3727
|
brand_replacement: 'Positivo'
|
3674
3728
|
model_replacement: '$1'
|
3675
|
-
- regex: '; *(?:Positivo |)((?:YPY|Ypy)[^;/]
|
3729
|
+
- regex: '; *(?:Positivo |)((?:YPY|Ypy)[^;/]+?)(?: Build|\) AppleWebKit)'
|
3676
3730
|
device_replacement: '$1'
|
3677
3731
|
brand_replacement: 'Positivo'
|
3678
3732
|
model_replacement: '$1'
|
@@ -3682,15 +3736,15 @@ device_parsers:
|
|
3682
3736
|
# @ref: http://www.pointofview-online.com/default2.php
|
3683
3737
|
# @TODO: Smartphone Models MOB-3515, MOB-5045-B missing
|
3684
3738
|
#########
|
3685
|
-
- regex: '; *(MOB-[^;/]
|
3739
|
+
- regex: '; *(MOB-[^;/]+?)(?: Build|\) AppleWebKit)'
|
3686
3740
|
device_replacement: '$1'
|
3687
3741
|
brand_replacement: 'POV'
|
3688
3742
|
model_replacement: '$1'
|
3689
|
-
- regex: '; *POV[ _\-]([^;/]
|
3743
|
+
- regex: '; *POV[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3690
3744
|
device_replacement: 'POV $1'
|
3691
3745
|
brand_replacement: 'POV'
|
3692
3746
|
model_replacement: '$1'
|
3693
|
-
- regex: '; *((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\-]|TAB-P)[^;/]*) Build
|
3747
|
+
- regex: '; *((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\-]|TAB-P)[^;/]*)(?: Build|\) AppleWebKit)'
|
3694
3748
|
device_replacement: 'POV $1'
|
3695
3749
|
brand_replacement: 'POV'
|
3696
3750
|
model_replacement: '$1'
|
@@ -3700,7 +3754,7 @@ device_parsers:
|
|
3700
3754
|
# @ref: http://www.prestigio.com/catalogue/MultiPhones
|
3701
3755
|
# @ref: http://www.prestigio.com/catalogue/MultiPads
|
3702
3756
|
#########
|
3703
|
-
- regex: '; *(?:Prestigio |)((?:PAP|PMP)\d[^;/]
|
3757
|
+
- regex: '; *(?:Prestigio |)((?:PAP|PMP)\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
3704
3758
|
device_replacement: 'Prestigio $1'
|
3705
3759
|
brand_replacement: 'Prestigio'
|
3706
3760
|
model_replacement: '$1'
|
@@ -3709,7 +3763,7 @@ device_parsers:
|
|
3709
3763
|
# Proscan
|
3710
3764
|
# @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
|
3711
3765
|
#########
|
3712
|
-
- regex: '; *(PLT[0-9]{4}
|
3766
|
+
- regex: '; *(PLT[0-9]{4}.*?)(?: Build|\) AppleWebKit)'
|
3713
3767
|
device_replacement: '$1'
|
3714
3768
|
brand_replacement: 'Proscan'
|
3715
3769
|
model_replacement: '$1'
|
@@ -3718,15 +3772,15 @@ device_parsers:
|
|
3718
3772
|
# QMobile
|
3719
3773
|
# @ref: http://www.qmobile.com.pk/
|
3720
3774
|
#########
|
3721
|
-
- regex: '; *(A2|A5|A8|A900)_?(Classic|) Build'
|
3775
|
+
- regex: '; *(A2|A5|A8|A900)_?(Classic|)(?: Build|\) AppleWebKit)'
|
3722
3776
|
device_replacement: '$1 $2'
|
3723
3777
|
brand_replacement: 'Qmobile'
|
3724
3778
|
model_replacement: '$1 $2'
|
3725
|
-
- regex: '; *(Q[Mm]obile)_([^_]+)_([^_]
|
3779
|
+
- regex: '; *(Q[Mm]obile)_([^_]+)_([^_]+?)(?: Build|\) AppleWebKit)'
|
3726
3780
|
device_replacement: 'Qmobile $2 $3'
|
3727
3781
|
brand_replacement: 'Qmobile'
|
3728
3782
|
model_replacement: '$2 $3'
|
3729
|
-
- regex: '; *(Q\-?[Mm]obile)[_ ](A[^;/]
|
3783
|
+
- regex: '; *(Q\-?[Mm]obile)[_ ](A[^;/]+?)(?: Build|\) AppleWebKit)'
|
3730
3784
|
device_replacement: 'Qmobile $2'
|
3731
3785
|
brand_replacement: 'Qmobile'
|
3732
3786
|
model_replacement: '$2'
|
@@ -3735,11 +3789,11 @@ device_parsers:
|
|
3735
3789
|
# Qmobilevn
|
3736
3790
|
# @ref: http://qmobile.vn/san-pham.html
|
3737
3791
|
#########
|
3738
|
-
- regex: '; *(Q\-Smart)[ _]([^;/]
|
3792
|
+
- regex: '; *(Q\-Smart)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
3739
3793
|
device_replacement: '$1 $2'
|
3740
3794
|
brand_replacement: 'Qmobilevn'
|
3741
3795
|
model_replacement: '$2'
|
3742
|
-
- regex: '; *(Q\-?[Mm]obile)[ _\-](S[^;/]
|
3796
|
+
- regex: '; *(Q\-?[Mm]obile)[ _\-](S[^;/]+?)(?: Build|\) AppleWebKit)'
|
3743
3797
|
device_replacement: '$1 $2'
|
3744
3798
|
brand_replacement: 'Qmobilevn'
|
3745
3799
|
model_replacement: '$2'
|
@@ -3748,7 +3802,7 @@ device_parsers:
|
|
3748
3802
|
# Quanta
|
3749
3803
|
# @ref: ?
|
3750
3804
|
#########
|
3751
|
-
- regex: '; *(TA1013) Build'
|
3805
|
+
- regex: '; *(TA1013)(?: Build|\) AppleWebKit)'
|
3752
3806
|
device_replacement: '$1'
|
3753
3807
|
brand_replacement: 'Quanta'
|
3754
3808
|
model_replacement: '$1'
|
@@ -3757,11 +3811,11 @@ device_parsers:
|
|
3757
3811
|
# RCA
|
3758
3812
|
# @ref: http://rcamobilephone.com/
|
3759
3813
|
#########
|
3760
|
-
- regex: '; (RCT\w+) Build
|
3814
|
+
- regex: '; (RCT\w+)(?: Build|\) AppleWebKit)'
|
3761
3815
|
device_replacement: '$1'
|
3762
3816
|
brand_replacement: 'RCA'
|
3763
3817
|
model_replacement: '$1'
|
3764
|
-
- regex: '; RCA (\w+) Build
|
3818
|
+
- regex: '; RCA (\w+)(?: Build|\) AppleWebKit)'
|
3765
3819
|
device_replacement: 'RCA $1'
|
3766
3820
|
brand_replacement: 'RCA'
|
3767
3821
|
model_replacement: '$1'
|
@@ -3771,7 +3825,7 @@ device_parsers:
|
|
3771
3825
|
# @ref: http://www.rock-chips.com/a/cn/product/index.html
|
3772
3826
|
# @note: manufacturer sells chipsets - I assume that these UAs are dev-boards
|
3773
3827
|
#########
|
3774
|
-
- regex: '; *(RK\d+),? Build
|
3828
|
+
- regex: '; *(RK\d+),?(?: Build|\) AppleWebKit)'
|
3775
3829
|
device_replacement: '$1'
|
3776
3830
|
brand_replacement: 'Rockchip'
|
3777
3831
|
model_replacement: '$1'
|
@@ -3842,11 +3896,11 @@ device_parsers:
|
|
3842
3896
|
# @ref: http://www.sharp-phone.com/en/index.html
|
3843
3897
|
# @ref: http://www.android.com/devices/?country=all&m=sharp
|
3844
3898
|
#########
|
3845
|
-
- regex: '; *(SH\-?\d\d[^;/]+|SBM\d[^;/]
|
3899
|
+
- regex: '; *(SH\-?\d\d[^;/]+|SBM\d[^;/]+?)(?: Build|\) AppleWebKit)'
|
3846
3900
|
device_replacement: '$1'
|
3847
3901
|
brand_replacement: 'Sharp'
|
3848
3902
|
model_replacement: '$1'
|
3849
|
-
- regex: '; *(SHARP[ -])([^;/]
|
3903
|
+
- regex: '; *(SHARP[ -])([^;/]+?)(?: Build|\) AppleWebKit)'
|
3850
3904
|
device_replacement: '$1$2'
|
3851
3905
|
brand_replacement: 'Sharp'
|
3852
3906
|
model_replacement: '$2'
|
@@ -3855,15 +3909,15 @@ device_parsers:
|
|
3855
3909
|
# Simvalley
|
3856
3910
|
# @ref: http://www.simvalley-mobile.de/
|
3857
3911
|
#########
|
3858
|
-
- regex: '; *(SPX[_\-]\d[^;/]*) Build
|
3912
|
+
- regex: '; *(SPX[_\-]\d[^;/]*)(?: Build|\) AppleWebKit)'
|
3859
3913
|
device_replacement: '$1'
|
3860
3914
|
brand_replacement: 'Simvalley'
|
3861
3915
|
model_replacement: '$1'
|
3862
|
-
- regex: '; *(SX7\-PEARL\.GmbH) Build
|
3916
|
+
- regex: '; *(SX7\-PEARL\.GmbH)(?: Build|\) AppleWebKit)'
|
3863
3917
|
device_replacement: '$1'
|
3864
3918
|
brand_replacement: 'Simvalley'
|
3865
3919
|
model_replacement: '$1'
|
3866
|
-
- regex: '; *(SP[T]?\-\d{2}[^;/]*) Build
|
3920
|
+
- regex: '; *(SP[T]?\-\d{2}[^;/]*)(?: Build|\) AppleWebKit)'
|
3867
3921
|
device_replacement: '$1'
|
3868
3922
|
brand_replacement: 'Simvalley'
|
3869
3923
|
model_replacement: '$1'
|
@@ -3873,7 +3927,7 @@ device_parsers:
|
|
3873
3927
|
# @ref: http://www.sk-w.com/phone/phone_list.jsp
|
3874
3928
|
# @ref: http://www.android.com/devices/?country=all&m=sk-telesys
|
3875
3929
|
#########
|
3876
|
-
- regex: '; *(SK
|
3930
|
+
- regex: '; *(SK\-.*?)(?: Build|\) AppleWebKit)'
|
3877
3931
|
device_replacement: '$1'
|
3878
3932
|
brand_replacement: 'SKtelesys'
|
3879
3933
|
model_replacement: '$1'
|
@@ -3882,11 +3936,11 @@ device_parsers:
|
|
3882
3936
|
# Skytex
|
3883
3937
|
# @ref: http://skytex.com/android
|
3884
3938
|
#########
|
3885
|
-
- regex: '; *(?:SKYTEX|SX)-([^;/]
|
3939
|
+
- regex: '; *(?:SKYTEX|SX)-([^;/]+?)(?: Build|\) AppleWebKit)'
|
3886
3940
|
device_replacement: '$1'
|
3887
3941
|
brand_replacement: 'Skytex'
|
3888
3942
|
model_replacement: '$1'
|
3889
|
-
- regex: '; *(IMAGINE [^;/]
|
3943
|
+
- regex: '; *(IMAGINE [^;/]+?)(?: Build|\) AppleWebKit)'
|
3890
3944
|
device_replacement: '$1'
|
3891
3945
|
brand_replacement: 'Skytex'
|
3892
3946
|
model_replacement: '$1'
|
@@ -3896,7 +3950,7 @@ device_parsers:
|
|
3896
3950
|
# @ref: http://en.smartdevices.com.cn/Products/
|
3897
3951
|
# @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
|
3898
3952
|
#########
|
3899
|
-
- regex: '; *(SmartQ) ?([^;/]
|
3953
|
+
- regex: '; *(SmartQ) ?([^;/]+?)(?: Build|\) AppleWebKit)'
|
3900
3954
|
device_replacement: '$1 $2'
|
3901
3955
|
brand_replacement: '$1'
|
3902
3956
|
model_replacement: '$2'
|
@@ -3906,7 +3960,7 @@ device_parsers:
|
|
3906
3960
|
# @ref: http://www.smartbitt.com/
|
3907
3961
|
# @missing: SBT Useragents
|
3908
3962
|
#########
|
3909
|
-
- regex: '; *(WF7C|WF10C|SBT[^;/]
|
3963
|
+
- regex: '; *(WF7C|WF10C|SBT[^;/]+?)(?: Build|\) AppleWebKit)'
|
3910
3964
|
device_replacement: '$1'
|
3911
3965
|
brand_replacement: 'Smartbitt'
|
3912
3966
|
model_replacement: '$1'
|
@@ -3949,7 +4003,7 @@ device_parsers:
|
|
3949
4003
|
device_replacement: 'Trekstor $1'
|
3950
4004
|
brand_replacement: 'Trekstor'
|
3951
4005
|
model_replacement: '$1'
|
3952
|
-
- regex: '; *(ST\d{4}
|
4006
|
+
- regex: '; *(ST\d{4}.*?)(?: Build|\) AppleWebKit)'
|
3953
4007
|
device_replacement: 'Trekstor $1'
|
3954
4008
|
brand_replacement: 'Trekstor'
|
3955
4009
|
model_replacement: '$1'
|
@@ -3982,31 +4036,31 @@ device_parsers:
|
|
3982
4036
|
# @ref: http://www.sonymobile.com/global-en/products/phones/
|
3983
4037
|
# @ref: http://www.sony.jp/tablet/
|
3984
4038
|
#########
|
3985
|
-
- regex: '; Sony (Tablet[^;/]
|
4039
|
+
- regex: '; Sony (Tablet[^;/]+?)(?: Build|\) AppleWebKit)'
|
3986
4040
|
device_replacement: 'Sony $1'
|
3987
4041
|
brand_replacement: 'Sony'
|
3988
4042
|
model_replacement: '$1'
|
3989
|
-
- regex: '; Sony ([^;/]
|
4043
|
+
- regex: '; Sony ([^;/]+?)(?: Build|\) AppleWebKit)'
|
3990
4044
|
device_replacement: 'Sony $1'
|
3991
4045
|
brand_replacement: 'Sony'
|
3992
4046
|
model_replacement: '$1'
|
3993
|
-
- regex: '; *(Sony)([A-Za-z0-9\-]+) Build'
|
4047
|
+
- regex: '; *(Sony)([A-Za-z0-9\-]+)(?: Build|\) AppleWebKit)'
|
3994
4048
|
device_replacement: '$1 $2'
|
3995
4049
|
brand_replacement: '$1'
|
3996
4050
|
model_replacement: '$2'
|
3997
|
-
- regex: '; *(Xperia [^;/]
|
4051
|
+
- regex: '; *(Xperia [^;/]+?)(?: Build|\) AppleWebKit)'
|
3998
4052
|
device_replacement: '$1'
|
3999
4053
|
brand_replacement: 'Sony'
|
4000
4054
|
model_replacement: '$1'
|
4001
|
-
- regex: '; *(C(?:1[0-9]|2[0-9]|53|55|6[0-9])[0-9]{2}|D[25]\d{3}|D6[56]\d{2}) Build'
|
4055
|
+
- regex: '; *(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)'
|
4002
4056
|
device_replacement: '$1'
|
4003
4057
|
brand_replacement: 'Sony'
|
4004
4058
|
model_replacement: '$1'
|
4005
|
-
- regex: '; *(SGP\d{3}|SGPT\d{2}) Build'
|
4059
|
+
- regex: '; *(SGP\d{3}|SGPT\d{2})(?: Build|\) AppleWebKit)'
|
4006
4060
|
device_replacement: '$1'
|
4007
4061
|
brand_replacement: 'Sony'
|
4008
4062
|
model_replacement: '$1'
|
4009
|
-
- regex: '; *(NW-Z1000Series) Build'
|
4063
|
+
- regex: '; *(NW-Z1000Series)(?: Build|\) AppleWebKit)'
|
4010
4064
|
device_replacement: '$1'
|
4011
4065
|
brand_replacement: 'Sony'
|
4012
4066
|
model_replacement: '$1'
|
@@ -4029,7 +4083,7 @@ device_parsers:
|
|
4029
4083
|
# Spice
|
4030
4084
|
# @ref: http://www.spicemobilephones.co.in/
|
4031
4085
|
#########
|
4032
|
-
- regex: '; *((?:CSL_Spice|Spice|SPICE|CSL)[ _\-]?|)([Mm][Ii])([ _\-]|)(\d{3}[^;/]*) Build
|
4086
|
+
- regex: '; *((?:CSL_Spice|Spice|SPICE|CSL)[ _\-]?|)([Mm][Ii])([ _\-]|)(\d{3}[^;/]*)(?: Build|\) AppleWebKit)'
|
4033
4087
|
device_replacement: '$1$2$3$4'
|
4034
4088
|
brand_replacement: 'Spice'
|
4035
4089
|
model_replacement: 'Mi$4'
|
@@ -4051,7 +4105,7 @@ device_parsers:
|
|
4051
4105
|
# Tagi
|
4052
4106
|
# @ref: ??
|
4053
4107
|
#########
|
4054
|
-
- regex: '; *(TAGI[ ]?)(MID) ?([^;/]
|
4108
|
+
- regex: '; *(TAGI[ ]?)(MID) ?([^;/]+?)(?: Build|\) AppleWebKit)'
|
4055
4109
|
device_replacement: '$1$2$3'
|
4056
4110
|
brand_replacement: 'Tagi'
|
4057
4111
|
model_replacement: '$2$3'
|
@@ -4060,7 +4114,7 @@ device_parsers:
|
|
4060
4114
|
# Tecmobile
|
4061
4115
|
# @ref: http://www.tecmobile.com/
|
4062
4116
|
#########
|
4063
|
-
- regex: '; *(Oyster500|Opal 800) Build'
|
4117
|
+
- regex: '; *(Oyster500|Opal 800)(?: Build|\) AppleWebKit)'
|
4064
4118
|
device_replacement: 'Tecmobile $1'
|
4065
4119
|
brand_replacement: 'Tecmobile'
|
4066
4120
|
model_replacement: '$1'
|
@@ -4069,7 +4123,7 @@ device_parsers:
|
|
4069
4123
|
# Tecno
|
4070
4124
|
# @ref: www.tecno-mobile.com/
|
4071
4125
|
#########
|
4072
|
-
- regex: '; *(TECNO[ _])([^;/]
|
4126
|
+
- regex: '; *(TECNO[ _])([^;/]+?)(?: Build|\) AppleWebKit)'
|
4073
4127
|
device_replacement: '$1$2'
|
4074
4128
|
brand_replacement: 'Tecno'
|
4075
4129
|
model_replacement: '$2'
|
@@ -4089,7 +4143,7 @@ device_parsers:
|
|
4089
4143
|
# @ref: http://www.telstra.com.au/home-phone/thub-2/
|
4090
4144
|
# @ref: https://support.google.com/googleplay/answer/1727131?hl=en
|
4091
4145
|
#########
|
4092
|
-
- regex: '; *(T-Hub2) Build
|
4146
|
+
- regex: '; *(T-Hub2)(?: Build|\) AppleWebKit)'
|
4093
4147
|
device_replacement: '$1'
|
4094
4148
|
brand_replacement: 'Telstra'
|
4095
4149
|
model_replacement: '$1'
|
@@ -4098,7 +4152,7 @@ device_parsers:
|
|
4098
4152
|
# Terra
|
4099
4153
|
# @ref: http://www.wortmann.de/
|
4100
4154
|
#########
|
4101
|
-
- regex: '; *(PAD) ?(100[12]) Build
|
4155
|
+
- regex: '; *(PAD) ?(100[12])(?: Build|\) AppleWebKit)'
|
4102
4156
|
device_replacement: 'Terra $1$2'
|
4103
4157
|
brand_replacement: 'Terra'
|
4104
4158
|
model_replacement: '$1$2'
|
@@ -4107,7 +4161,7 @@ device_parsers:
|
|
4107
4161
|
# Texet
|
4108
4162
|
# @ref: http://www.texet.ru/tablet/
|
4109
4163
|
#########
|
4110
|
-
- regex: '; *(T[BM]-\d{3}[^;/]
|
4164
|
+
- regex: '; *(T[BM]-\d{3}[^;/]+?)(?: Build|\) AppleWebKit)'
|
4111
4165
|
device_replacement: '$1'
|
4112
4166
|
brand_replacement: 'Texet'
|
4113
4167
|
model_replacement: '$1'
|
@@ -4116,7 +4170,7 @@ device_parsers:
|
|
4116
4170
|
# Thalia
|
4117
4171
|
# @ref: http://www.thalia.de/shop/tolino-shine-ereader/show/
|
4118
4172
|
#########
|
4119
|
-
- regex: '; *(tolino [^;/]
|
4173
|
+
- regex: '; *(tolino [^;/]+?)(?: Build|\) AppleWebKit)'
|
4120
4174
|
device_replacement: '$1'
|
4121
4175
|
brand_replacement: 'Thalia'
|
4122
4176
|
model_replacement: '$1'
|
@@ -4130,11 +4184,11 @@ device_parsers:
|
|
4130
4184
|
# @ref: http://en.thl.com.cn/Mobile
|
4131
4185
|
# @ref: http://thlmobilestore.com
|
4132
4186
|
#########
|
4133
|
-
- regex: '; *(?:CJ[ -])?(ThL|THL)[ -]([^;/]
|
4187
|
+
- regex: '; *(?:CJ[ -])?(ThL|THL)[ -]([^;/]+?)(?: Build|\) AppleWebKit)'
|
4134
4188
|
device_replacement: '$1 $2'
|
4135
4189
|
brand_replacement: 'Thl'
|
4136
4190
|
model_replacement: '$2'
|
4137
|
-
- regex: '; *(T100|T200|T5|W100|W200|W8s) Build
|
4191
|
+
- regex: '; *(T100|T200|T5|W100|W200|W8s)(?: Build|\) AppleWebKit)'
|
4138
4192
|
device_replacement: '$1'
|
4139
4193
|
brand_replacement: 'Thl'
|
4140
4194
|
model_replacement: '$1'
|
@@ -4185,7 +4239,7 @@ device_parsers:
|
|
4185
4239
|
# Tomtec
|
4186
4240
|
# @ref: http://www.tom-tec.eu/pages/tablets.php
|
4187
4241
|
#########
|
4188
|
-
- regex: ' (ATP[0-9]{4}) Build'
|
4242
|
+
- regex: ' (ATP[0-9]{4})(?: Build|\) AppleWebKit)'
|
4189
4243
|
device_replacement: '$1'
|
4190
4244
|
brand_replacement: 'Tomtec'
|
4191
4245
|
model_replacement: '$1'
|
@@ -4194,7 +4248,7 @@ device_parsers:
|
|
4194
4248
|
# Tooky
|
4195
4249
|
# @ref: http://www.tookymobile.com/
|
4196
4250
|
#########
|
4197
|
-
- regex: ' *(TOOKY)[ _\-]([^;/]
|
4251
|
+
- regex: ' *(TOOKY)[ _\-]([^;/]+?) ?(?:Build|;)'
|
4198
4252
|
regex_flag: 'i'
|
4199
4253
|
device_replacement: '$1 $2'
|
4200
4254
|
brand_replacement: 'Tooky'
|
@@ -4209,11 +4263,11 @@ device_parsers:
|
|
4209
4263
|
device_replacement: '$1'
|
4210
4264
|
brand_replacement: 'Toshiba'
|
4211
4265
|
model_replacement: 'Folio 100'
|
4212
|
-
- regex: '; *([Ff]olio ?100) Build
|
4266
|
+
- regex: '; *([Ff]olio ?100)(?: Build|\) AppleWebKit)'
|
4213
4267
|
device_replacement: '$1'
|
4214
4268
|
brand_replacement: 'Toshiba'
|
4215
4269
|
model_replacement: 'Folio 100'
|
4216
|
-
- regex: '; *(AT[0-9]{2,3}(?:\-A|LE\-A|PE\-A|SE|a|)|AT7-A|AT1S0|Hikari-iFrame/WDPF-[^;/]+|THRiVE|Thrive) Build
|
4270
|
+
- regex: '; *(AT[0-9]{2,3}(?:\-A|LE\-A|PE\-A|SE|a|)|AT7-A|AT1S0|Hikari-iFrame/WDPF-[^;/]+|THRiVE|Thrive)(?: Build|\) AppleWebKit)'
|
4217
4271
|
device_replacement: 'Toshiba $1'
|
4218
4272
|
brand_replacement: 'Toshiba'
|
4219
4273
|
model_replacement: '$1'
|
@@ -4222,12 +4276,12 @@ device_parsers:
|
|
4222
4276
|
# Touchmate
|
4223
4277
|
# @ref: http://touchmatepc.com/new/
|
4224
4278
|
#########
|
4225
|
-
- regex: '; *(TM-MID\d+[^;/]+|TOUCHMATE|MID-750) Build'
|
4279
|
+
- regex: '; *(TM-MID\d+[^;/]+|TOUCHMATE|MID-750)(?: Build|\) AppleWebKit)'
|
4226
4280
|
device_replacement: '$1'
|
4227
4281
|
brand_replacement: 'Touchmate'
|
4228
4282
|
model_replacement: '$1'
|
4229
4283
|
# @todo: needs verification user-agents missing
|
4230
|
-
- regex: '; *(TM-SM\d+[^;/]
|
4284
|
+
- regex: '; *(TM-SM\d+[^;/]+?)(?: Build|\) AppleWebKit)'
|
4231
4285
|
device_replacement: '$1'
|
4232
4286
|
brand_replacement: 'Touchmate'
|
4233
4287
|
model_replacement: '$1'
|
@@ -4236,11 +4290,11 @@ device_parsers:
|
|
4236
4290
|
# Treq
|
4237
4291
|
# @ref: http://www.treq.co.id/product
|
4238
4292
|
#########
|
4239
|
-
- regex: '; *(A10 [Bb]asic2?) Build
|
4293
|
+
- regex: '; *(A10 [Bb]asic2?)(?: Build|\) AppleWebKit)'
|
4240
4294
|
device_replacement: '$1'
|
4241
4295
|
brand_replacement: 'Treq'
|
4242
4296
|
model_replacement: '$1'
|
4243
|
-
- regex: '; *(TREQ[ _\-])([^;/]
|
4297
|
+
- regex: '; *(TREQ[ _\-])([^;/]+?)(?: Build|\) AppleWebKit)'
|
4244
4298
|
regex_flag: 'i'
|
4245
4299
|
device_replacement: '$1$2'
|
4246
4300
|
brand_replacement: 'Treq'
|
@@ -4252,12 +4306,12 @@ device_parsers:
|
|
4252
4306
|
# @models: A936|A603|X-5|X-3
|
4253
4307
|
#########
|
4254
4308
|
# @todo: guessed markers
|
4255
|
-
- regex: '; *(X-?5|X-?3) Build
|
4309
|
+
- regex: '; *(X-?5|X-?3)(?: Build|\) AppleWebKit)'
|
4256
4310
|
device_replacement: '$1'
|
4257
4311
|
brand_replacement: 'Umeox'
|
4258
4312
|
model_replacement: '$1'
|
4259
4313
|
# @todo: guessed markers
|
4260
|
-
- regex: '; *(A502\+?|A936|A603|X1|X2) Build
|
4314
|
+
- regex: '; *(A502\+?|A936|A603|X1|X2)(?: Build|\) AppleWebKit)'
|
4261
4315
|
device_replacement: '$1'
|
4262
4316
|
brand_replacement: 'Umeox'
|
4263
4317
|
model_replacement: '$1'
|
@@ -4266,7 +4320,7 @@ device_parsers:
|
|
4266
4320
|
# Versus
|
4267
4321
|
# @ref: http://versusuk.com/support.html
|
4268
4322
|
#########
|
4269
|
-
- regex: '(TOUCH(?:TAB|PAD).+?) Build
|
4323
|
+
- regex: '(TOUCH(?:TAB|PAD).+?)(?: Build|\) AppleWebKit)'
|
4270
4324
|
regex_flag: 'i'
|
4271
4325
|
device_replacement: 'Versus $1'
|
4272
4326
|
brand_replacement: 'Versus'
|
@@ -4276,7 +4330,7 @@ device_parsers:
|
|
4276
4330
|
# Vertu
|
4277
4331
|
# @ref: http://www.vertu.com/
|
4278
4332
|
#########
|
4279
|
-
- regex: '(VERTU) ([^;/]
|
4333
|
+
- regex: '(VERTU) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
4280
4334
|
device_replacement: '$1 $2'
|
4281
4335
|
brand_replacement: 'Vertu'
|
4282
4336
|
model_replacement: '$2'
|
@@ -4285,11 +4339,11 @@ device_parsers:
|
|
4285
4339
|
# Videocon
|
4286
4340
|
# @ref: http://www.videoconmobiles.com
|
4287
4341
|
#########
|
4288
|
-
- regex: '; *(Videocon)[ _\-]([^;/]
|
4342
|
+
- regex: '; *(Videocon)[ _\-]([^;/]+?) *(?:Build|;)'
|
4289
4343
|
device_replacement: '$1 $2'
|
4290
4344
|
brand_replacement: 'Videocon'
|
4291
4345
|
model_replacement: '$2'
|
4292
|
-
- regex: ' (VT\d{2}[A-Za-z]*) Build'
|
4346
|
+
- regex: ' (VT\d{2}[A-Za-z]*)(?: Build|\) AppleWebKit)'
|
4293
4347
|
device_replacement: '$1'
|
4294
4348
|
brand_replacement: 'Videocon'
|
4295
4349
|
model_replacement: '$1'
|
@@ -4298,15 +4352,15 @@ device_parsers:
|
|
4298
4352
|
# Viewsonic
|
4299
4353
|
# @ref: http://viewsonic.com
|
4300
4354
|
#########
|
4301
|
-
- regex: '; *((?:ViewPad|ViewPhone|VSD)[^;/]
|
4355
|
+
- regex: '; *((?:ViewPad|ViewPhone|VSD)[^;/]+?)(?: Build|\) AppleWebKit)'
|
4302
4356
|
device_replacement: '$1'
|
4303
4357
|
brand_replacement: 'Viewsonic'
|
4304
4358
|
model_replacement: '$1'
|
4305
|
-
- regex: '; *(ViewSonic-)([^;/]
|
4359
|
+
- regex: '; *(ViewSonic-)([^;/]+?)(?: Build|\) AppleWebKit)'
|
4306
4360
|
device_replacement: '$1$2'
|
4307
4361
|
brand_replacement: 'Viewsonic'
|
4308
4362
|
model_replacement: '$2'
|
4309
|
-
- regex: '; *(GTablet
|
4363
|
+
- regex: '; *(GTablet.*?)(?: Build|\) AppleWebKit)'
|
4310
4364
|
device_replacement: '$1'
|
4311
4365
|
brand_replacement: 'Viewsonic'
|
4312
4366
|
model_replacement: '$1'
|
@@ -4315,7 +4369,7 @@ device_parsers:
|
|
4315
4369
|
# vivo
|
4316
4370
|
# @ref: http://vivo.cn/
|
4317
4371
|
#########
|
4318
|
-
- regex: '; *([Vv]ivo)[ _]([^;/]
|
4372
|
+
- regex: '; *([Vv]ivo)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
4319
4373
|
device_replacement: '$1 $2'
|
4320
4374
|
brand_replacement: 'vivo'
|
4321
4375
|
model_replacement: '$2'
|
@@ -4324,7 +4378,7 @@ device_parsers:
|
|
4324
4378
|
# Vodafone (Operator Branded Devices)
|
4325
4379
|
# @ref: ??
|
4326
4380
|
#########
|
4327
|
-
- regex: '(Vodafone) (
|
4381
|
+
- regex: '(Vodafone) (.*?)(?: Build|\) AppleWebKit)'
|
4328
4382
|
device_replacement: '$1 $2'
|
4329
4383
|
brand_replacement: '$1'
|
4330
4384
|
model_replacement: '$2'
|
@@ -4333,7 +4387,7 @@ device_parsers:
|
|
4333
4387
|
# Walton
|
4334
4388
|
# @ref: http://www.waltonbd.com/
|
4335
4389
|
#########
|
4336
|
-
- regex: '; *(?:Walton[ _\-]|)(Primo[ _\-][^;/]
|
4390
|
+
- regex: '; *(?:Walton[ _\-]|)(Primo[ _\-][^;/]+?)(?: Build|\) AppleWebKit)'
|
4337
4391
|
regex_flag: 'i'
|
4338
4392
|
device_replacement: 'Walton $1'
|
4339
4393
|
brand_replacement: 'Walton'
|
@@ -4343,7 +4397,7 @@ device_parsers:
|
|
4343
4397
|
# Wiko
|
4344
4398
|
# @ref: http://fr.wikomobile.com/collection.php?s=Smartphones
|
4345
4399
|
#########
|
4346
|
-
- regex: '; *(?:WIKO[ \-]|)(CINK\+?|BARRY|BLOOM|DARKFULL|DARKMOON|DARKNIGHT|DARKSIDE|FIZZ|HIGHWAY|IGGY|OZZY|RAINBOW|STAIRWAY|SUBLIM|WAX|CINK [^;/]
|
4400
|
+
- regex: '; *(?:WIKO[ \-]|)(CINK\+?|BARRY|BLOOM|DARKFULL|DARKMOON|DARKNIGHT|DARKSIDE|FIZZ|HIGHWAY|IGGY|OZZY|RAINBOW|STAIRWAY|SUBLIM|WAX|CINK [^;/]+?)(?: Build|\) AppleWebKit)'
|
4347
4401
|
regex_flag: 'i'
|
4348
4402
|
device_replacement: 'Wiko $1'
|
4349
4403
|
brand_replacement: 'Wiko'
|
@@ -4353,7 +4407,7 @@ device_parsers:
|
|
4353
4407
|
# WellcoM
|
4354
4408
|
# @ref: ??
|
4355
4409
|
#########
|
4356
|
-
- regex: '; *WellcoM-([^;/]
|
4410
|
+
- regex: '; *WellcoM-([^;/]+?)(?: Build|\) AppleWebKit)'
|
4357
4411
|
device_replacement: 'Wellcom $1'
|
4358
4412
|
brand_replacement: 'Wellcom'
|
4359
4413
|
model_replacement: '$1'
|
@@ -4371,7 +4425,7 @@ device_parsers:
|
|
4371
4425
|
# Wolfgang
|
4372
4426
|
# @ref: http://wolfgangmobile.com/
|
4373
4427
|
#########
|
4374
|
-
- regex: '; *(AT-AS[^;/]
|
4428
|
+
- regex: '; *(AT-AS[^;/]+?)(?: Build|\) AppleWebKit)'
|
4375
4429
|
device_replacement: 'Wolfgang $1'
|
4376
4430
|
brand_replacement: 'Wolfgang'
|
4377
4431
|
model_replacement: '$1'
|
@@ -4380,7 +4434,7 @@ device_parsers:
|
|
4380
4434
|
# Woxter
|
4381
4435
|
# @ref: http://www.woxter.es/es-es/categories/index
|
4382
4436
|
#########
|
4383
|
-
- regex: '; *(?:Woxter|Wxt) ([^;/]
|
4437
|
+
- regex: '; *(?:Woxter|Wxt) ([^;/]+?)(?: Build|\) AppleWebKit)'
|
4384
4438
|
device_replacement: 'Woxter $1'
|
4385
4439
|
brand_replacement: 'Woxter'
|
4386
4440
|
model_replacement: '$1'
|
@@ -4389,7 +4443,7 @@ device_parsers:
|
|
4389
4443
|
# Yarvik Zania
|
4390
4444
|
# @ref: http://yarvik.com
|
4391
4445
|
#########
|
4392
|
-
- regex: '; *(?: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
|
4446
|
+
- regex: '; *(?: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)'
|
4393
4447
|
device_replacement: 'Yarvik $1'
|
4394
4448
|
brand_replacement: 'Yarvik'
|
4395
4449
|
model_replacement: '$1'
|
@@ -4433,17 +4487,17 @@ device_parsers:
|
|
4433
4487
|
# Xolo
|
4434
4488
|
# @ref: http://www.xolo.in/
|
4435
4489
|
#########
|
4436
|
-
- regex: '; *XOLO[ _]([^;/]*tab.*) Build'
|
4490
|
+
- regex: '; *XOLO[ _]([^;/]*tab.*)(?: Build|\) AppleWebKit)'
|
4437
4491
|
regex_flag: 'i'
|
4438
4492
|
device_replacement: 'Xolo $1'
|
4439
4493
|
brand_replacement: 'Xolo'
|
4440
4494
|
model_replacement: '$1'
|
4441
|
-
- regex: '; *XOLO[ _]([^;/]
|
4495
|
+
- regex: '; *XOLO[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
|
4442
4496
|
regex_flag: 'i'
|
4443
4497
|
device_replacement: 'Xolo $1'
|
4444
4498
|
brand_replacement: 'Xolo'
|
4445
4499
|
model_replacement: '$1'
|
4446
|
-
- regex: '; *(q\d0{2,3}[a-z]?) Build'
|
4500
|
+
- regex: '; *(q\d0{2,3}[a-z]?)(?: Build|\) AppleWebKit)'
|
4447
4501
|
regex_flag: 'i'
|
4448
4502
|
device_replacement: 'Xolo $1'
|
4449
4503
|
brand_replacement: 'Xolo'
|
@@ -4453,7 +4507,7 @@ device_parsers:
|
|
4453
4507
|
# Xoro
|
4454
4508
|
# @ref: http://www.xoro.de/produkte/
|
4455
4509
|
#########
|
4456
|
-
- regex: '; *(PAD ?[79]\d+[^;/]*|TelePAD\d+[^;/]) Build'
|
4510
|
+
- regex: '; *(PAD ?[79]\d+[^;/]*|TelePAD\d+[^;/])(?: Build|\) AppleWebKit)'
|
4457
4511
|
device_replacement: 'Xoro $1'
|
4458
4512
|
brand_replacement: 'Xoro'
|
4459
4513
|
model_replacement: '$1'
|
@@ -4462,7 +4516,7 @@ device_parsers:
|
|
4462
4516
|
# Zopo
|
4463
4517
|
# @ref: http://www.zopomobiles.com/products.html
|
4464
4518
|
#########
|
4465
|
-
- regex: '; *(?:(?:ZOPO|Zopo)[ _]([^;/]
|
4519
|
+
- regex: '; *(?:(?:ZOPO|Zopo)[ _]([^;/]+?)|(ZP ?(?:\d{2}[^;/]+|C2))|(C[2379]))(?: Build|\) AppleWebKit)'
|
4466
4520
|
device_replacement: '$1$2$3'
|
4467
4521
|
brand_replacement: 'Zopo'
|
4468
4522
|
model_replacement: '$1$2$3'
|
@@ -4471,11 +4525,11 @@ device_parsers:
|
|
4471
4525
|
# ZiiLabs
|
4472
4526
|
# @ref: http://www.ziilabs.com/products/platforms/androidreferencetablets.php
|
4473
4527
|
#########
|
4474
|
-
- regex: '; *(ZiiLABS) (Zii[^;/]*) Build'
|
4528
|
+
- regex: '; *(ZiiLABS) (Zii[^;/]*)(?: Build|\) AppleWebKit)'
|
4475
4529
|
device_replacement: '$1 $2'
|
4476
4530
|
brand_replacement: 'ZiiLabs'
|
4477
4531
|
model_replacement: '$2'
|
4478
|
-
- regex: '; *(Zii)_([^;/]*) Build'
|
4532
|
+
- regex: '; *(Zii)_([^;/]*)(?: Build|\) AppleWebKit)'
|
4479
4533
|
device_replacement: '$1 $2'
|
4480
4534
|
brand_replacement: 'ZiiLabs'
|
4481
4535
|
model_replacement: '$2'
|
@@ -4484,40 +4538,40 @@ device_parsers:
|
|
4484
4538
|
# ZTE
|
4485
4539
|
# @ref: http://www.ztedevices.com/
|
4486
4540
|
#########
|
4487
|
-
- regex: '; *(ARIZONA|(?:ATLAS|Atlas) W|D930|Grand (?:[SX][^;]
|
4541
|
+
- regex: '; *(ARIZONA|(?:ATLAS|Atlas) W|D930|Grand (?:[SX][^;]*?|Era|Memo[^;]*?)|JOE|(?:Kis|KIS)\b[^;]*?|Libra|Light [^;]*?|N8[056][01]|N850L|N8000|N9[15]\d{2}|N9810|NX501|Optik|(?:Vip )Racer[^;]*?|RacerII|RACERII|San Francisco[^;]*?|V9[AC]|V55|V881|Z[679][0-9]{2}[A-z]?)(?: Build|\) AppleWebKit)'
|
4488
4542
|
device_replacement: '$1'
|
4489
4543
|
brand_replacement: 'ZTE'
|
4490
4544
|
model_replacement: '$1'
|
4491
|
-
- regex: '; *([A-Z]\d+)_USA_[^;]* Build'
|
4545
|
+
- regex: '; *([A-Z]\d+)_USA_[^;]*(?: Build|\) AppleWebKit)'
|
4492
4546
|
device_replacement: '$1'
|
4493
4547
|
brand_replacement: 'ZTE'
|
4494
4548
|
model_replacement: '$1'
|
4495
|
-
- regex: '; *(SmartTab\d+)[^;]* Build'
|
4549
|
+
- regex: '; *(SmartTab\d+)[^;]*(?: Build|\) AppleWebKit)'
|
4496
4550
|
device_replacement: '$1'
|
4497
4551
|
brand_replacement: 'ZTE'
|
4498
4552
|
model_replacement: '$1'
|
4499
|
-
- regex: '; *(?:Blade|BLADE|ZTE-BLADE)([^;/]*) Build'
|
4553
|
+
- regex: '; *(?:Blade|BLADE|ZTE-BLADE)([^;/]*)(?: Build|\) AppleWebKit)'
|
4500
4554
|
device_replacement: 'ZTE Blade$1'
|
4501
4555
|
brand_replacement: 'ZTE'
|
4502
4556
|
model_replacement: 'Blade$1'
|
4503
|
-
- regex: '; *(?:Skate|SKATE|ZTE-SKATE)([^;/]*) Build'
|
4557
|
+
- regex: '; *(?:Skate|SKATE|ZTE-SKATE)([^;/]*)(?: Build|\) AppleWebKit)'
|
4504
4558
|
device_replacement: 'ZTE Skate$1'
|
4505
4559
|
brand_replacement: 'ZTE'
|
4506
4560
|
model_replacement: 'Skate$1'
|
4507
|
-
- regex: '; *(Orange |Optimus )(Monte Carlo|San Francisco) Build'
|
4561
|
+
- regex: '; *(Orange |Optimus )(Monte Carlo|San Francisco)(?: Build|\) AppleWebKit)'
|
4508
4562
|
device_replacement: '$1$2'
|
4509
4563
|
brand_replacement: 'ZTE'
|
4510
4564
|
model_replacement: '$1$2'
|
4511
|
-
- regex: '; *(?:ZXY-ZTE_|ZTE\-U |ZTE[\- _]|ZTE-C[_ ])([^;/]
|
4565
|
+
- regex: '; *(?:ZXY-ZTE_|ZTE\-U |ZTE[\- _]|ZTE-C[_ ])([^;/]+?)(?: Build|\) AppleWebKit)'
|
4512
4566
|
device_replacement: 'ZTE $1'
|
4513
4567
|
brand_replacement: 'ZTE'
|
4514
4568
|
model_replacement: '$1'
|
4515
4569
|
# operator specific
|
4516
|
-
- regex: '; (BASE) (lutea|Lutea 2|Tab[^;]
|
4570
|
+
- regex: '; (BASE) (lutea|Lutea 2|Tab[^;]*?)(?: Build|\) AppleWebKit)'
|
4517
4571
|
device_replacement: '$1 $2'
|
4518
4572
|
brand_replacement: 'ZTE'
|
4519
4573
|
model_replacement: '$1 $2'
|
4520
|
-
- regex: '; (Avea inTouch 2|soft stone|tmn smart a7|Movistar[ _]Link) Build'
|
4574
|
+
- regex: '; (Avea inTouch 2|soft stone|tmn smart a7|Movistar[ _]Link)(?: Build|\) AppleWebKit)'
|
4521
4575
|
regex_flag: 'i'
|
4522
4576
|
device_replacement: '$1'
|
4523
4577
|
brand_replacement: 'ZTE'
|
@@ -4531,7 +4585,7 @@ device_parsers:
|
|
4531
4585
|
# Zync
|
4532
4586
|
# @ref: http://www.zync.in/index.php/our-products/tablet-phablets
|
4533
4587
|
##########
|
4534
|
-
- regex: '; ?(Cloud[ _]Z5|z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900) Build
|
4588
|
+
- regex: '; ?(Cloud[ _]Z5|z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900)(?: Build|\) AppleWebKit)'
|
4535
4589
|
device_replacement: '$1'
|
4536
4590
|
brand_replacement: 'Zync'
|
4537
4591
|
model_replacement: '$1'
|
@@ -4751,7 +4805,7 @@ device_parsers:
|
|
4751
4805
|
#########
|
4752
4806
|
# Firefox OS
|
4753
4807
|
#########
|
4754
|
-
- regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]
|
4808
|
+
- regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]+?)(?:/[^;]+|); rv:[^\)]+\) Gecko/[^\/]+ Firefox/'
|
4755
4809
|
device_replacement: 'Alcatel $1 $2 $3'
|
4756
4810
|
brand_replacement: 'Alcatel'
|
4757
4811
|
model_replacement: 'One Touch $3'
|
@@ -4760,11 +4814,27 @@ device_parsers:
|
|
4760
4814
|
brand_replacement: 'ZTE'
|
4761
4815
|
model_replacement: '$1$2'
|
4762
4816
|
|
4817
|
+
#########
|
4818
|
+
# KaiOS
|
4819
|
+
#########
|
4820
|
+
- regex: '\(Mobile; ALCATEL([A-Za-z0-9\-]+); rv:[^\)]+\) Gecko/[^\/]+ Firefox/[^\/]+ KaiOS/'
|
4821
|
+
device_replacement: 'Alcatel $1'
|
4822
|
+
brand_replacement: 'Alcatel'
|
4823
|
+
model_replacement: '$1'
|
4824
|
+
- regex: '\(Mobile; LYF\/([A-Za-z0-9\-]+)\/.+;.+rv:[^\)]+\) Gecko/[^\/]+ Firefox/[^\/]+ KAIOS/'
|
4825
|
+
device_replacement: 'LYF $1'
|
4826
|
+
brand_replacement: 'LYF'
|
4827
|
+
model_replacement: '$1'
|
4828
|
+
- regex: '\(Mobile; Nokia_([A-Za-z0-9\-]+)_.+; rv:[^\)]+\) Gecko/[^\/]+ Firefox/[^\/]+ KAIOS/'
|
4829
|
+
device_replacement: 'Nokia $1'
|
4830
|
+
brand_replacement: 'Nokia'
|
4831
|
+
model_replacement: '$1'
|
4832
|
+
|
4763
4833
|
##########
|
4764
4834
|
# NOKIA
|
4765
4835
|
# @note: NokiaN8-00 comes before iphone. Sometimes spoofs iphone
|
4766
4836
|
##########
|
4767
|
-
- regex: 'Nokia(N[0-9]+)([A-z_\-][A-z0-9_\-]*)'
|
4837
|
+
- regex: 'Nokia(N[0-9]+)([A-Za-z_\-][A-Za-z0-9_\-]*)'
|
4768
4838
|
device_replacement: 'Nokia $1'
|
4769
4839
|
brand_replacement: 'Nokia'
|
4770
4840
|
model_replacement: '$1$2'
|
@@ -4777,7 +4847,7 @@ device_parsers:
|
|
4777
4847
|
brand_replacement: 'Nokia'
|
4778
4848
|
model_replacement: 'Lumia $1'
|
4779
4849
|
# UCWEB Browser on Symbian
|
4780
|
-
- regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]
|
4850
|
+
- regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]+?)\)'
|
4781
4851
|
device_replacement: '$1 $2'
|
4782
4852
|
brand_replacement: '$1'
|
4783
4853
|
model_replacement: '$2'
|
@@ -5309,7 +5379,13 @@ device_parsers:
|
|
5309
5379
|
- regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); *\-?[A-Za-z]{2}; *(.+?)( Build[/ ]|\))'
|
5310
5380
|
brand_replacement: 'Generic_Android'
|
5311
5381
|
model_replacement: '$1'
|
5312
|
-
- regex: 'Android
|
5382
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]+?)(?: Build|\) AppleWebKit).+? Mobile Safari'
|
5383
|
+
brand_replacement: 'Generic_Android'
|
5384
|
+
model_replacement: '$1'
|
5385
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]+?)(?: Build|\) AppleWebKit).+? Safari'
|
5386
|
+
brand_replacement: 'Generic_Android_Tablet'
|
5387
|
+
model_replacement: '$1'
|
5388
|
+
- regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]+?)(?: Build|\))'
|
5313
5389
|
brand_replacement: 'Generic_Android'
|
5314
5390
|
model_replacement: '$1'
|
5315
5391
|
|
@@ -5354,9 +5430,9 @@ device_parsers:
|
|
5354
5430
|
model_replacement: 'Smartphone'
|
5355
5431
|
|
5356
5432
|
##########
|
5357
|
-
# Spiders (this is hack...)
|
5433
|
+
# Spiders (this is a hack...)
|
5358
5434
|
##########
|
5359
|
-
- 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.*/\+/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)'
|
5435
|
+
- 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.*/\+/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)'
|
5360
5436
|
regex_flag: 'i'
|
5361
5437
|
device_replacement: 'Spider'
|
5362
5438
|
brand_replacement: 'Spider'
|