diff --git a/src/constants.js b/src/constants.js index 6480e1b..f33f28b 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,12 +1,14 @@ // NOTE: this list must be up-to-date with browsers listed in // test/acceptance/useragentstrings.yml export const BROWSER_ALIASES_MAP = { + AdIdxBot: 'adidxbot', AmazonBot: 'amazonbot', 'Amazon Silk': 'amazon_silk', 'Android Browser': 'android', BaiduSpider: 'baiduspider', Bada: 'bada', BingCrawler: 'bingcrawler', + BingPreview: 'bingpreview', BlackBerry: 'blackberry', 'ChatGPT-User': 'chatgpt_user', Chrome: 'chrome', @@ -33,6 +35,7 @@ export const BROWSER_ALIASES_MAP = { 'Meta-ExternalFetcher': 'meta_externalfetcher', 'Meta-WebIndexer': 'meta_webindexer', 'Microsoft Edge': 'edge', + MSNBot: 'msnbot', 'MZ Browser': 'mz', 'NAVER Whale Browser': 'naver', 'OAI-SearchBot': 'oai_searchbot', @@ -68,12 +71,14 @@ export const BROWSER_ALIASES_MAP = { }; export const BROWSER_MAP = { + adidxbot: 'AdIdxBot', amazonbot: 'AmazonBot', amazon_silk: 'Amazon Silk', android: 'Android Browser', baiduspider: 'BaiduSpider', bada: 'Bada', bingcrawler: 'BingCrawler', + bingpreview: 'BingPreview', blackberry: 'BlackBerry', chatgpt_user: 'ChatGPT-User', chrome: 'Chrome', @@ -100,6 +105,7 @@ export const BROWSER_MAP = { meta_externalagent: 'Meta-ExternalAgent', meta_externalfetcher: 'Meta-ExternalFetcher', meta_webindexer: 'Meta-WebIndexer', + msnbot: 'MSNBot', mz: 'MZ Browser', naver: 'NAVER Whale Browser', oai_searchbot: 'OAI-SearchBot', diff --git a/src/parser-browsers.js b/src/parser-browsers.js index a00dbeb..3a7a020 100644 --- a/src/parser-browsers.js +++ b/src/parser-browsers.js @@ -283,6 +283,57 @@ const browsersList = [ }, }, + /* MSNBot */ + { + test: [/msnbot/i], + describe(ua) { + const browser = { + name: 'MSNBot', + }; + const version = Utils.getFirstMatch(/msnbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* BingPreview */ + { + test: [/bingpreview/i], + describe(ua) { + const browser = { + name: 'BingPreview', + }; + const version = Utils.getFirstMatch(/bingpreview\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* AdIdxBot */ + { + test: [/adidxbot/i], + describe(ua) { + const browser = { + name: 'AdIdxBot', + }; + const version = Utils.getFirstMatch(/adidxbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + /* BingCrawler */ { test: [/bingbot/i], diff --git a/src/parser-platforms.js b/src/parser-platforms.js index 74889a5..1150598 100644 --- a/src/parser-platforms.js +++ b/src/parser-platforms.js @@ -73,6 +73,39 @@ export default [ }, }, + /* MSNBot */ + { + test: [/msnbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Microsoft', + }; + }, + }, + + /* BingPreview */ + { + test: [/bingpreview/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Bing', + }; + }, + }, + + /* AdIdxBot */ + { + test: [/adidxbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Bing', + }; + }, + }, + /* Bingbot */ { test: [/bingbot/i], diff --git a/test/acceptance/useragentstrings.yml b/test/acceptance/useragentstrings.yml index 8f99243..8491465 100644 --- a/test/acceptance/useragentstrings.yml +++ b/test/acceptance/useragentstrings.yml @@ -2904,6 +2904,84 @@ vendor: "Bing" engine: name: "Blink" + MSNBot: + - + ua: "msnbot/2.0b (+http://search.msn.com/msnbot.htm)" + spec: + browser: + name: "MSNBot" + version: "2.0b" + os: {} + platform: + type: "bot" + vendor: "Microsoft" + engine: {} + - + ua: "Mozilla/5.0 (compatible; msnbot/2.1; +http://www.bing.com/bingbot.htm)" + spec: + browser: + name: "MSNBot" + version: "2.1" + os: {} + platform: + type: "bot" + vendor: "Microsoft" + engine: {} + BingPreview: + - + ua: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) BingPreview/1.0b" + spec: + browser: + name: "BingPreview" + version: "1.0b" + os: + name: "Windows" + version: "NT 6.1" + versionName: "7" + platform: + type: "bot" + vendor: "Bing" + engine: + name: "WebKit" + version: "534" + - + ua: "Mozilla/5.0 (compatible; BingPreview/1.0b; +https://www.bing.com/webmasters/help/how-to-verify-bingbot-3905dc26)" + spec: + browser: + name: "BingPreview" + version: "1.0b" + os: {} + platform: + type: "bot" + vendor: "Bing" + engine: {} + AdIdxBot: + - + ua: "Mozilla/5.0 (compatible; adidxbot/2.0; +http://www.bing.com/bingbot.htm)" + spec: + browser: + name: "AdIdxBot" + version: "2.0" + os: {} + platform: + type: "bot" + vendor: "Bing" + engine: {} + - + ua: "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 (compatible; adidxbot/2.0; +http://www.bing.com/bingbot.htm)" + spec: + browser: + name: "AdIdxBot" + version: "2.0" + os: + name: "iOS" + version: "7.0" + platform: + type: "bot" + vendor: "Bing" + engine: + name: "WebKit" + version: "537.51.1" BaiduSpider: - ua: "Baiduspider"