From f7f64a31eae0ca20d9cfa28bd2732e1a110ca16a Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Tue, 11 Mar 2025 17:50:36 +0700 Subject: [PATCH] [extensions] Detect OS from WhatsApp user agent --- src/extensions/ua-parser-extensions.js | 8 ++++++++ test/unit/extensions.js | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/src/extensions/ua-parser-extensions.js b/src/extensions/ua-parser-extensions.js index 7c24624..e8e3f6e 100644 --- a/src/extensions/ua-parser-extensions.js +++ b/src/extensions/ua-parser-extensions.js @@ -244,6 +244,11 @@ const Fetchers = Object.freeze({ /((?:better uptime |telegram|vercel)bot|cohere-ai|feedfetcher-google|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|yandex(?:sitelinks|userproxy))/i ], [NAME, [TYPE, FETCHER]], + ], + + os : [ + [/whatsapp\/[\d\.]+ (a|i)/i], + [[NAME, os => os == 'A' ? 'Android' : 'iOS' ]] ] }); @@ -362,6 +367,9 @@ const Bots = Object.freeze({ ...Crawlers.browser, ...Fetchers.browser, ...Libraries.browser + ], + os : [ + ...Fetchers.os ] }); diff --git a/test/unit/extensions.js b/test/unit/extensions.js index 417ed8a..9f1fa96 100644 --- a/test/unit/extensions.js +++ b/test/unit/extensions.js @@ -61,6 +61,12 @@ describe('Extensions', () => { major: '1', type: 'fetcher' }); + + const whatsapp = "WhatsApp/2.0 A"; + assert.deepEqual(new UAParser(whatsapp, Fetchers).getOS(), { + name : 'Android', + version : undefined + }); }); describe('Merge', () => {