browser 2.4.0 → 2.5.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/.gitignore +1 -0
- data/CHANGELOG.md +8 -0
- data/README.md +7 -5
- data/lib/browser/action_controller.rb +1 -1
- data/lib/browser/base.rb +17 -0
- data/lib/browser/browser.rb +6 -0
- data/lib/browser/device.rb +0 -1
- data/lib/browser/electron.rb +22 -0
- data/lib/browser/facebook.rb +21 -0
- data/lib/browser/otter.rb +21 -0
- data/lib/browser/platform.rb +7 -0
- data/lib/browser/qq.rb +2 -0
- data/lib/browser/version.rb +1 -1
- data/test/ua.yml +16 -10
- data/test/unit/android_app_test.rb +38 -0
- data/test/unit/electron_test.rb +14 -0
- data/test/unit/facebook_test.rb +20 -0
- data/test/unit/otter_test.rb +20 -0
- data/test/unit/qq_test.rb +16 -0
- metadata +13 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfb0f67e4198ff39314ea0fb6d61f74e6e7e87e0
|
4
|
+
data.tar.gz: f306ab70e7d0c09b6762518a45575cc6174da730
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a735e5313563172b76f9c86a28390755caaaf0f359c135743795f90f7c33df849cb041be3ebdb943101e4f46aefbc6d4ea2e1c6d5c564d43092974676d55614e
|
7
|
+
data.tar.gz: fd6438932dbab1676ceed16b454c746b4d2177f0651aff4ecc1205b392ce7663c894e0e4b4e6ca7435b6b85348921973733a225ed6e2ad910dde3b4a4b72e672
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v2.5.0
|
4
|
+
|
5
|
+
- Add support for QQ Browser Mac & Mac Lite.
|
6
|
+
- Add support for Electron Framework.
|
7
|
+
- Add support for Facebook in-app browser.
|
8
|
+
- Add support for Otter Browser.
|
9
|
+
- Add Android webview detection.
|
10
|
+
|
3
11
|
## v2.4.0
|
4
12
|
|
5
13
|
- Add Google Drive API, Proximic Spider, NewRelic pinger and SocialRank bots.
|
data/README.md
CHANGED
@@ -25,7 +25,8 @@ browser = Browser.new("Some User Agent", accept_language: "en-us")
|
|
25
25
|
browser.bot?
|
26
26
|
browser.chrome?
|
27
27
|
browser.core_media?
|
28
|
-
browser.edge?
|
28
|
+
browser.edge? # Newest MS browser
|
29
|
+
browser.electron? # Electron Framework
|
29
30
|
browser.firefox?
|
30
31
|
browser.full_version
|
31
32
|
browser.ie?
|
@@ -92,15 +93,16 @@ browser.platform.version # e.g. 9 (for iOS9)
|
|
92
93
|
browser.platform.adobe_air?
|
93
94
|
browser.platform.android?
|
94
95
|
browser.platform.android?(4.2) # detect Android Jelly Bean 4.2
|
96
|
+
browser.platform.android_app? # detect webview in an Android app
|
97
|
+
browser.platform.android_webview? # alias for android_app?
|
95
98
|
browser.platform.blackberry?
|
96
99
|
browser.platform.blackberry?(10) # detect specific BlackBerry version
|
97
100
|
browser.platform.chrome_os?
|
98
101
|
browser.platform.firefox_os?
|
99
102
|
browser.platform.ios? # detect iOS
|
100
103
|
browser.platform.ios?(9) # detect specific iOS version
|
101
|
-
browser.platform.ios_app?
|
102
|
-
browser.platform.ios_webview?
|
103
|
-
browser.platform.ios_webview? # request performed by ios' app webview
|
104
|
+
browser.platform.ios_app? # detect webview in an iOS app
|
105
|
+
browser.platform.ios_webview? # alias for ios_app?
|
104
106
|
browser.platform.linux?
|
105
107
|
browser.platform.mac?
|
106
108
|
browser.platform.other?
|
@@ -207,7 +209,7 @@ language.name
|
|
207
209
|
#=> "English/United States"
|
208
210
|
```
|
209
211
|
|
210
|
-
Result is always sorted in quality order from highest -> lowest. As per the HTTP spec:
|
212
|
+
Result is always sorted in quality order from highest -> lowest. As per the HTTP spec:
|
211
213
|
|
212
214
|
- omitting the quality value implies 1.0.
|
213
215
|
- quality value equal to zero means that is not accepted by the client.
|
data/lib/browser/base.rb
CHANGED
@@ -78,6 +78,18 @@ module Browser
|
|
78
78
|
"0"
|
79
79
|
end
|
80
80
|
|
81
|
+
# Detect if browser if Facebook.
|
82
|
+
def facebook?(expected_version = nil)
|
83
|
+
Facebook.new(ua).match? &&
|
84
|
+
detect_version?(full_version, expected_version)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Detect if browser is Otter.
|
88
|
+
def otter?(expected_version = nil)
|
89
|
+
Otter.new(ua).match? &&
|
90
|
+
detect_version?(full_version, expected_version)
|
91
|
+
end
|
92
|
+
|
81
93
|
# Detect if browser is WebKit-based.
|
82
94
|
def webkit?(expected_version = nil)
|
83
95
|
ua =~ /AppleWebKit/i &&
|
@@ -174,5 +186,10 @@ module Browser
|
|
174
186
|
def proxy?
|
175
187
|
nokia? || uc_browser? || opera_mini?
|
176
188
|
end
|
189
|
+
|
190
|
+
# Detect if the browser is Electron.
|
191
|
+
def electron?(expected_version = nil)
|
192
|
+
Electron.new(ua).match? && detect_version?(full_version, expected_version)
|
193
|
+
end
|
177
194
|
end
|
178
195
|
end
|
data/lib/browser/browser.rb
CHANGED
@@ -23,6 +23,9 @@ require "browser/micro_messenger"
|
|
23
23
|
require "browser/weibo"
|
24
24
|
require "browser/qq"
|
25
25
|
require "browser/alipay"
|
26
|
+
require "browser/electron"
|
27
|
+
require "browser/facebook"
|
28
|
+
require "browser/otter"
|
26
29
|
|
27
30
|
require "browser/bot"
|
28
31
|
require "browser/middleware"
|
@@ -50,9 +53,12 @@ module Browser
|
|
50
53
|
Edge,
|
51
54
|
InternetExplorer,
|
52
55
|
Firefox,
|
56
|
+
Otter,
|
57
|
+
Facebook, # must be placed before Chrome and Safari
|
53
58
|
Weibo, # must be placed before Chrome and Safari
|
54
59
|
QQ, # must be placed before Chrome and Safari
|
55
60
|
Alipay, # must be placed before Chrome and Safari
|
61
|
+
Electron, # must be placed before Chrome and Safari
|
56
62
|
Chrome,
|
57
63
|
Safari,
|
58
64
|
MicroMessenger,
|
data/lib/browser/device.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Browser
|
4
|
+
class Electron < Base
|
5
|
+
def id
|
6
|
+
:electron
|
7
|
+
end
|
8
|
+
|
9
|
+
def name
|
10
|
+
"Electron"
|
11
|
+
end
|
12
|
+
|
13
|
+
def full_version
|
14
|
+
ua[%r[Electron/([\d.]+)], 1] ||
|
15
|
+
"0.0"
|
16
|
+
end
|
17
|
+
|
18
|
+
def match?
|
19
|
+
ua =~ /Electron/
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Browser
|
4
|
+
class Facebook < Base
|
5
|
+
def id
|
6
|
+
:facebook
|
7
|
+
end
|
8
|
+
|
9
|
+
def name
|
10
|
+
"Facebook"
|
11
|
+
end
|
12
|
+
|
13
|
+
def full_version
|
14
|
+
ua[%r[FBAV/([\d.]+)], 1]
|
15
|
+
end
|
16
|
+
|
17
|
+
def match?
|
18
|
+
ua =~ /FBAV/
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Browser
|
4
|
+
class Otter < Base
|
5
|
+
def id
|
6
|
+
:otter
|
7
|
+
end
|
8
|
+
|
9
|
+
def name
|
10
|
+
"Otter"
|
11
|
+
end
|
12
|
+
|
13
|
+
def full_version
|
14
|
+
ua[%r[Otter/([\d.]+)], 1] || "0.0"
|
15
|
+
end
|
16
|
+
|
17
|
+
def match?
|
18
|
+
ua =~ /Otter/
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/browser/platform.rb
CHANGED
@@ -127,6 +127,13 @@ module Browser
|
|
127
127
|
ios_app?
|
128
128
|
end
|
129
129
|
|
130
|
+
# Detect if in an Android app webview (Lollipop and newer)
|
131
|
+
# https://developer.chrome.com/multidevice/user-agent#webview_user_agent
|
132
|
+
def android_app?
|
133
|
+
android? && ua =~ /\bwv\b/
|
134
|
+
end
|
135
|
+
alias_method :android_webview?, :android_app?
|
136
|
+
|
130
137
|
# http://msdn.microsoft.com/fr-FR/library/ms537503.aspx#PltToken
|
131
138
|
def windows_xp?
|
132
139
|
windows? && ua =~ /Windows NT 5\.[12]/
|
data/lib/browser/qq.rb
CHANGED
data/lib/browser/version.rb
CHANGED
data/test/ua.yml
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
ADOBE_AIR: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/13.0'
|
2
|
+
ALIPAY_ANDROID: "Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; HUAWEI G610-T00 Build/HuaweiG610-T00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 AlipayDefined(nt:WIFI,ws:360|640|1.5) AliApp(AP/9.0.1.073001) AlipayClient/9.0.1.073001 GCanvas/1.4.2.15"
|
3
|
+
ALIPAY_IOS: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 AliApp(AP/2.3.4) AlipayClient/2.3.4"
|
2
4
|
ANDROID: 'Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'
|
3
5
|
ANDROID_CUPCAKE: Mozilla/5.0 (Linux; U; Android 1.5; en-gb; T-Mobile G1 Build/CRC1) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
|
4
6
|
ANDROID_DONUT: Mozilla/5.0 (Linux; U; Android 1.6; ar-us; SonyEricssonX10i Build/R2BA026) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
|
@@ -15,6 +17,7 @@ ANDROID_LOLLIPOP_50: Mozilla/5.0 (Linux; Android 5.0; Nexus 5 Build/LPX13D) Appl
|
|
15
17
|
ANDROID_LOLLIPOP_51: Mozilla/5.0 (Linux; Android 5.1; Nexus 5 Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.0.0 Mobile Safari/537.36; DailymotionEmbedSDK 1.0
|
16
18
|
ANDROID_NEXUS_PLAYER: Mozilla/5.0 (Linux; Android 5.0; Nexus Player Build/LRX21V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.0
|
17
19
|
ANDROID_TV: Mozilla/5.0 (Linux; Android 5.0; ADT-1 Build/LRW87K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36
|
20
|
+
ANDROID_WEBVIEW: Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36
|
18
21
|
ANDROID_WITH_SAFARI: 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SCH-I535 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
|
19
22
|
BLACKBERRY10: 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.1675 Mobile Safari/537.10+'
|
20
23
|
BLACKBERRY4: 'BlackBerry8100/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103'
|
@@ -26,6 +29,8 @@ CHROME: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/53
|
|
26
29
|
CHROME_OS: 'Mozilla/5.0 (X11; CrOS x86_64 3701.81.0) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.57 Safari/537.31.'
|
27
30
|
COREMEDIA: 'Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569'
|
28
31
|
CUSTOM_APP: "Our App 0.0.1 (Linux; Android 4.0.3; HTC Ruby Build/IML74K; en_CA)"
|
32
|
+
ELECTRON: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Electron/1.4.12 Safari/537.36"
|
33
|
+
FACEBOOK: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 [FBAN/FBIOS;FBAV/135.0.0.45.90;FBBV/66877072;FBDV/iPhone9,3;FBMD/iPhone;FBSN/iOS;FBSV/10.3.3;FBSS/2;FBCR/AT&T;FBID/phone;FBLC/en_US;FBOP/5;FBRV/0]
|
29
34
|
FIREFOX: 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8'
|
30
35
|
FIREFOX_ANDROID: 'Mozilla/5.0 (Android; Mobile; rv:40.0) Gecko/40.0 Firefox/40.0'
|
31
36
|
FIREFOX_IOS: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.2 Mobile/13C75 Safari/601.1.46'
|
@@ -62,6 +67,7 @@ KINDLE_FIRE: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GIN
|
|
62
67
|
KINDLE_FIRE_HD: 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true'
|
63
68
|
KINDLE_FIRE_HD_MOBILE: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true'
|
64
69
|
LUMIA800: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7'
|
70
|
+
MICRO_MESSENGER: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E238 MicroMessenger/6.3.15 NetType/3G+ Language/zh_CN'
|
65
71
|
MIDP: MIDP-2.0
|
66
72
|
MOBILE_CHROME: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3'
|
67
73
|
MS_EDGE: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'
|
@@ -78,12 +84,17 @@ OPERA_ANDROID: 'Mozill/5.0 (Linux; Android 4.4.2; A1-810 Build/KOT49H) Apple/Web
|
|
78
84
|
OPERA_MINI: 'Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10'
|
79
85
|
OPERA_MOBI: 'Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00'
|
80
86
|
OPERA_NEXT: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36 OPR/15.0.1147.44 (Edition Next)'
|
87
|
+
OTTER: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/602.1 (KHTML, like Gecko) Otter/0.9.91
|
81
88
|
PHANTOM_JS: 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34'
|
82
89
|
PLAYBOOK: 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+'
|
83
90
|
PLAYSTATION3: 'Mozilla/5.0 (PLAYSTATION 3; 3.55)'
|
84
91
|
PLAYSTATION4: 'Mozilla/5.0 (PlayStation 4 1.020) AppleWebKit/536.26 (KHTML, like Gecko)'
|
85
92
|
PSP: 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)'
|
86
93
|
PSP_VITA: 'Mozilla/5.0 (Playstation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2'
|
94
|
+
QQ_BROWSER_ANDROID: 'Mozilla/5.0 (Linux; Android 5.1.1; SM-N9108V Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036222 Safari/537.36 V1_AND_SQ_6.2.0_320_YYB_D QQ/6.2.0.2655 NetType/WIFI WebP/0.3.0 Pixel/1440'
|
95
|
+
QQ_BROWSER_IOS: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E238 QQ/6.3.3.432 V1_IPH_SQ_6.3.3_1_APP_A Pixel/640 Core/UIWebView NetType/WIFI Mem/47'
|
96
|
+
QQ_BROWSER_MAC: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36 QQBrowser/4.2.4753.400'
|
97
|
+
QQ_BROWSER_MAC_LITE: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14 QQBrowserLite/1.0.4'
|
87
98
|
QUICKTIME: 'QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)'
|
88
99
|
SAFARI3: 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5'
|
89
100
|
SAFARI4: 'Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-ch) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9'
|
@@ -102,12 +113,14 @@ SURFACE: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0;
|
|
102
113
|
SYMBIAN: 'Nokia5250/10.0.011 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525 3gpp-gba'
|
103
114
|
TABLOID: 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13'
|
104
115
|
UC_BROWSER: 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; GT-I9500 Build/KOT49H) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.4.484 U3/0.8.0 Mobile Safari/533.1'
|
105
|
-
|
106
|
-
|
116
|
+
WEIBO_ANDROID: 'Mozilla/5.0 (Linux; Android 5.0.2; vivo X5M Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36 Weibo (vivo-vivo X5M__weibo__5.7.1__android__android5.0.2)'
|
117
|
+
WEIBO_IOS: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H143 Weibo (iPhone7,2__weibo__5.7.1__iphone__os8.4)'
|
118
|
+
WINDOWS10: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; Trident/6.0)'
|
107
119
|
WINDOWS7: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) chromeframe/10.0.648.205'
|
108
120
|
WINDOWS81: 'Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko'
|
109
121
|
WINDOWS8: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'
|
110
|
-
|
122
|
+
WINDOWS_2000: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 5.0; Trident/6.0)'
|
123
|
+
WINDOWS_2000_SP1: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 5.01; Trident/6.0)'
|
111
124
|
WINDOWS_MOBILE: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)'
|
112
125
|
WINDOWS_PHONE8: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)'
|
113
126
|
WINDOWS_PHONE: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)'
|
@@ -120,10 +133,3 @@ XBOX360: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox),
|
|
120
133
|
XBOXONE: 'Mozilla/5.0 (Compatible; MSIE 10.0; Windows NT 6.2; Trident /6.0; Xbox; Xbox One)'
|
121
134
|
XOOM: 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13'
|
122
135
|
YANDEX_BROWSER: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 YaBrowser/15.4.2272.3909 (beta) Yowser/2.0 Safari/537.36'
|
123
|
-
MICRO_MESSENGER: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E238 MicroMessenger/6.3.15 NetType/3G+ Language/zh_CN'
|
124
|
-
WEIBO_IOS: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H143 Weibo (iPhone7,2__weibo__5.7.1__iphone__os8.4)'
|
125
|
-
WEIBO_ANDROID: 'Mozilla/5.0 (Linux; Android 5.0.2; vivo X5M Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36 Weibo (vivo-vivo X5M__weibo__5.7.1__android__android5.0.2)'
|
126
|
-
QQ_BROWSER_IOS: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E238 QQ/6.3.3.432 V1_IPH_SQ_6.3.3_1_APP_A Pixel/640 Core/UIWebView NetType/WIFI Mem/47'
|
127
|
-
QQ_BROWSER_ANDROID: 'Mozilla/5.0 (Linux; Android 5.1.1; SM-N9108V Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036222 Safari/537.36 V1_AND_SQ_6.2.0_320_YYB_D QQ/6.2.0.2655 NetType/WIFI WebP/0.3.0 Pixel/1440'
|
128
|
-
ALIPAY_IOS: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 AliApp(AP/2.3.4) AlipayClient/2.3.4"
|
129
|
-
ALIPAY_ANDROID: "Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; HUAWEI G610-T00 Build/HuaweiG610-T00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 AlipayDefined(nt:WIFI,ws:360|640|1.5) AliApp(AP/9.0.1.073001) AlipayClient/9.0.1.073001 GCanvas/1.4.2.15"
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class AndroidAppTest < Minitest::Test
|
6
|
+
let(:browser) { Browser.new(Browser["ANDROID_WEBVIEW"]) }
|
7
|
+
|
8
|
+
test "detect as android" do
|
9
|
+
assert browser.platform.android?
|
10
|
+
end
|
11
|
+
|
12
|
+
test "detect as webview" do
|
13
|
+
assert browser.platform.android_webview?
|
14
|
+
end
|
15
|
+
|
16
|
+
test "non-webviews do not detect as webview" do
|
17
|
+
%w[
|
18
|
+
ANDROID_CUPCAKE
|
19
|
+
ANDROID_DONUT
|
20
|
+
ANDROID_ECLAIR_21
|
21
|
+
ANDROID_FROYO
|
22
|
+
ANDROID_GINGERBREAD
|
23
|
+
ANDROID_HONEYCOMB_30
|
24
|
+
ANDROID_ICECREAM
|
25
|
+
ANDROID_JELLYBEAN_41
|
26
|
+
ANDROID_JELLYBEAN_42
|
27
|
+
ANDROID_JELLYBEAN_43
|
28
|
+
ANDROID_KITKAT
|
29
|
+
ANDROID_LOLLIPOP_50
|
30
|
+
ANDROID_LOLLIPOP_51
|
31
|
+
ANDROID_TV
|
32
|
+
ANDROID_NEXUS_PLAYER
|
33
|
+
FIREFOX_ANDROID
|
34
|
+
].each do |android_type|
|
35
|
+
refute Browser.new(Browser[android_type]).platform.android_webview?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class ElectronTest < Minitest::Test
|
6
|
+
test "detect electron" do
|
7
|
+
browser = Browser.new(Browser["ELECTRON"])
|
8
|
+
|
9
|
+
assert_equal "Electron", browser.name
|
10
|
+
assert browser.electron?
|
11
|
+
assert_equal :electron, browser.id
|
12
|
+
assert_equal "1.4.12", browser.full_version
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class FacebookTest < Minitest::Test
|
6
|
+
test "detects facebook" do
|
7
|
+
browser = Browser.new(Browser["FACEBOOK"])
|
8
|
+
|
9
|
+
assert_equal "Facebook", browser.name
|
10
|
+
assert browser.facebook?
|
11
|
+
assert :facebook, browser.id
|
12
|
+
assert_equal "135.0.0.45.90", browser.full_version
|
13
|
+
assert_equal "135", browser.version
|
14
|
+
end
|
15
|
+
|
16
|
+
test "detects version by range" do
|
17
|
+
browser = Browser.new(Browser["FACEBOOK"])
|
18
|
+
assert browser.facebook?(%w[>=135])
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class OtterBrowserTest < Minitest::Test
|
6
|
+
test "detects Otter Browser" do
|
7
|
+
browser = Browser.new(Browser["OTTER"])
|
8
|
+
|
9
|
+
assert browser.otter?
|
10
|
+
assert_equal "Otter", browser.name
|
11
|
+
assert_equal :otter, browser.id
|
12
|
+
assert_equal "0.9.91", browser.full_version
|
13
|
+
assert_equal "0", browser.version
|
14
|
+
end
|
15
|
+
|
16
|
+
test "detects version by range" do
|
17
|
+
browser = Browser.new(Browser["OTTER"])
|
18
|
+
assert browser.otter?(%w[=0.9.91])
|
19
|
+
end
|
20
|
+
end
|
data/test/unit/qq_test.rb
CHANGED
@@ -18,4 +18,20 @@ class QQTest < Minitest::Test
|
|
18
18
|
assert_equal "QQ Browser", browser.name
|
19
19
|
assert_equal :qq, browser.id
|
20
20
|
end
|
21
|
+
|
22
|
+
test "detects QQ browser for Mac" do
|
23
|
+
browser = Browser.new(Browser["QQ_BROWSER_MAC"])
|
24
|
+
|
25
|
+
assert_equal "4.2.4753.400", browser.full_version
|
26
|
+
assert_equal "QQ Browser", browser.name
|
27
|
+
assert_equal :qq, browser.id
|
28
|
+
end
|
29
|
+
|
30
|
+
test "detects QQ browser lite for Mac" do
|
31
|
+
browser = Browser.new(Browser["QQ_BROWSER_MAC_LITE"])
|
32
|
+
|
33
|
+
assert_equal "1.0.4", browser.full_version
|
34
|
+
assert_equal "QQ Browser", browser.name
|
35
|
+
assert_equal :qq, browser.id
|
36
|
+
end
|
21
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -204,6 +204,8 @@ files:
|
|
204
204
|
- lib/browser/device/xbox_360.rb
|
205
205
|
- lib/browser/device/xbox_one.rb
|
206
206
|
- lib/browser/edge.rb
|
207
|
+
- lib/browser/electron.rb
|
208
|
+
- lib/browser/facebook.rb
|
207
209
|
- lib/browser/firefox.rb
|
208
210
|
- lib/browser/generic.rb
|
209
211
|
- lib/browser/internet_explorer.rb
|
@@ -228,6 +230,7 @@ files:
|
|
228
230
|
- lib/browser/middleware/context/url_methods.rb
|
229
231
|
- lib/browser/nokia.rb
|
230
232
|
- lib/browser/opera.rb
|
233
|
+
- lib/browser/otter.rb
|
231
234
|
- lib/browser/phantom_js.rb
|
232
235
|
- lib/browser/platform.rb
|
233
236
|
- lib/browser/platform/adobe_air.rb
|
@@ -263,6 +266,7 @@ files:
|
|
263
266
|
- test/unit/adobe_air_test.rb
|
264
267
|
- test/unit/aliases_test.rb
|
265
268
|
- test/unit/alipay_test.rb
|
269
|
+
- test/unit/android_app_test.rb
|
266
270
|
- test/unit/android_test.rb
|
267
271
|
- test/unit/blackberry_test.rb
|
268
272
|
- test/unit/bots_test.rb
|
@@ -270,6 +274,8 @@ files:
|
|
270
274
|
- test/unit/console_test.rb
|
271
275
|
- test/unit/device_test.rb
|
272
276
|
- test/unit/edge_test.rb
|
277
|
+
- test/unit/electron_test.rb
|
278
|
+
- test/unit/facebook_test.rb
|
273
279
|
- test/unit/firefox_test.rb
|
274
280
|
- test/unit/generic_test.rb
|
275
281
|
- test/unit/internet_explorer_test.rb
|
@@ -280,6 +286,7 @@ files:
|
|
280
286
|
- test/unit/micro_messenger_test.rb
|
281
287
|
- test/unit/nokia_test.rb
|
282
288
|
- test/unit/opera_test.rb
|
289
|
+
- test/unit/otter_test.rb
|
283
290
|
- test/unit/platform_test.rb
|
284
291
|
- test/unit/proxy_test.rb
|
285
292
|
- test/unit/qq_test.rb
|
@@ -325,6 +332,7 @@ test_files:
|
|
325
332
|
- test/unit/adobe_air_test.rb
|
326
333
|
- test/unit/aliases_test.rb
|
327
334
|
- test/unit/alipay_test.rb
|
335
|
+
- test/unit/android_app_test.rb
|
328
336
|
- test/unit/android_test.rb
|
329
337
|
- test/unit/blackberry_test.rb
|
330
338
|
- test/unit/bots_test.rb
|
@@ -332,6 +340,8 @@ test_files:
|
|
332
340
|
- test/unit/console_test.rb
|
333
341
|
- test/unit/device_test.rb
|
334
342
|
- test/unit/edge_test.rb
|
343
|
+
- test/unit/electron_test.rb
|
344
|
+
- test/unit/facebook_test.rb
|
335
345
|
- test/unit/firefox_test.rb
|
336
346
|
- test/unit/generic_test.rb
|
337
347
|
- test/unit/internet_explorer_test.rb
|
@@ -342,6 +352,7 @@ test_files:
|
|
342
352
|
- test/unit/micro_messenger_test.rb
|
343
353
|
- test/unit/nokia_test.rb
|
344
354
|
- test/unit/opera_test.rb
|
355
|
+
- test/unit/otter_test.rb
|
345
356
|
- test/unit/platform_test.rb
|
346
357
|
- test/unit/proxy_test.rb
|
347
358
|
- test/unit/qq_test.rb
|