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