user_agent_parser 0.1.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of user_agent_parser might be problematic. Click here for more details.
- data/Readme.md +1 -3
- data/lib/user_agent_parser/user_agent.rb +0 -1
- data/lib/user_agent_parser/version.rb +5 -0
- data/vendor/ua-parser/regexes.yaml +102 -28
- metadata +3 -3
data/Readme.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# UserAgentParser [![Build Status](https://secure.travis-ci.org/toolmantim/user_agent_parser.png?branch=master)](http://travis-ci.org/toolmantim/user_agent_parser)
|
2
2
|
|
3
|
-
UserAgentParser is a simple, comprehensive Ruby gem for parsing user agent strings. It uses [BrowserScope](http://www.browserscope.org/)'s parsing patterns
|
3
|
+
UserAgentParser is a simple, comprehensive Ruby gem for parsing user agent strings. It uses [BrowserScope](http://www.browserscope.org/)'s [parsing patterns](https://github.com/tobie/ua-parser).
|
4
4
|
|
5
5
|
## Requirements
|
6
6
|
|
@@ -58,8 +58,6 @@ Finished tests in 144.220280s, 89.0027 tests/s, 234.9739 assertions/s.
|
|
58
58
|
|
59
59
|
## Limitations
|
60
60
|
|
61
|
-
Chrome Frame detection is not yet included, but once [ua-parser issue #14](https://github.com/tobie/ua-parser/issues/14) is resolved this gem will be updated along with it.
|
62
|
-
|
63
61
|
There's no support for providing overrides from Javascript user agent detection like there is with original BrowserScope library. The Javascript overrides were only necessary for detecting IE 9 Platform Preview and older versions of [Chrome Frame](https://developers.google.com/chrome/chrome-frame/).
|
64
62
|
|
65
63
|
## Contributing
|
@@ -1,6 +1,3 @@
|
|
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
|
|
@@ -12,17 +9,25 @@ user_agent_parsers:
|
|
12
9
|
- regex: '(SeaMonkey|Camino)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
|
13
10
|
|
14
11
|
# Firefox
|
12
|
+
- regex: '(Pale[Mm]oon)/(\d+)\.(\d+)\.?(\d+)?'
|
13
|
+
family_replacement: 'Pale Moon (Firefox Variant)'
|
15
14
|
- regex: '(Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
|
16
15
|
family_replacement: 'Firefox Mobile'
|
17
16
|
- regex: '(Fennec)/(\d+)\.(\d+)(pre)'
|
18
17
|
family_replacment: 'Firefox Mobile'
|
19
18
|
- regex: '(Fennec)/(\d+)\.(\d+)'
|
20
19
|
family_replacement: 'Firefox Mobile'
|
20
|
+
- regex: 'Mobile.*(Firefox)/(\d+)\.(\d+)'
|
21
|
+
family_replacement: 'Firefox Mobile'
|
21
22
|
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre)?)'
|
22
23
|
family_replacement: 'Firefox ($1)'
|
23
|
-
- regex: '(Firefox)/(\d+)\.(\d+)(
|
24
|
+
- regex: '(Firefox)/(\d+)\.(\d+)(a\d+[a-z]*)'
|
25
|
+
family_replacement: 'Firefox Alpha'
|
26
|
+
- regex: '(Firefox)/(\d+)\.(\d+)(b\d+[a-z]*)'
|
24
27
|
family_replacement: 'Firefox Beta'
|
25
|
-
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(
|
28
|
+
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(a\d+[a-z]*)'
|
29
|
+
family_replacement: 'Firefox Alpha'
|
30
|
+
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(b\d+[a-z]*)'
|
26
31
|
family_replacement: 'Firefox Beta'
|
27
32
|
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*)?'
|
28
33
|
family_replacement: 'Firefox ($1)'
|
@@ -113,6 +118,8 @@ user_agent_parsers:
|
|
113
118
|
# Chrome Mobile
|
114
119
|
- regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
115
120
|
family_replacement: 'Chrome Mobile'
|
121
|
+
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile'
|
122
|
+
family_replacement: 'Chrome Mobile'
|
116
123
|
|
117
124
|
# Chrome Frame must come before MSIE.
|
118
125
|
- regex: '(chromeframe)/(\d+)\.(\d+)\.(\d+)'
|
@@ -121,15 +128,26 @@ user_agent_parsers:
|
|
121
128
|
# UC Browser
|
122
129
|
- regex: '(UC Browser)(\d+)\.(\d+)\.(\d+)'
|
123
130
|
|
131
|
+
# Tizen Browser (second case included in browser/major.minor regex)
|
132
|
+
- regex: '(SLP Browser)/(\d+)\.(\d+)'
|
133
|
+
family_replacement: 'Tizen Browser'
|
134
|
+
|
135
|
+
# Epiphany browser (identifies as Chromium)
|
136
|
+
- regex: '(Epiphany)/(\d+)\.(\d+).(\d+)'
|
137
|
+
|
138
|
+
# Sogou Explorer 2.X
|
139
|
+
- regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
|
140
|
+
family_replacement: 'Sogou Explorer'
|
141
|
+
|
124
142
|
#### END SPECIAL CASES TOP ####
|
125
143
|
|
126
144
|
#### MAIN CASES - this catches > 50% of all browsers ####
|
127
145
|
|
128
146
|
# Browser/major_version.minor_version.beta_version
|
129
|
-
- regex: '(AdobeAIR|Chromium|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|
|
147
|
+
- 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|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iron|Iris|UP\.Browser|Bunjaloo|Google Earth|Raven for Mac)/(\d+)\.(\d+)\.(\d+)'
|
130
148
|
|
131
149
|
# Browser/major_version.minor_version
|
132
|
-
- 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|Iron|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo)/(\d+)\.(\d+)'
|
150
|
+
- 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|Iron|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris)/(\d+)\.(\d+)'
|
133
151
|
|
134
152
|
# Browser major_version.minor_version.beta_version (space instead of slash)
|
135
153
|
- regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
|
@@ -186,6 +204,7 @@ user_agent_parsers:
|
|
186
204
|
|
187
205
|
- regex: '(BrowseX) \((\d+)\.(\d+)\.(\d+)'
|
188
206
|
|
207
|
+
# Polaris/d.d is above
|
189
208
|
- regex: '(POLARIS)/(\d+)\.(\d+)'
|
190
209
|
family_replacement: 'Polaris'
|
191
210
|
- regex: '(Embider)/(\d+)\.(\d+)'
|
@@ -263,6 +282,10 @@ user_agent_parsers:
|
|
263
282
|
# Amazon Silk, should go before Safari
|
264
283
|
- regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+))?'
|
265
284
|
|
285
|
+
# WebKit Nightly
|
286
|
+
- regex: '(AppleWebKit)/(\d+)\.?(\d+)?\+ .* Version/\d+\.\d+.\d+ Safari/'
|
287
|
+
family_replacement: 'WebKit Nightly'
|
288
|
+
|
266
289
|
# Safari
|
267
290
|
- regex: '(Version)/(\d+)\.(\d+)(?:\.(\d+))?.*Safari/'
|
268
291
|
family_replacement: 'Safari'
|
@@ -283,6 +306,33 @@ user_agent_parsers:
|
|
283
306
|
family_replacement: 'IE'
|
284
307
|
|
285
308
|
os_parsers:
|
309
|
+
|
310
|
+
##########
|
311
|
+
# Android
|
312
|
+
# can actually detect rooted android os. do we care?
|
313
|
+
##########
|
314
|
+
- regex: '(Android) (\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
|
315
|
+
- regex: '(Android)\-(\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
|
316
|
+
|
317
|
+
- regex: '(Android) Donut'
|
318
|
+
os_v1_replacement: '1'
|
319
|
+
os_v2_replacement: '2'
|
320
|
+
|
321
|
+
- regex: '(Android) Eclair'
|
322
|
+
os_v1_replacement: '2'
|
323
|
+
os_v2_replacement: '1'
|
324
|
+
|
325
|
+
- regex: '(Android) Froyo'
|
326
|
+
os_v1_replacement: '2'
|
327
|
+
os_v2_replacement: '2'
|
328
|
+
|
329
|
+
- regex: '(Android) Gingerbread'
|
330
|
+
os_v1_replacement: '2'
|
331
|
+
os_v2_replacement: '3'
|
332
|
+
|
333
|
+
- regex: '(Android) Honeycomb'
|
334
|
+
os_v1_replacement: '3'
|
335
|
+
|
286
336
|
##########
|
287
337
|
# Windows
|
288
338
|
# http://en.wikipedia.org/wiki/Windows_NT#Releases
|
@@ -328,30 +378,12 @@ os_parsers:
|
|
328
378
|
os_replacement: 'Windows 98'
|
329
379
|
|
330
380
|
##########
|
331
|
-
#
|
332
|
-
#
|
381
|
+
# Tizen OS from Samsung
|
382
|
+
# spoofs Android so pushing it above
|
333
383
|
##########
|
334
|
-
- regex: '(
|
335
|
-
- regex: '(Android)\-(\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
|
336
|
-
|
337
|
-
- regex: '(Android) Donut'
|
338
|
-
os_v1_replacement: '1'
|
339
|
-
os_v2_replacement: '2'
|
340
|
-
|
341
|
-
- regex: '(Android) Eclair'
|
342
|
-
os_v1_replacement: '2'
|
343
|
-
os_v2_replacement: '1'
|
344
|
-
|
345
|
-
- regex: '(Android) Froyo'
|
346
|
-
os_v1_replacement: '2'
|
347
|
-
os_v2_replacement: '2'
|
384
|
+
- regex: '(Tizen)/(\d+)\.(\d+)'
|
348
385
|
|
349
|
-
- regex: '(Android) Gingerbread'
|
350
|
-
os_v1_replacement: '2'
|
351
|
-
os_v2_replacement: '3'
|
352
386
|
|
353
|
-
- regex: '(Android) Honeycomb'
|
354
|
-
os_v1_replacement: '3'
|
355
387
|
|
356
388
|
##########
|
357
389
|
# Mac OS
|
@@ -502,6 +534,7 @@ device_parsers:
|
|
502
534
|
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; [A-z]{2}\-[A-z]{2}\; (.+) Build'
|
503
535
|
- regex: 'Android[\- ][\d]+\.[\d]+\-update1\; [A-z]{2}\-[A-z]{2}\; (.+) Build'
|
504
536
|
- regex: 'Android[\- ][\d]+\.[\d]+\; [A-z]{2}\-[A-z]{2}\; (.+) Build'
|
537
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; (.+) Build'
|
505
538
|
|
506
539
|
##########
|
507
540
|
# NOKIA
|
@@ -734,3 +767,44 @@ device_parsers:
|
|
734
767
|
##########
|
735
768
|
- 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)'
|
736
769
|
device_replacement: 'Spider'
|
770
|
+
|
771
|
+
|
772
|
+
mobile_user_agent_families:
|
773
|
+
- 'Firefox Mobile'
|
774
|
+
- 'Opera Mobile'
|
775
|
+
- 'Opera Mini'
|
776
|
+
- 'Mobile Safari'
|
777
|
+
- 'webOS'
|
778
|
+
- 'IE Mobile'
|
779
|
+
- 'Playstation Portable'
|
780
|
+
- 'Nokia'
|
781
|
+
- 'Blackberry'
|
782
|
+
- 'Palm'
|
783
|
+
- 'Silk'
|
784
|
+
- 'Android'
|
785
|
+
- 'Maemo'
|
786
|
+
- 'Obigo'
|
787
|
+
- 'Netfront'
|
788
|
+
- 'AvantGo'
|
789
|
+
- 'Teleca'
|
790
|
+
- 'SEMC-Browser'
|
791
|
+
- 'Bolt'
|
792
|
+
- 'Iris'
|
793
|
+
- 'UP.Browser'
|
794
|
+
- 'Symphony'
|
795
|
+
- 'Minimo'
|
796
|
+
- 'Bunjaloo'
|
797
|
+
- 'Jasmine'
|
798
|
+
- 'Dolfin'
|
799
|
+
- 'Polaris'
|
800
|
+
- 'BREW'
|
801
|
+
- 'Chrome Mobile'
|
802
|
+
- 'UC Browser'
|
803
|
+
- 'Tizen Browser'
|
804
|
+
|
805
|
+
# Some select mobile OSs report a desktop browser.
|
806
|
+
# make sure we note they're mobile
|
807
|
+
mobile_os_families:
|
808
|
+
- 'Windows Phone 6.5'
|
809
|
+
- 'Windows CE'
|
810
|
+
- 'Symbian OS'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: user_agent_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-03 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A simple, comprehensive Ruby gem for parsing user agent strings with
|
15
15
|
the help of BrowserScope's UA database
|
@@ -47,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
47
47
|
version: '0'
|
48
48
|
segments:
|
49
49
|
- 0
|
50
|
-
hash:
|
50
|
+
hash: 2550516200831264271
|
51
51
|
requirements: []
|
52
52
|
rubyforge_project:
|
53
53
|
rubygems_version: 1.8.23
|