From 6e26e38247f35e31558daabaf608620eb2451b8a Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Mon, 14 Aug 2023 12:28:36 +0700 Subject: [PATCH] [extension] Add Axios, jsdom, Scrapy. Also fixes #627 #156 #217 #227 Axios: `axios/VERSION` https://www.zenrows.com/blog/axios-user-agent#what-is-axios-user-agent JSDOM: `Mozilla/5.0 (${process.platform || "unknown OS"}) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/${jsdomVersion}` https://github.com/jsdom/jsdom Scrapy: `Scrapy/VERSION (+https://scrapy.org)` https://docs.scrapy.org/en/master/topics/settings.html --- src/extensions/ua-parser-extensions.js | 10 +++++++++- test/mocha-test-extension.js | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/extensions/ua-parser-extensions.js b/src/extensions/ua-parser-extensions.js index b7ce27e..3ace7c1 100644 --- a/src/extensions/ua-parser-extensions.js +++ b/src/extensions/ua-parser-extensions.js @@ -230,11 +230,19 @@ const MediaPlayers = Object.freeze({ ] }); +const Modules = Object.freeze({ + browser : [ + // Axios/jsdom/Scrapy + [/\b(axios|jsdom|scrapy)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'module']] + ] +}); + module.exports = { Apps, Bots, CLIs, ExtraDevices, Emails, - MediaPlayers + MediaPlayers, + Modules }; \ No newline at end of file diff --git a/test/mocha-test-extension.js b/test/mocha-test-extension.js index e83ad14..605bf63 100644 --- a/test/mocha-test-extension.js +++ b/test/mocha-test-extension.js @@ -17,6 +17,9 @@ describe('Bots', () => { const facebookBot = 'Mozilla/5.0 (compatible; FacebookBot/1.0; +https://developers.facebook.com/docs/sharing/webmasters/facebookbot/)'; const outlook = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Microsoft Outlook 16.0.9126; Microsoft Outlook 16.0.9126; ms-office; MSOffice 16)'; const thunderbird = 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0'; + const axios = 'axios/1.3.5'; + const jsdom = 'Mozilla/5.0 (darwin) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/20.0.3'; + const scrapy = 'Scrapy/1.5.0 (+https://scrapy.org)'; const botParser = new UAParser(Ext.Bots); assert.deepEqual(botParser.setUA(googleBot).getBrowser(), {name: "Googlebot-Video", version: "1.0", major: "1", type: "bot"}); @@ -34,6 +37,11 @@ describe('Bots', () => { const emailParser = new UAParser(Ext.Emails); assert.deepEqual(emailParser.setUA(outlook).getBrowser(), {name: "Microsoft Outlook", version: "16.0.9126", major: "16", type: "email"}); assert.deepEqual(emailParser.setUA(thunderbird).getBrowser(), {name: "Thunderbird", version: "78.13.0", major: "78", type: "email"}); + + const moduleParser = new UAParser(Ext.Modules); + assert.deepEqual(moduleParser.setUA(axios).getBrowser(), {name: "axios", version: "1.3.5", major: "1", type: "module"}); + assert.deepEqual(moduleParser.setUA(jsdom).getBrowser(), {name: "jsdom", version: "20.0.3", major: "20", type: "module"}); + assert.deepEqual(moduleParser.setUA(scrapy).getBrowser(), {name: "Scrapy", version: "1.5.0", major: "1", type: "module"}); }); });