1
0
mirror of https://github.com/lancedikson/bowser synced 2026-09-23 20:44:24 +00:00

Add WebView detection for Android and iOS

Co-authored-by: naorpeled <6171622+naorpeled@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-14 14:30:58 +00:00
parent 5cabbe62a4
commit 7307dc6892
3 changed files with 107 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ export const BROWSER_ALIASES_MAP = {
BlackBerry: 'blackberry',
'ChatGPT-User': 'chatgpt_user',
Chrome: 'chrome',
'Chrome WebView': 'chrome_webview',
ClaudeBot: 'claudebot',
Chromium: 'chromium',
Diffbot: 'diffbot',
@@ -26,6 +27,7 @@ export const BROWSER_ALIASES_MAP = {
Googlebot: 'googlebot',
GPTBot: 'gptbot',
'Internet Explorer': 'ie',
'iOS WebView': 'ios_webview',
InternetArchiveCrawler: 'internetarchivecrawler',
'K-Meleon': 'k_meleon',
LibreWolf: 'librewolf',
@@ -82,6 +84,7 @@ export const BROWSER_MAP = {
brave: 'Brave',
chatgpt_user: 'ChatGPT-User',
chrome: 'Chrome',
chrome_webview: 'Chrome WebView',
claudebot: 'ClaudeBot',
chromium: 'Chromium',
diffbot: 'Diffbot',
@@ -98,6 +101,7 @@ export const BROWSER_MAP = {
googlebot: 'Googlebot',
gptbot: 'GPTBot',
ie: 'Internet Explorer',
ios_webview: 'iOS WebView',
internetarchivecrawler: 'InternetArchiveCrawler',
k_meleon: 'K-Meleon',
librewolf: 'LibreWolf',

View File

@@ -1092,6 +1092,25 @@ const browsersList = [
return browser;
},
},
/* Android WebView */
{
test(parser) {
return parser.test(/android/i) && parser.test(/; wv\)/i);
},
describe(ua) {
const browser = {
name: 'Chrome WebView',
};
const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua);
if (version) {
browser.version = version;
}
return browser;
},
},
{
test: [/chrome|crios|crmo/i],
describe(ua) {
@@ -1161,6 +1180,27 @@ const browsersList = [
},
},
/* iOS WebView */
{
test(parser) {
return parser.test(/(iPhone|iPad|iPod)/i)
&& parser.test(/AppleWebKit/i)
&& !parser.test(/Safari/i);
},
describe(ua) {
const browser = {
name: 'iOS WebView',
};
const version = Utils.getFirstMatch(/AppleWebKit\/(\d+(\.?_?\d+)+)/i, ua);
if (version) {
browser.version = version;
}
return browser;
},
},
/* Safari */
{
test: [/safari|applewebkit/i],

View File

@@ -3831,3 +3831,66 @@
engine:
name: "Gecko"
version: "20100101"
Chrome WebView:
-
ua: "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"
spec:
browser:
name: "Chrome WebView"
version: "43.0.2357.65"
os:
name: "Android"
version: "5.1.1"
versionName: "Lollipop"
platform:
type: "mobile"
vendor: "Nexus"
engine:
name: "Blink"
-
ua: "Mozilla/5.0 (Linux; Android 8.0.0; SM-G9300 Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/64.0.3282.137 Mobile Safari/537.36"
spec:
browser:
name: "Chrome WebView"
version: "64.0.3282.137"
os:
name: "Android"
version: "8.0.0"
versionName: "Oreo"
platform:
type: "mobile"
engine:
name: "Blink"
iOS WebView:
-
ua: "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Mobile/14E5239e"
spec:
browser:
name: "iOS WebView"
version: "603.1.23"
os:
name: "iOS"
version: "10.3"
platform:
type: "mobile"
vendor: "Apple"
model: "iPhone"
engine:
name: "WebKit"
version: "603.1.23"
-
ua: "Mozilla/5.0 (iPad; CPU OS 9_0 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A344"
spec:
browser:
name: "iOS WebView"
version: "601.1.46"
os:
name: "iOS"
version: "9.0"
platform:
type: "tablet"
vendor: "Apple"
model: "iPad"
engine:
name: "WebKit"
version: "601.1.46"