user_agent_parser 0.1.1 → 2.0.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.
- data/Readme.md +29 -32
- data/lib/user_agent_parser.rb +4 -15
- data/lib/user_agent_parser/device.rb +23 -0
- data/lib/user_agent_parser/operating_system.rb +20 -18
- data/lib/user_agent_parser/parser.rb +101 -48
- data/lib/user_agent_parser/user_agent.rb +20 -15
- data/lib/user_agent_parser/version.rb +30 -15
- data/vendor/ua-parser/regexes.yaml +373 -137
- metadata +4 -6
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
### THIS FILE WAS COPIED ON JAN 26 2012.
|
|
2
|
-
### ORIGINAL IS AT: http://code.google.com/p/ua-parser/source/browse/trunk/resources/user_agent_parser.yaml
|
|
3
|
-
### Please review the CHANGELOG to see how this file differs from the original
|
|
4
1
|
user_agent_parsers:
|
|
5
2
|
#### SPECIAL CASES TOP ####
|
|
6
3
|
|
|
7
|
-
# must go before Opera
|
|
8
|
-
- regex: '^(Opera)/(\d+)\.(\d+) \(Nintendo Wii'
|
|
9
|
-
family_replacement: 'Wii'
|
|
10
|
-
|
|
11
4
|
# must go before Firefox to catch SeaMonkey/Camino
|
|
12
5
|
- regex: '(SeaMonkey|Camino)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
|
|
13
6
|
|
|
14
7
|
# Firefox
|
|
8
|
+
- regex: '(Pale[Mm]oon)/(\d+)\.(\d+)\.?(\d+)?'
|
|
9
|
+
family_replacement: 'Pale Moon (Firefox Variant)'
|
|
15
10
|
- regex: '(Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
|
|
16
11
|
family_replacement: 'Firefox Mobile'
|
|
17
12
|
- regex: '(Fennec)/(\d+)\.(\d+)(pre)'
|
|
18
|
-
|
|
13
|
+
family_replacement: 'Firefox Mobile'
|
|
19
14
|
- regex: '(Fennec)/(\d+)\.(\d+)'
|
|
20
15
|
family_replacement: 'Firefox Mobile'
|
|
16
|
+
- regex: 'Mobile.*(Firefox)/(\d+)\.(\d+)'
|
|
17
|
+
family_replacement: 'Firefox Mobile'
|
|
21
18
|
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre)?)'
|
|
22
19
|
family_replacement: 'Firefox ($1)'
|
|
23
|
-
- regex: '(Firefox)/(\d+)\.(\d+)(
|
|
20
|
+
- regex: '(Firefox)/(\d+)\.(\d+)(a\d+[a-z]*)'
|
|
21
|
+
family_replacement: 'Firefox Alpha'
|
|
22
|
+
- regex: '(Firefox)/(\d+)\.(\d+)(b\d+[a-z]*)'
|
|
24
23
|
family_replacement: 'Firefox Beta'
|
|
25
|
-
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(
|
|
24
|
+
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(a\d+[a-z]*)'
|
|
25
|
+
family_replacement: 'Firefox Alpha'
|
|
26
|
+
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(b\d+[a-z]*)'
|
|
26
27
|
family_replacement: 'Firefox Beta'
|
|
27
28
|
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*)?'
|
|
28
29
|
family_replacement: 'Firefox ($1)'
|
|
@@ -61,16 +62,16 @@ user_agent_parsers:
|
|
|
61
62
|
- regex: '(Opera)/9.80.*Version/(\d+)\.(\d+)(?:\.(\d+))?'
|
|
62
63
|
|
|
63
64
|
# Palm WebOS looks a lot like Safari.
|
|
64
|
-
- regex: '(
|
|
65
|
-
|
|
66
|
-
family_replacement: 'webOSBrowser'
|
|
67
|
-
- regex: '(wOSBrowser).+TouchPad/(\d+)\.(\d+)'
|
|
68
|
-
family_replacement: 'webOS TouchPad'
|
|
65
|
+
- regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+))?'
|
|
66
|
+
family_replacement: 'webOS Browser'
|
|
69
67
|
|
|
70
68
|
# LuaKit has no version info.
|
|
71
69
|
# http://luakit.org/projects/luakit/
|
|
72
70
|
- regex: '(luakit)'
|
|
73
71
|
family_replacement: 'LuaKit'
|
|
72
|
+
|
|
73
|
+
# Snowshoe
|
|
74
|
+
- regex: '(Snowshoe)/(\d+)\.(\d+).(\d+)'
|
|
74
75
|
|
|
75
76
|
# Lightning (for Thunderbird)
|
|
76
77
|
# http://www.mozilla.org/projects/calendar/lightning/
|
|
@@ -83,6 +84,8 @@ user_agent_parsers:
|
|
|
83
84
|
family_replacement: 'Swiftfox'
|
|
84
85
|
|
|
85
86
|
# Rekonq
|
|
87
|
+
- regex: '(rekonq)/(\d+)\.(\d+) Safari'
|
|
88
|
+
family_replacement: 'Rekonq'
|
|
86
89
|
- regex: 'rekonq'
|
|
87
90
|
family_replacement: 'Rekonq'
|
|
88
91
|
|
|
@@ -100,38 +103,94 @@ user_agent_parsers:
|
|
|
100
103
|
- regex: '(Comodo_Dragon)/(\d+)\.(\d+)\.(\d+)'
|
|
101
104
|
family_replacement: 'Comodo Dragon'
|
|
102
105
|
|
|
103
|
-
#
|
|
104
|
-
- regex: '(YottaaMonitor)'
|
|
105
|
-
|
|
106
|
-
# must go before NetFront below
|
|
107
|
-
- regex: '(Kindle)/(\d+)\.(\d+)'
|
|
106
|
+
# Bots
|
|
107
|
+
- regex: '(YottaaMonitor|BrowserMob|HttpMonitor|YandexBot|Slurp|BingPreview|PagePeeker|ThumbShotsBot|WebThumb|URL2PNG|ZooShot|GomezA|Catchpoint bot|Willow Internet Crawler|Google SketchUp|Read%20Later)'
|
|
108
108
|
|
|
109
109
|
- regex: '(Symphony) (\d+).(\d+)'
|
|
110
110
|
|
|
111
|
-
- regex: 'Minimo'
|
|
111
|
+
- regex: '(Minimo)'
|
|
112
112
|
|
|
113
113
|
# Chrome Mobile
|
|
114
114
|
- regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
|
115
115
|
family_replacement: 'Chrome Mobile'
|
|
116
|
+
- regex: '(CriOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
|
117
|
+
family_replacement: 'Chrome Mobile iOS'
|
|
118
|
+
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile'
|
|
119
|
+
family_replacement: 'Chrome Mobile'
|
|
120
|
+
|
|
121
|
+
# Chrome Frame must come before MSIE.
|
|
122
|
+
- regex: '(chromeframe)/(\d+)\.(\d+)\.(\d+)'
|
|
123
|
+
family_replacement: 'Chrome Frame'
|
|
116
124
|
|
|
117
125
|
# UC Browser
|
|
118
|
-
- regex: '(
|
|
126
|
+
- regex: '(UCBrowser)[ /](\d+)\.(\d+)\.(\d+)'
|
|
127
|
+
family_replacement: 'UC Browser'
|
|
128
|
+
- regex: '(UC Browser)[ /](\d+)\.(\d+)\.(\d+)'
|
|
129
|
+
- regex: '(UC Browser|UCBrowser|UCWEB)(\d+)\.(\d+)\.(\d+)'
|
|
130
|
+
family_replacement: 'UC Browser'
|
|
131
|
+
|
|
132
|
+
# Tizen Browser (second case included in browser/major.minor regex)
|
|
133
|
+
- regex: '(SLP Browser)/(\d+)\.(\d+)'
|
|
134
|
+
family_replacement: 'Tizen Browser'
|
|
135
|
+
|
|
136
|
+
# Epiphany browser (identifies as Chromium)
|
|
137
|
+
- regex: '(Epiphany)/(\d+)\.(\d+).(\d+)'
|
|
138
|
+
|
|
139
|
+
# Sogou Explorer 2.X
|
|
140
|
+
- regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
|
|
141
|
+
family_replacement: 'Sogou Explorer'
|
|
142
|
+
|
|
143
|
+
# Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
|
|
144
|
+
- regex: '(baidubrowser)[/\s](\d+)'
|
|
145
|
+
family_replacement: 'Baidu Browser'
|
|
146
|
+
- regex: '(FlyFlow)/(\d+)\.(\d+)'
|
|
147
|
+
family_replacement: 'Baidu Explorer'
|
|
148
|
+
|
|
149
|
+
# Pingdom
|
|
150
|
+
- regex: '(Pingdom.com_bot_version_)(\d+)\.(\d+)'
|
|
151
|
+
family_replacement: 'PingdomBot'
|
|
152
|
+
|
|
153
|
+
# Facebook
|
|
154
|
+
- regex: '(facebookexternalhit)/(\d+)\.(\d+)'
|
|
155
|
+
family_replacement: 'FacebookBot'
|
|
156
|
+
|
|
157
|
+
# Twitterbot
|
|
158
|
+
- regex: '(Twitterbot)/(\d+)\.(\d+)'
|
|
159
|
+
family_replacement: 'TwitterBot'
|
|
160
|
+
|
|
161
|
+
# Rackspace Monitoring
|
|
162
|
+
- regex: '(Rackspace Monitoring)/(\d+)\.(\d+)'
|
|
163
|
+
family_replacement: 'RackspaceBot'
|
|
164
|
+
|
|
165
|
+
# PyAMF
|
|
166
|
+
- regex: '(PyAMF)/(\d+)\.(\d+)\.(\d+)'
|
|
167
|
+
|
|
168
|
+
# Yandex Browser
|
|
169
|
+
- regex: '(YaBrowser)/(\d+)\.(\d+)\.(\d+)'
|
|
170
|
+
family_replacement: 'Yandex Browser'
|
|
171
|
+
|
|
172
|
+
# Mail.ru Amigo/Internet Browser (Chromium-based)
|
|
173
|
+
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).* MRCHROME'
|
|
174
|
+
family_replacement: 'Mail.ru Chromium Browser'
|
|
119
175
|
|
|
120
176
|
#### END SPECIAL CASES TOP ####
|
|
121
177
|
|
|
122
178
|
#### MAIN CASES - this catches > 50% of all browsers ####
|
|
123
179
|
|
|
124
180
|
# Browser/major_version.minor_version.beta_version
|
|
125
|
-
- regex: '(AdobeAIR|Chromium|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|
|
|
181
|
+
- regex: '(AdobeAIR|Chromium|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|WebPilot|Vodafone|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave)/(\d+)\.(\d+)\.(\d+)'
|
|
126
182
|
|
|
127
183
|
# Browser/major_version.minor_version
|
|
128
|
-
- regex: '(Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|
|
|
184
|
+
- regex: '(Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|Vodafone|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser)/(\d+)\.(\d+)'
|
|
129
185
|
|
|
130
186
|
# Browser major_version.minor_version.beta_version (space instead of slash)
|
|
131
187
|
- regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
|
|
132
188
|
# Browser major_version.minor_version (space instead of slash)
|
|
133
|
-
- regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris
|
|
134
|
-
|
|
189
|
+
- regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris) (\d+)\.(\d+)\.?(\d+)?'
|
|
190
|
+
|
|
191
|
+
# Kindle WebKit
|
|
192
|
+
- regex: '(Kindle)/(\d+)\.(\d+)'
|
|
193
|
+
|
|
135
194
|
# weird android UAs
|
|
136
195
|
- regex: '(Android) Donut'
|
|
137
196
|
v1_replacement: '1'
|
|
@@ -170,18 +229,33 @@ user_agent_parsers:
|
|
|
170
229
|
- regex: '(Obigo)InternetBrowser'
|
|
171
230
|
- regex: '(Obigo)\-Browser'
|
|
172
231
|
- regex: '(Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+))?'
|
|
232
|
+
family_replacement: 'Obigo'
|
|
173
233
|
|
|
174
234
|
- regex: '(MAXTHON|Maxthon) (\d+)\.(\d+)'
|
|
175
235
|
family_replacement: 'Maxthon'
|
|
176
236
|
- regex: '(Maxthon|MyIE2|Uzbl|Shiira)'
|
|
177
237
|
v1_replacement: '0'
|
|
178
238
|
|
|
179
|
-
- regex: '
|
|
180
|
-
family_replacement: '
|
|
181
|
-
- regex: '
|
|
239
|
+
- regex: 'PLAYSTATION 3.+WebKit'
|
|
240
|
+
family_replacement: 'NetFront NX'
|
|
241
|
+
- regex: 'PLAYSTATION 3'
|
|
242
|
+
family_replacement: 'NetFront'
|
|
243
|
+
- regex: '(PlayStation Portable)'
|
|
244
|
+
family_replacement: 'NetFront'
|
|
245
|
+
- regex: '(PlayStation Vita)'
|
|
246
|
+
family_replacement: 'NetFront NX'
|
|
247
|
+
|
|
248
|
+
- regex: 'AppleWebKit.+ (NX)/(\d+)\.(\d+)\.(\d+)'
|
|
249
|
+
family_replacement: 'NetFront NX'
|
|
250
|
+
- regex: '(Nintendo 3DS)'
|
|
251
|
+
family_replacement: 'NetFront NX'
|
|
182
252
|
|
|
183
253
|
- regex: '(BrowseX) \((\d+)\.(\d+)\.(\d+)'
|
|
184
254
|
|
|
255
|
+
- regex: '(NCSA_Mosaic)/(\d+)\.(\d+)'
|
|
256
|
+
family_replacement: 'NCSA Mosaic'
|
|
257
|
+
|
|
258
|
+
# Polaris/d.d is above
|
|
185
259
|
- regex: '(POLARIS)/(\d+)\.(\d+)'
|
|
186
260
|
family_replacement: 'Polaris'
|
|
187
261
|
- regex: '(Embider)/(\d+)\.(\d+)'
|
|
@@ -190,56 +264,71 @@ user_agent_parsers:
|
|
|
190
264
|
- regex: '(BonEcho)/(\d+)\.(\d+)\.(\d+)'
|
|
191
265
|
family_replacement: 'Bon Echo'
|
|
192
266
|
|
|
267
|
+
- regex: 'M?QQBrowser'
|
|
268
|
+
family_replacement: 'QQ Browser'
|
|
269
|
+
|
|
193
270
|
- regex: '(iPod).+Version/(\d+)\.(\d+)\.(\d+)'
|
|
194
271
|
family_replacement: 'Mobile Safari'
|
|
195
272
|
- regex: '(iPod).*Version/(\d+)\.(\d+)'
|
|
196
273
|
family_replacement: 'Mobile Safari'
|
|
197
|
-
- regex: '(iPod)'
|
|
198
|
-
family_replacement: 'Mobile Safari'
|
|
199
274
|
- regex: '(iPhone).*Version/(\d+)\.(\d+)\.(\d+)'
|
|
200
275
|
family_replacement: 'Mobile Safari'
|
|
201
276
|
- regex: '(iPhone).*Version/(\d+)\.(\d+)'
|
|
202
277
|
family_replacement: 'Mobile Safari'
|
|
203
|
-
- regex: '(iPhone)'
|
|
204
|
-
family_replacement: 'Mobile Safari'
|
|
205
278
|
- regex: '(iPad).*Version/(\d+)\.(\d+)\.(\d+)'
|
|
206
279
|
family_replacement: 'Mobile Safari'
|
|
207
280
|
- regex: '(iPad).*Version/(\d+)\.(\d+)'
|
|
208
281
|
family_replacement: 'Mobile Safari'
|
|
209
|
-
- regex: '(iPad)'
|
|
282
|
+
- regex: '(iPod|iPhone|iPad);.*CPU.*OS (\d+)(?:_\d+)?_(\d+).*Mobile'
|
|
283
|
+
family_replacement: 'Mobile Safari'
|
|
284
|
+
- regex: '(iPod|iPhone|iPad)'
|
|
210
285
|
family_replacement: 'Mobile Safari'
|
|
211
286
|
|
|
212
287
|
- regex: '(AvantGo) (\d+).(\d+)'
|
|
288
|
+
|
|
289
|
+
- regex: '(OneBrowser)/(\d+).(\d+)'
|
|
290
|
+
family_replacement: 'ONE Browser'
|
|
213
291
|
|
|
214
292
|
- regex: '(Avant)'
|
|
215
293
|
v1_replacement: '1'
|
|
216
294
|
|
|
295
|
+
# This is the Tesla Model S (see similar entry in device parsers)
|
|
296
|
+
- regex: '(QtCarBrowser)'
|
|
297
|
+
v1_replacement: '1'
|
|
298
|
+
|
|
299
|
+
- regex: '(iBrowser/Mini)(\d+).(\d+)'
|
|
300
|
+
family_replacement: 'iBrowser Mini'
|
|
217
301
|
# nokia browsers
|
|
218
302
|
# based on: http://www.developer.nokia.com/Community/Wiki/User-Agent_headers_for_Nokia_devices
|
|
219
303
|
- regex: '^(Nokia)'
|
|
220
304
|
family_replacement: 'Nokia Services (WAP) Browser'
|
|
221
305
|
- regex: '(NokiaBrowser)/(\d+)\.(\d+).(\d+)\.(\d+)'
|
|
306
|
+
family_replacement: 'Nokia Browser'
|
|
222
307
|
- regex: '(NokiaBrowser)/(\d+)\.(\d+).(\d+)'
|
|
308
|
+
family_replacement: 'Nokia Browser'
|
|
223
309
|
- regex: '(NokiaBrowser)/(\d+)\.(\d+)'
|
|
310
|
+
family_replacement: 'Nokia Browser'
|
|
224
311
|
- regex: '(BrowserNG)/(\d+)\.(\d+).(\d+)'
|
|
225
|
-
family_replacement: '
|
|
312
|
+
family_replacement: 'Nokia Browser'
|
|
226
313
|
- regex: '(Series60)/5\.0'
|
|
227
|
-
family_replacement: '
|
|
314
|
+
family_replacement: 'Nokia Browser'
|
|
228
315
|
v1_replacement: '7'
|
|
229
316
|
v2_replacement: '0'
|
|
230
317
|
- regex: '(Series60)/(\d+)\.(\d+)'
|
|
231
318
|
family_replacement: 'Nokia OSS Browser'
|
|
232
319
|
- regex: '(S40OviBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
|
233
|
-
family_replacement: '
|
|
320
|
+
family_replacement: 'Ovi Browser'
|
|
234
321
|
- regex: '(Nokia)[EN]?(\d+)'
|
|
235
322
|
|
|
236
323
|
# BlackBerry devices
|
|
324
|
+
- regex: '(BB10);'
|
|
325
|
+
family_replacement: 'BlackBerry WebKit'
|
|
237
326
|
- regex: '(PlayBook).+RIM Tablet OS (\d+)\.(\d+)\.(\d+)'
|
|
238
|
-
family_replacement: '
|
|
327
|
+
family_replacement: 'BlackBerry WebKit'
|
|
239
328
|
- regex: '(Black[bB]erry).+Version/(\d+)\.(\d+)\.(\d+)'
|
|
240
|
-
family_replacement: '
|
|
329
|
+
family_replacement: 'BlackBerry WebKit'
|
|
241
330
|
- regex: '(Black[bB]erry)\s?(\d+)'
|
|
242
|
-
family_replacement: '
|
|
331
|
+
family_replacement: 'BlackBerry'
|
|
243
332
|
|
|
244
333
|
- regex: '(OmniWeb)/v(\d+)\.(\d+)'
|
|
245
334
|
|
|
@@ -258,6 +347,11 @@ user_agent_parsers:
|
|
|
258
347
|
|
|
259
348
|
# Amazon Silk, should go before Safari
|
|
260
349
|
- regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+))?'
|
|
350
|
+
family_replacement: 'Amazon Silk'
|
|
351
|
+
|
|
352
|
+
# WebKit Nightly
|
|
353
|
+
- regex: '(AppleWebKit)/(\d+)\.?(\d+)?\+ .* Safari'
|
|
354
|
+
family_replacement: 'WebKit Nightly'
|
|
261
355
|
|
|
262
356
|
# Safari
|
|
263
357
|
- regex: '(Version)/(\d+)\.(\d+)(?:\.(\d+))?.*Safari/'
|
|
@@ -274,11 +368,50 @@ user_agent_parsers:
|
|
|
274
368
|
|
|
275
369
|
- regex: '(Teleca)'
|
|
276
370
|
family_replacement: 'Teleca Browser'
|
|
371
|
+
|
|
372
|
+
- regex: '(Phantom)/V(\d+)\.(\d+)'
|
|
373
|
+
family_replacement: 'Phantom Browser'
|
|
277
374
|
|
|
278
375
|
- regex: '(MSIE) (\d+)\.(\d+)'
|
|
279
376
|
family_replacement: 'IE'
|
|
280
377
|
|
|
378
|
+
- regex: '(python-requests)/(\d+)\.(\d+)'
|
|
379
|
+
family_replacement: 'Python Requests'
|
|
380
|
+
|
|
281
381
|
os_parsers:
|
|
382
|
+
|
|
383
|
+
##########
|
|
384
|
+
# Android
|
|
385
|
+
# can actually detect rooted android os. do we care?
|
|
386
|
+
##########
|
|
387
|
+
- regex: '(Android) (\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
|
|
388
|
+
- regex: '(Android)\-(\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
|
|
389
|
+
|
|
390
|
+
- regex: '(Android) Donut'
|
|
391
|
+
os_v1_replacement: '1'
|
|
392
|
+
os_v2_replacement: '2'
|
|
393
|
+
|
|
394
|
+
- regex: '(Android) Eclair'
|
|
395
|
+
os_v1_replacement: '2'
|
|
396
|
+
os_v2_replacement: '1'
|
|
397
|
+
|
|
398
|
+
- regex: '(Android) Froyo'
|
|
399
|
+
os_v1_replacement: '2'
|
|
400
|
+
os_v2_replacement: '2'
|
|
401
|
+
|
|
402
|
+
- regex: '(Android) Gingerbread'
|
|
403
|
+
os_v1_replacement: '2'
|
|
404
|
+
os_v2_replacement: '3'
|
|
405
|
+
|
|
406
|
+
- regex: '(Android) Honeycomb'
|
|
407
|
+
os_v1_replacement: '3'
|
|
408
|
+
|
|
409
|
+
##########
|
|
410
|
+
# Kindle Android
|
|
411
|
+
##########
|
|
412
|
+
- regex: '(Silk-Accelerated=[a-z]{4,5})'
|
|
413
|
+
os_replacement: 'Android'
|
|
414
|
+
|
|
282
415
|
##########
|
|
283
416
|
# Windows
|
|
284
417
|
# http://en.wikipedia.org/wiki/Windows_NT#Releases
|
|
@@ -287,15 +420,14 @@ os_parsers:
|
|
|
287
420
|
# lots of ua strings have Windows NT 4.1 !?!?!?!? !?!? !? !????!?! !!! ??? !?!?! ?
|
|
288
421
|
# (very) roughly ordered in terms of frequency of occurence of regex (win xp currently most frequent, etc)
|
|
289
422
|
##########
|
|
290
|
-
|
|
291
|
-
|
|
423
|
+
|
|
292
424
|
- regex: '(Windows (?:NT 5\.2|NT 5\.1))'
|
|
293
425
|
os_replacement: 'Windows XP'
|
|
294
426
|
|
|
295
427
|
# ie mobile des ktop mode
|
|
296
428
|
# spoofs nt 6.1. must come before windows 7
|
|
297
429
|
- regex: '(XBLWP7)'
|
|
298
|
-
os_replacement: 'Windows Phone
|
|
430
|
+
os_replacement: 'Windows Phone'
|
|
299
431
|
|
|
300
432
|
- regex: '(Windows NT 6\.1)'
|
|
301
433
|
os_replacement: 'Windows 7'
|
|
@@ -303,7 +435,10 @@ os_parsers:
|
|
|
303
435
|
- regex: '(Windows NT 6\.0)'
|
|
304
436
|
os_replacement: 'Windows Vista'
|
|
305
437
|
|
|
306
|
-
- regex: '(Windows 98|Windows XP|Windows ME|Windows 95|Windows CE|Windows 7|Windows NT 4\.0|Windows Vista|Windows 2000)'
|
|
438
|
+
- regex: '(Windows 98|Windows XP|Windows ME|Windows 95|Windows CE|Windows 7|Windows NT 4\.0|Windows Vista|Windows 2000|Windows 3.1)'
|
|
439
|
+
|
|
440
|
+
- regex: '(Windows NT 6\.2; ARM;)'
|
|
441
|
+
os_replacement: 'Windows RT'
|
|
307
442
|
|
|
308
443
|
# is this a spoof or is nt 6.2 out and about in some capacity?
|
|
309
444
|
- regex: '(Windows NT 6\.2)'
|
|
@@ -312,8 +447,8 @@ os_parsers:
|
|
|
312
447
|
- regex: '(Windows NT 5\.0)'
|
|
313
448
|
os_replacement: 'Windows 2000'
|
|
314
449
|
|
|
315
|
-
- regex: '(Windows Phone
|
|
316
|
-
|
|
450
|
+
- regex: '(Windows Phone) (\d+)\.(\d+)'
|
|
451
|
+
- regex: '(Windows Phone) OS (\d+)\.(\d+)'
|
|
317
452
|
- regex: '(Windows ?Mobile)'
|
|
318
453
|
os_replacement: 'Windows Mobile'
|
|
319
454
|
|
|
@@ -324,36 +459,20 @@ os_parsers:
|
|
|
324
459
|
os_replacement: 'Windows 98'
|
|
325
460
|
|
|
326
461
|
##########
|
|
327
|
-
#
|
|
328
|
-
#
|
|
462
|
+
# Tizen OS from Samsung
|
|
463
|
+
# spoofs Android so pushing it above
|
|
329
464
|
##########
|
|
330
|
-
- regex: '(
|
|
331
|
-
- regex: '(Android)\-(\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
|
|
332
|
-
|
|
333
|
-
- regex: '(Android) Donut'
|
|
334
|
-
os_v1_replacement: '1'
|
|
335
|
-
os_v2_replacement: '2'
|
|
336
|
-
|
|
337
|
-
- regex: '(Android) Eclair'
|
|
338
|
-
os_v1_replacement: '2'
|
|
339
|
-
os_v2_replacement: '1'
|
|
340
|
-
|
|
341
|
-
- regex: '(Android) Froyo'
|
|
342
|
-
os_v1_replacement: '2'
|
|
343
|
-
os_v2_replacement: '2'
|
|
344
|
-
|
|
345
|
-
- regex: '(Android) Gingerbread'
|
|
346
|
-
os_v1_replacement: '2'
|
|
347
|
-
os_v2_replacement: '3'
|
|
348
|
-
|
|
349
|
-
- regex: '(Android) Honeycomb'
|
|
350
|
-
os_v1_replacement: '3'
|
|
465
|
+
- regex: '(Tizen)/(\d+)\.(\d+)'
|
|
351
466
|
|
|
352
467
|
##########
|
|
353
468
|
# Mac OS
|
|
354
469
|
# http://en.wikipedia.org/wiki/Mac_OS_X#Versions
|
|
355
470
|
##########
|
|
356
471
|
- regex: '(Mac OS X) (\d+)[_.](\d+)(?:[_.](\d+))?'
|
|
472
|
+
|
|
473
|
+
# IE on Mac doesn't specify version number
|
|
474
|
+
- regex: 'Mac_PowerPC'
|
|
475
|
+
os_replacement: 'Mac OS'
|
|
357
476
|
|
|
358
477
|
# builds before tiger don't seem to specify version?
|
|
359
478
|
|
|
@@ -375,6 +494,11 @@ os_parsers:
|
|
|
375
494
|
- regex: '(iPhone|iPad|iPod).*Mac OS X.*Version/(\d+)\.(\d+)'
|
|
376
495
|
os_replacement: 'iOS'
|
|
377
496
|
|
|
497
|
+
- regex: '(AppleTV)/(\d+)\.(\d+)'
|
|
498
|
+
os_replacement: 'ATV OS X'
|
|
499
|
+
os_v1_replacement: '$1'
|
|
500
|
+
os_v2_replacement: '$2'
|
|
501
|
+
|
|
378
502
|
##########
|
|
379
503
|
# Chrome OS
|
|
380
504
|
# if version 0.0.0, probably this stuff:
|
|
@@ -408,10 +532,14 @@ os_parsers:
|
|
|
408
532
|
- regex: '(MeeGo)'
|
|
409
533
|
- regex: 'Symbian [Oo][Ss]'
|
|
410
534
|
os_replacement: 'Symbian OS'
|
|
535
|
+
- regex: 'Series40;'
|
|
536
|
+
os_replacement: 'Nokia Series 40'
|
|
411
537
|
|
|
412
538
|
##########
|
|
413
539
|
# BlackBerry devices
|
|
414
540
|
##########
|
|
541
|
+
- regex: '(BB10);.+Version/(\d+)\.(\d+)\.(\d+)'
|
|
542
|
+
os_replacement: 'BlackBerry OS'
|
|
415
543
|
- regex: '(Black[Bb]erry)[0-9a-z]+/(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?'
|
|
416
544
|
os_replacement: 'BlackBerry OS'
|
|
417
545
|
- regex: '(Black[Bb]erry).+Version/(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?'
|
|
@@ -421,13 +549,40 @@ os_parsers:
|
|
|
421
549
|
- regex: '(Play[Bb]ook)'
|
|
422
550
|
os_replacement: 'BlackBerry Tablet OS'
|
|
423
551
|
- regex: '(Black[Bb]erry)'
|
|
424
|
-
os_replacement: '
|
|
552
|
+
os_replacement: 'BlackBerry OS'
|
|
425
553
|
|
|
554
|
+
##########
|
|
555
|
+
# Firefox OS
|
|
556
|
+
##########
|
|
557
|
+
- regex: '\(Mobile;.+Firefox/\d+\.\d+'
|
|
558
|
+
os_replacement: 'Firefox OS'
|
|
559
|
+
|
|
560
|
+
##########
|
|
561
|
+
# BREW
|
|
562
|
+
# yes, Brew is lower-cased for Brew MP
|
|
563
|
+
##########
|
|
564
|
+
- regex: '(BREW)[ /](\d+)\.(\d+)\.(\d+)'
|
|
565
|
+
- regex: '(BREW);'
|
|
566
|
+
- regex: '(Brew MP|BMP)[ /](\d+)\.(\d+)\.(\d+)'
|
|
567
|
+
os_replacement: 'Brew MP'
|
|
568
|
+
- regex: 'BMP;'
|
|
569
|
+
os_replacement: 'Brew MP'
|
|
570
|
+
|
|
571
|
+
##########
|
|
572
|
+
# Google TV
|
|
573
|
+
##########
|
|
574
|
+
- regex: '(GoogleTV) (\d+)\.(\d+)\.(\d+)'
|
|
575
|
+
# Old style
|
|
576
|
+
- regex: '(GoogleTV)\/\d+'
|
|
577
|
+
|
|
578
|
+
- regex: '(WebTV)/(\d+).(\d+)'
|
|
579
|
+
|
|
426
580
|
##########
|
|
427
581
|
# Misc mobile
|
|
428
582
|
##########
|
|
429
|
-
- regex: '(
|
|
583
|
+
- regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+))?'
|
|
430
584
|
os_replacement: 'webOS'
|
|
585
|
+
- regex: '(VRE);'
|
|
431
586
|
|
|
432
587
|
##########
|
|
433
588
|
# Generic patterns
|
|
@@ -444,7 +599,10 @@ os_parsers:
|
|
|
444
599
|
|
|
445
600
|
# just os
|
|
446
601
|
- regex: '(Windows|OpenBSD|FreeBSD|NetBSD|Ubuntu|Kubuntu|Android|Arch Linux|CentOS|WeTab|Slackware)'
|
|
602
|
+
- regex: '(Linux)/(\d+)\.(\d+)'
|
|
447
603
|
- regex: '(Linux|BSD)'
|
|
604
|
+
- regex: 'SunOS'
|
|
605
|
+
os_replacement: 'Solaris'
|
|
448
606
|
|
|
449
607
|
device_parsers:
|
|
450
608
|
##########
|
|
@@ -474,30 +632,64 @@ device_parsers:
|
|
|
474
632
|
- regex: 'Sprint APA(9292)'
|
|
475
633
|
device_replacement: 'HTC $1 (Sprint)'
|
|
476
634
|
- regex: 'HTC ([A-Za-z0-9]+ [A-Z])'
|
|
477
|
-
device_replacement: HTC $1
|
|
478
|
-
- regex: 'HTC-([A-Za-z0-9]+)'
|
|
479
635
|
device_replacement: 'HTC $1'
|
|
480
|
-
- regex: '
|
|
636
|
+
- regex: 'HTC[-_/\s]([A-Za-z0-9]+)'
|
|
481
637
|
device_replacement: 'HTC $1'
|
|
482
|
-
- regex: '
|
|
483
|
-
device_replacement: 'HTC $1'
|
|
484
|
-
- regex: '(ADR[A-z0-9]+)'
|
|
638
|
+
- regex: '(ADR[A-Za-z0-9]+)'
|
|
485
639
|
device_replacement: 'HTC $1'
|
|
486
640
|
- regex: '(HTC)'
|
|
487
641
|
|
|
642
|
+
# Tesla Model S
|
|
643
|
+
- regex: '(QtCarBrowser)'
|
|
644
|
+
device_replacement: 'Tesla Model S'
|
|
645
|
+
|
|
646
|
+
# Samsung
|
|
647
|
+
- regex: '(SamsungSGHi560)'
|
|
648
|
+
device_replacement: 'Samsung SGHi560'
|
|
649
|
+
|
|
488
650
|
#########
|
|
489
651
|
# Ericsson - must come before nokia since they also use symbian
|
|
490
652
|
#########
|
|
491
|
-
- regex: 'SonyEricsson([A-z0-9]+)/'
|
|
653
|
+
- regex: 'SonyEricsson([A-Za-z0-9]+)/'
|
|
492
654
|
device_replacement: 'Ericsson $1'
|
|
493
655
|
|
|
656
|
+
##########
|
|
657
|
+
# PlayStation
|
|
658
|
+
# The Vita spoofs the Kindle
|
|
659
|
+
##########
|
|
660
|
+
- regex: 'PLAYSTATION 3'
|
|
661
|
+
device_replacement: 'PlayStation 3'
|
|
662
|
+
- regex: '(PlayStation Portable)'
|
|
663
|
+
- regex: '(PlayStation Vita)'
|
|
664
|
+
|
|
665
|
+
##########
|
|
666
|
+
# incomplete!
|
|
667
|
+
# Kindle
|
|
668
|
+
# http://amazonsilk.wordpress.com/useful-bits/silk-user-agent/
|
|
669
|
+
##########
|
|
670
|
+
- regex: '(KFOT Build)'
|
|
671
|
+
device_replacement: 'Kindle Fire'
|
|
672
|
+
- regex: '(KFTT Build)'
|
|
673
|
+
device_replacement: 'Kindle Fire HD'
|
|
674
|
+
- regex: '(KFJWI Build)'
|
|
675
|
+
device_replacement: 'Kindle Fire HD 8.9" WiFi'
|
|
676
|
+
- regex: '(KFJWA Build)'
|
|
677
|
+
device_replacement: 'Kindle Fire HD 8.9" 4G'
|
|
678
|
+
- regex: '(Kindle Fire)'
|
|
679
|
+
- regex: '(Kindle)'
|
|
680
|
+
- regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+))?'
|
|
681
|
+
device_replacement: 'Kindle Fire'
|
|
682
|
+
|
|
494
683
|
#########
|
|
495
684
|
# Android General Device Matching (far from perfect)
|
|
496
685
|
#########
|
|
497
|
-
- regex: 'Android[\- ][\d]+\.[\d]
|
|
498
|
-
- regex: 'Android[\- ][\d]+\.[\d]
|
|
499
|
-
- regex: 'Android[\- ][\d]+\.[\d]
|
|
500
|
-
- regex: 'Android[\- ][\d]+\.[\d]
|
|
686
|
+
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{2}; WOWMobile (.+) Build'
|
|
687
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{2}; (.+) Build'
|
|
688
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{2}; (.+) Build'
|
|
689
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+;[A-Za-z]{2}\-[A-Za-z]{2};(.+) Build'
|
|
690
|
+
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{2}; (.+) Build'
|
|
691
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; (.+) Build'
|
|
692
|
+
- regex: 'Android[\- ][\d]+\.[\d]+; (.+) Build'
|
|
501
693
|
|
|
502
694
|
##########
|
|
503
695
|
# NOKIA
|
|
@@ -505,6 +697,8 @@ device_parsers:
|
|
|
505
697
|
##########
|
|
506
698
|
- regex: 'NokiaN([0-9]+)'
|
|
507
699
|
device_replacement: 'Nokia N$1'
|
|
700
|
+
- regex: 'NOKIA([A-Za-z0-9\v-]+)'
|
|
701
|
+
device_replacement: 'Nokia $1'
|
|
508
702
|
- regex: 'Nokia([A-Za-z0-9\v-]+)'
|
|
509
703
|
device_replacement: 'Nokia $1'
|
|
510
704
|
- regex: 'NOKIA ([A-Za-z0-9\-]+)'
|
|
@@ -517,14 +711,19 @@ device_parsers:
|
|
|
517
711
|
device_replacement: 'Nokia'
|
|
518
712
|
|
|
519
713
|
##########
|
|
520
|
-
#
|
|
714
|
+
# BlackBerry
|
|
521
715
|
# http://www.useragentstring.com/pages/BlackBerry/
|
|
522
716
|
##########
|
|
717
|
+
- regex: 'BB10; ([A-Za-z0-9\- ]+)\)'
|
|
718
|
+
device_replacement: 'BlackBerry $1'
|
|
523
719
|
- regex: '(PlayBook).+RIM Tablet OS'
|
|
524
|
-
device_replacement: '
|
|
525
|
-
- regex: '
|
|
720
|
+
device_replacement: 'BlackBerry Playbook'
|
|
721
|
+
- regex: 'Black[Bb]erry ([0-9]+);'
|
|
722
|
+
device_replacement: 'BlackBerry $1'
|
|
526
723
|
- regex: 'Black[Bb]erry([0-9]+)'
|
|
527
724
|
device_replacement: 'BlackBerry $1'
|
|
725
|
+
- regex: 'Black[Bb]erry;'
|
|
726
|
+
device_replacement: 'BlackBerry'
|
|
528
727
|
|
|
529
728
|
##########
|
|
530
729
|
# PALM / HP
|
|
@@ -534,25 +733,24 @@ device_parsers:
|
|
|
534
733
|
device_replacement: 'Palm Pre'
|
|
535
734
|
- regex: '(Pixi)/(\d+)\.(\d+)'
|
|
536
735
|
device_replacement: 'Palm Pixi'
|
|
537
|
-
- regex: '(
|
|
538
|
-
device_replacement: 'HP
|
|
539
|
-
- regex: 'HPiPAQ([A-z0-9]+)/(\d+).(\d+)'
|
|
736
|
+
- regex: '(Touch[Pp]ad)/(\d+)\.(\d+)'
|
|
737
|
+
device_replacement: 'HP TouchPad'
|
|
738
|
+
- regex: 'HPiPAQ([A-Za-z0-9]+)/(\d+).(\d+)'
|
|
540
739
|
device_replacement: 'HP iPAQ $1'
|
|
541
|
-
- regex: 'Palm([A-z0-9]+)'
|
|
740
|
+
- regex: 'Palm([A-Za-z0-9]+)'
|
|
542
741
|
device_replacement: 'Palm $1'
|
|
543
|
-
- regex: 'Treo([A-z0-9]+)'
|
|
742
|
+
- regex: 'Treo([A-Za-z0-9]+)'
|
|
544
743
|
device_replacement: 'Palm Treo $1'
|
|
545
744
|
- regex: 'webOS.*(P160UNA)/(\d+).(\d+)'
|
|
546
745
|
device_replacement: 'HP Veer'
|
|
547
746
|
|
|
548
747
|
##########
|
|
549
|
-
#
|
|
550
|
-
#
|
|
748
|
+
# AppleTV
|
|
749
|
+
# No built in browser that I can tell
|
|
750
|
+
# Stack Overflow indicated iTunes-AppleTV/4.1 as a known UA for app available and I'm seeing it in live traffic
|
|
551
751
|
##########
|
|
552
|
-
- regex: '(
|
|
553
|
-
|
|
554
|
-
- regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+))?'
|
|
555
|
-
device_replacement: 'Kindle Fire'
|
|
752
|
+
- regex: '(AppleTV)'
|
|
753
|
+
device_replacement: 'AppleTV'
|
|
556
754
|
|
|
557
755
|
##########
|
|
558
756
|
# complete but probably catches spoofs
|
|
@@ -569,101 +767,113 @@ device_parsers:
|
|
|
569
767
|
##########
|
|
570
768
|
# Acer
|
|
571
769
|
##########
|
|
572
|
-
- regex: 'acer_([A-z0-9]+)_'
|
|
770
|
+
- regex: 'acer_([A-Za-z0-9]+)_'
|
|
573
771
|
device_replacement: 'Acer $1'
|
|
574
|
-
- regex: 'acer_([A-z0-9]+)_'
|
|
772
|
+
- regex: 'acer_([A-Za-z0-9]+)_'
|
|
575
773
|
device_replacement: 'Acer $1'
|
|
576
774
|
|
|
775
|
+
##########
|
|
776
|
+
# Alcatel
|
|
777
|
+
##########
|
|
778
|
+
- regex: 'ALCATEL-([A-Za-z0-9]+)'
|
|
779
|
+
device_replacement: 'Alcatel $1'
|
|
780
|
+
- regex: 'Alcatel-([A-Za-z0-9]+)'
|
|
781
|
+
device_replacement: 'Alcatel $1'
|
|
782
|
+
|
|
577
783
|
##########
|
|
578
784
|
# Amoi
|
|
579
785
|
##########
|
|
580
|
-
- regex: 'Amoi\-([A-z0-9]+)'
|
|
786
|
+
- regex: 'Amoi\-([A-Za-z0-9]+)'
|
|
581
787
|
device_replacement: 'Amoi $1'
|
|
582
|
-
- regex: 'AMOI\-([A-z0-9]+)'
|
|
788
|
+
- regex: 'AMOI\-([A-Za-z0-9]+)'
|
|
583
789
|
device_replacement: 'Amoi $1'
|
|
584
790
|
|
|
585
791
|
##########
|
|
586
792
|
# Amoi
|
|
587
793
|
##########
|
|
588
|
-
- regex: 'Asus\-([A-z0-9]+)'
|
|
794
|
+
- regex: 'Asus\-([A-Za-z0-9]+)'
|
|
589
795
|
device_replacement: 'Asus $1'
|
|
590
|
-
- regex: 'ASUS\-([A-z0-9]+)'
|
|
796
|
+
- regex: 'ASUS\-([A-Za-z0-9]+)'
|
|
591
797
|
device_replacement: 'Asus $1'
|
|
592
798
|
|
|
593
799
|
##########
|
|
594
800
|
# Bird
|
|
595
801
|
##########
|
|
596
|
-
- regex: 'BIRD\-([A-z0-9]+)'
|
|
802
|
+
- regex: 'BIRD\-([A-Za-z0-9]+)'
|
|
597
803
|
device_replacement: 'Bird $1'
|
|
598
|
-
- regex: 'BIRD\.([A-z0-9]+)'
|
|
804
|
+
- regex: 'BIRD\.([A-Za-z0-9]+)'
|
|
599
805
|
device_replacement: 'Bird $1'
|
|
600
|
-
- regex: 'BIRD ([A-z0-9]+)'
|
|
806
|
+
- regex: 'BIRD ([A-Za-z0-9]+)'
|
|
601
807
|
device_replacement: 'Bird $1'
|
|
602
808
|
|
|
603
809
|
##########
|
|
604
810
|
# Dell
|
|
605
811
|
##########
|
|
606
|
-
- regex: 'Dell ([A-z0-9]+)'
|
|
812
|
+
- regex: 'Dell ([A-Za-z0-9]+)'
|
|
607
813
|
device_replacement: 'Dell $1'
|
|
608
814
|
|
|
609
815
|
##########
|
|
610
816
|
# DoCoMo
|
|
611
817
|
##########
|
|
612
|
-
- regex: 'DoCoMo/2\.0 ([A-z0-9]+)'
|
|
818
|
+
- regex: 'DoCoMo/2\.0 ([A-Za-z0-9]+)'
|
|
613
819
|
device_replacement: 'DoCoMo $1'
|
|
614
|
-
- regex: '([A-z0-9]+)
|
|
820
|
+
- regex: '([A-Za-z0-9]+)_W\;FOMA'
|
|
615
821
|
device_replacement: 'DoCoMo $1'
|
|
616
|
-
- regex: '([A-z0-9]+)\;FOMA'
|
|
822
|
+
- regex: '([A-Za-z0-9]+)\;FOMA'
|
|
617
823
|
device_replacement: 'DoCoMo $1'
|
|
618
824
|
|
|
619
825
|
##########
|
|
620
|
-
# Huawei
|
|
826
|
+
# Huawei
|
|
621
827
|
##########
|
|
622
|
-
- regex: '
|
|
828
|
+
- regex: 'Huawei([A-Za-z0-9]+)'
|
|
829
|
+
device_replacement: 'Huawei $1'
|
|
830
|
+
- regex: 'HUAWEI-([A-Za-z0-9]+)'
|
|
831
|
+
device_replacement: 'Huawei $1'
|
|
832
|
+
- regex: 'vodafone([A-Za-z0-9]+)'
|
|
623
833
|
device_replacement: 'Huawei Vodafone $1'
|
|
624
834
|
|
|
625
835
|
##########
|
|
626
836
|
# i-mate
|
|
627
837
|
##########
|
|
628
|
-
- regex: 'i\-mate ([A-z0-9]+)'
|
|
838
|
+
- regex: 'i\-mate ([A-Za-z0-9]+)'
|
|
629
839
|
device_replacement: 'i-mate $1'
|
|
630
840
|
|
|
631
841
|
##########
|
|
632
842
|
# kyocera
|
|
633
843
|
##########
|
|
634
|
-
- regex: 'Kyocera\-([A-z0-9]+)'
|
|
844
|
+
- regex: 'Kyocera\-([A-Za-z0-9]+)'
|
|
635
845
|
device_replacement: 'Kyocera $1'
|
|
636
|
-
- regex: 'KWC\-([A-z0-9]+)'
|
|
846
|
+
- regex: 'KWC\-([A-Za-z0-9]+)'
|
|
637
847
|
device_replacement: 'Kyocera $1'
|
|
638
848
|
|
|
639
849
|
##########
|
|
640
850
|
# lenovo
|
|
641
851
|
##########
|
|
642
|
-
- regex: 'Lenovo\-([A-z0-9]+)'
|
|
852
|
+
- regex: 'Lenovo\-([A-Za-z0-9]+)'
|
|
643
853
|
device_replacement: 'Lenovo $1'
|
|
644
|
-
- regex: '
|
|
854
|
+
- regex: 'Lenovo_([A-Za-z0-9]+)'
|
|
645
855
|
device_replacement: 'Lenovo $1'
|
|
646
856
|
|
|
647
857
|
##########
|
|
648
858
|
# lg
|
|
649
859
|
##########
|
|
650
|
-
- regex: 'LG/([A-z0-9]+)'
|
|
860
|
+
- regex: 'LG/([A-Za-z0-9]+)'
|
|
651
861
|
device_replacement: 'LG $1'
|
|
652
|
-
- regex: 'LG-LG([A-z0-9]+)'
|
|
862
|
+
- regex: 'LG-LG([A-Za-z0-9]+)'
|
|
653
863
|
device_replacement: 'LG $1'
|
|
654
|
-
- regex: 'LGE-LG([A-z0-9]+)'
|
|
864
|
+
- regex: 'LGE-LG([A-Za-z0-9]+)'
|
|
655
865
|
device_replacement: 'LG $1'
|
|
656
|
-
- regex: 'LGE VX([A-z0-9]+)'
|
|
866
|
+
- regex: 'LGE VX([A-Za-z0-9]+)'
|
|
657
867
|
device_replacement: 'LG $1'
|
|
658
|
-
- regex: 'LG ([A-z0-9]+)'
|
|
868
|
+
- regex: 'LG ([A-Za-z0-9]+)'
|
|
659
869
|
device_replacement: 'LG $1'
|
|
660
|
-
- regex: 'LGE LG\-AX([A-z0-9]+)'
|
|
870
|
+
- regex: 'LGE LG\-AX([A-Za-z0-9]+)'
|
|
661
871
|
device_replacement: 'LG $1'
|
|
662
|
-
- regex: 'LG\-([A-z0-9]+)'
|
|
872
|
+
- regex: 'LG\-([A-Za-z0-9]+)'
|
|
663
873
|
device_replacement: 'LG $1'
|
|
664
|
-
- regex: 'LGE\-([A-z0-9]+)'
|
|
874
|
+
- regex: 'LGE\-([A-Za-z0-9]+)'
|
|
665
875
|
device_replacement: 'LG $1'
|
|
666
|
-
- regex: 'LG([A-z0-9]+)'
|
|
876
|
+
- regex: 'LG([A-Za-z0-9]+)'
|
|
667
877
|
device_replacement: 'LG $1'
|
|
668
878
|
|
|
669
879
|
##########
|
|
@@ -677,36 +887,61 @@ device_parsers:
|
|
|
677
887
|
##########
|
|
678
888
|
# motorola
|
|
679
889
|
##########
|
|
680
|
-
- regex: '(Motorola)\-([A-z0-9]+)'
|
|
681
|
-
- regex: 'MOTO\-([A-z0-9]+)'
|
|
890
|
+
- regex: '(Motorola)\-([A-Za-z0-9]+)'
|
|
891
|
+
- regex: 'MOTO\-([A-Za-z0-9]+)'
|
|
682
892
|
device_replacement: 'Motorola $1'
|
|
683
|
-
- regex: 'MOT\-([A-z0-9]+)'
|
|
893
|
+
- regex: 'MOT\-([A-Za-z0-9]+)'
|
|
684
894
|
device_replacement: 'Motorola $1'
|
|
895
|
+
|
|
896
|
+
##########
|
|
897
|
+
# nintendo
|
|
898
|
+
##########
|
|
899
|
+
- regex: '(Nintendo WiiU)'
|
|
900
|
+
device_replacement: 'Nintendo Wii U'
|
|
901
|
+
- regex: 'Nintendo (DS|3DS|DSi|Wii);'
|
|
902
|
+
device_replacement: 'Nintendo $1'
|
|
685
903
|
|
|
904
|
+
##########
|
|
905
|
+
# pantech
|
|
906
|
+
##########
|
|
907
|
+
- regex: 'Pantech([A-Za-z0-9]+)'
|
|
908
|
+
device_replacement: 'Pantech $1'
|
|
909
|
+
|
|
686
910
|
##########
|
|
687
911
|
# philips
|
|
688
912
|
##########
|
|
689
|
-
- regex: 'Philips([A-z0-9]+)'
|
|
913
|
+
- regex: 'Philips([A-Za-z0-9]+)'
|
|
690
914
|
device_replacement: 'Philips $1'
|
|
691
|
-
- regex: 'Philips ([A-z0-9]+)'
|
|
915
|
+
- regex: 'Philips ([A-Za-z0-9]+)'
|
|
692
916
|
device_replacement: 'Philips $1'
|
|
693
917
|
|
|
694
918
|
##########
|
|
695
919
|
# Samsung
|
|
696
920
|
##########
|
|
697
|
-
- regex: 'SAMSUNG-([A-z0-9\-]+)'
|
|
921
|
+
- regex: 'SAMSUNG-([A-Za-z0-9\-]+)'
|
|
698
922
|
device_replacement: 'Samsung $1'
|
|
699
|
-
- regex: 'SAMSUNG\; ([A-z0-9\-]+)'
|
|
923
|
+
- regex: 'SAMSUNG\; ([A-Za-z0-9\-]+)'
|
|
700
924
|
device_replacement: 'Samsung $1'
|
|
701
925
|
|
|
926
|
+
##########
|
|
927
|
+
# Sega
|
|
928
|
+
##########
|
|
929
|
+
- regex: 'Dreamcast'
|
|
930
|
+
device_replacement: 'Sega Dreamcast'
|
|
931
|
+
|
|
702
932
|
##########
|
|
703
933
|
# Softbank
|
|
704
934
|
##########
|
|
705
|
-
- regex: 'Softbank/1\.0/([A-z0-9]+)'
|
|
935
|
+
- regex: 'Softbank/1\.0/([A-Za-z0-9]+)'
|
|
706
936
|
device_replacement: 'Softbank $1'
|
|
707
|
-
- regex: 'Softbank/2\.0/([A-z0-9]+)'
|
|
937
|
+
- regex: 'Softbank/2\.0/([A-Za-z0-9]+)'
|
|
708
938
|
device_replacement: 'Softbank $1'
|
|
709
939
|
|
|
940
|
+
##########
|
|
941
|
+
# WebTV
|
|
942
|
+
##########
|
|
943
|
+
- regex: '(WebTV)/(\d+).(\d+)'
|
|
944
|
+
|
|
710
945
|
##########
|
|
711
946
|
# Generic Smart Phone
|
|
712
947
|
##########
|
|
@@ -716,13 +951,13 @@ device_parsers:
|
|
|
716
951
|
##########
|
|
717
952
|
# Generic Feature Phone
|
|
718
953
|
##########
|
|
719
|
-
- regex: '^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\-|airn|alav|asus|attw|au\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bell|bird|bw\-n|bw\-u|beck|benq|bilb|blac|c55/|cdm\-|chtm|capi|comp|cond|craw|dall|dbte|dc\-s|dica|ds\-d|ds12|dait|devi|dmob|doco|dopo|el49|erk0|esl8|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\-|
|
|
954
|
+
- regex: '^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\-|airn|alav|asus|attw|au\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bell|bird|bw\-n|bw\-u|beck|benq|bilb|blac|c55/|cdm\-|chtm|capi|comp|cond|craw|dall|dbte|dc\-s|dica|ds\-d|ds12|dait|devi|dmob|doco|dopo|el49|erk0|esl8|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\-|fly_|g\-mo|g1 u|g560|gf\-5|grun|gene|go.w|good|grad|hcit|hd\-m|hd\-p|hd\-t|hei\-|hp i|hpip|hs\-c|htc |htc\-|htca|htcg)'
|
|
720
955
|
device_replacement: 'Generic Feature Phone'
|
|
721
|
-
- regex: '^(htcp|htcs|htct|
|
|
956
|
+
- regex: '^(htcp|htcs|htct|htc_|haie|hita|huaw|hutc|i\-20|i\-go|i\-ma|i230|iac|iac\-|iac/|ig01|im1k|inno|iris|jata|java|kddi|kgt|kgt/|kpt |kwc\-|klon|lexi|lg g|lg\-a|lg\-b|lg\-c|lg\-d|lg\-f|lg\-g|lg\-k|lg\-l|lg\-m|lg\-o|lg\-p|lg\-s|lg\-t|lg\-u|lg\-w|lg/k|lg/l|lg/u|lg50|lg54|lge\-|lge/|lynx|leno|m1\-w|m3ga|m50/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot |mot\-|mt50|mtp1|mtv |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec\-|nem\-|newg|neon)'
|
|
722
957
|
device_replacement: 'Generic Feature Phone'
|
|
723
958
|
- regex: '^(netf|noki|nzph|o2 x|o2\-x|opwv|owg1|opti|oran|ot\-s|p800|pand|pg\-1|pg\-2|pg\-3|pg\-6|pg\-8|pg\-c|pg13|phil|pn\-2|pt\-g|palm|pana|pire|pock|pose|psio|qa\-a|qc\-2|qc\-3|qc\-5|qc\-7|qc07|qc12|qc21|qc32|qc60|qci\-|qwap|qtek|r380|r600|raks|rim9|rove|s55/|sage|sams|sc01|sch\-|scp\-|sdk/|se47|sec\-|sec0|sec1|semc|sgh\-|shar|sie\-|sk\-0|sl45|slid|smb3|smt5|sp01|sph\-|spv |spv\-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t\-mo|t218|t250|t600|t610|t618|tcl\-|tdg\-|telm|tim\-|ts70|tsm\-|tsm3|tsm5|tx\-9|tagt)'
|
|
724
959
|
device_replacement: 'Generic Feature Phone'
|
|
725
|
-
- regex: '^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vite|voda|vulc|w3c |w3c\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\-|your|zte\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\-|webc|whit|wmlb|xda\-|
|
|
960
|
+
- regex: '^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vite|voda|vulc|w3c |w3c\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\-|your|zte\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\-|webc|whit|wmlb|xda\-|xda_)'
|
|
726
961
|
device_replacement: 'Generic Feature Phone'
|
|
727
962
|
|
|
728
963
|
##########
|
|
@@ -730,3 +965,4 @@ device_parsers:
|
|
|
730
965
|
##########
|
|
731
966
|
- regex: '(bot|borg|google(^tv)|yahoo|slurp|msnbot|msrbot|openbot|archiver|netresearch|lycos|scooter|altavista|teoma|gigabot|baiduspider|blitzbot|oegp|charlotte|furlbot|http%20client|polybot|htdig|ichiro|mogimogi|larbin|pompos|scrubby|searchsight|seekbot|semanticdiscovery|silk|snappy|speedy|spider|voila|vortex|voyager|zao|zeal|fast\-webcrawler|converacrawler|dataparksearch|findlinks)'
|
|
732
967
|
device_replacement: 'Spider'
|
|
968
|
+
|