From b62d059a706fcba99b0898b1a4dacc9083d92aae Mon Sep 17 00:00:00 2001 From: Simone Mariotti Date: 2017年7月12日 12:16:44 +0200 Subject: [PATCH 1/2] Adding method to detect Safari WebView --- src/Analyser/Header/Useragent/Browser.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Analyser/Header/Useragent/Browser.js b/src/Analyser/Header/Useragent/Browser.js index 1e7f447..cb1023c 100644 --- a/src/Analyser/Header/Useragent/Browser.js +++ b/src/Analyser/Header/Useragent/Browser.js @@ -59,6 +59,7 @@ class Browser { static refineBrowser(ua) { Browser.detectUCEngine.call(this, ua); Browser.detectLegacyNetscape.call(this, ua); + Browser.detectSafariWebView.call(this, ua); return this; } @@ -2408,6 +2409,18 @@ class Browser { this.data.browser.type = Constants.browserType.BROWSER; } } + + static detectSafariWebView(ua) { + if (/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/iu.test(ua) && !this.data.browser.isDetected()) { + this.data.browser.reset({ + using: new Using({ + name: 'Safari WebView', + }), + type: Constants.browserType.UNKNOWN, + stock: true, + }); + } + } } module.exports = Browser; From b87b17a7cbb290fa472a7472f4d17d4866b7c511 Mon Sep 17 00:00:00 2001 From: Simone Mariotti Date: 2017年7月12日 12:38:10 +0200 Subject: [PATCH 2/2] Adding test cases for Safari WebView --- test/data/mobile/os-ios.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/test/data/mobile/os-ios.yaml b/test/data/mobile/os-ios.yaml index de72bec..7590212 100644 --- a/test/data/mobile/os-ios.yaml +++ b/test/data/mobile/os-ios.yaml @@ -132,8 +132,8 @@ readable: 'Safari on an emulator running iOS 4.1' - headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8F192' - result: { engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.3' }, device: { type: emulator, manufacturer: Apple } } - readable: 'an emulator running iOS 4.3' + result: { browser: { using: 'Safari WebView'}, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.3' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari WebView on an emulator running iOS 4.3' - headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3' result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } @@ -466,3 +466,15 @@ headers: 'User-Agent: AtomicLite/7.0.1 CFNetwork/672.1.13 Darwin/14.0.0' result: { browser: { name: Atomic, version: 7.0.1, type: browser }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } readable: 'Atomic 7.0.1 on iOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A403' + result: { browser: { using: Safari WebView }, engine: { name: Webkit, version: '602.1.50' }, os: { name: iOS, version: '10.0.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari WebView on an Apple iPhone running iOS 10.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile' + result: { browser: { using: Safari WebView }, engine: { name: Webkit, version: '533.17.9' }, os: { name: iOS, version: '4.3.2' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Safari WebView on an Apple iPad running iOS 4.3.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPod; CPU iPod OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501' + result: { browser: { using: Safari WebView }, engine: { name: Webkit, version: '537.51.1' }, os: { name: iOS, version: '7.0.2' }, device: { type: media, manufacturer: Apple, model: iPod touch } } + readable: 'Safari WebView on an Apple iPod touch running iOS 7.0.2'

AltStyle によって変換されたページ (->オリジナル) /