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