From a96a70a93bfb2fbe020748e84f9a9d9cd570fb6b Mon Sep 17 00:00:00 2001 From: Liviu-Mihail Concioiu Date: Sun, 4 Aug 2024 16:24:03 +0200 Subject: [PATCH 1/8] Adds detection for Jaunt --- Tests/Parser/Client/fixtures/library.yml | 6 ++++++ regexes/client/libraries.yml | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/Tests/Parser/Client/fixtures/library.yml b/Tests/Parser/Client/fixtures/library.yml index 8ce5a0b907..59edccd487 100644 --- a/Tests/Parser/Client/fixtures/library.yml +++ b/Tests/Parser/Client/fixtures/library.yml @@ -689,3 +689,9 @@ type: library name: IPinfo version: 3.0.0 +- + user_agent: Jaunt/1.5 + client: + type: library + name: Jaunt + version: "1.5" diff --git a/regexes/client/libraries.yml b/regexes/client/libraries.yml index 1e28b3acbc..d271724044 100644 --- a/regexes/client/libraries.yml +++ b/regexes/client/libraries.yml @@ -124,6 +124,12 @@ version: '$1' url: 'https://www.slimerjs.org/' +# Jaunt +- regex: 'Jaunt/(\d+[\.\d]+)' + name: 'Jaunt' + version: '$1' + url: 'https://jaunt-api.com/' + - regex: 'Wget(?:/(\d+[\.\d]+))?' name: 'Wget' version: '$1' From a1a19b732c8316c513ce982252218f236d26c88d Mon Sep 17 00:00:00 2001 From: Liviu-Mihail Concioiu Date: Sat, 3 Aug 2024 16:40:16 +0200 Subject: [PATCH 2/8] Improves detection --- DeviceDetector.php | 2 +- Tests/Parser/Client/fixtures/library.yml | 6 ++++++ Tests/fixtures/podcasting.yml | 18 ------------------ regexes/client/libraries.yml | 6 +++--- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/DeviceDetector.php b/DeviceDetector.php index d08d827034..6eda7ae819 100644 --- a/DeviceDetector.php +++ b/DeviceDetector.php @@ -199,8 +199,8 @@ public function __construct(string $userAgent = '', ?ClientHints $clientHints = $this->addClientParser(new MobileApp()); $this->addClientParser(new MediaPlayer()); $this->addClientParser(new PIM()); - $this->addClientParser(new Browser()); $this->addClientParser(new Library()); + $this->addClientParser(new Browser()); $this->addDeviceParser(new HbbTv()); $this->addDeviceParser(new ShellTv()); diff --git a/Tests/Parser/Client/fixtures/library.yml b/Tests/Parser/Client/fixtures/library.yml index 59edccd487..311c16ba58 100644 --- a/Tests/Parser/Client/fixtures/library.yml +++ b/Tests/Parser/Client/fixtures/library.yml @@ -695,3 +695,9 @@ type: library name: Jaunt version: "1.5" +- + user_agent: Android.LVLDM + client: + type: library + name: Android License Verification Library + version: "" diff --git a/Tests/fixtures/podcasting.yml b/Tests/fixtures/podcasting.yml index 5da29c49ca..96b90a0474 100644 --- a/Tests/fixtures/podcasting.yml +++ b/Tests/fixtures/podcasting.yml @@ -494,24 +494,6 @@ model: "" os_family: Unknown browser_family: Unknown -- - user_agent: Android.LVLDM - os: - name: Android - version: "" - platform: "" - client: - type: browser - name: Android Browser - version: "" - engine: WebKit - engine_version: "" - device: - type: "" - brand: "" - model: "" - os_family: Android - browser_family: Android Browser - user_agent: PRDownloader os: [ ] diff --git a/regexes/client/libraries.yml b/regexes/client/libraries.yml index d271724044..223b12aa59 100644 --- a/regexes/client/libraries.yml +++ b/regexes/client/libraries.yml @@ -71,7 +71,7 @@ url: 'https://azure.microsoft.com/en-us/products/data-factory/' # Dart -- regex: 'Dart(?:/(\d+[\.\d]+))?' +- regex: 'Dart/(\d+[\.\d]+)' name: 'Dart' version: '$1' url: 'https://dart.dev/' @@ -168,7 +168,7 @@ name: 'Java HTTP Client' version: '$1' -- regex: 'Java(?:/?(\d+[\.\d]+))?' +- regex: 'Java/?(\d+[\.\d]+)' name: 'Java' version: '$1' @@ -221,7 +221,7 @@ version: '$1' url: 'https://github.com/lostisland/faraday' -- regex: '(?:Go-http-client|Go )/?(?:(\d+[\.\d]+))?(?: package http)?' +- regex: '(?:Go-http-client|^Go )/?(?:(\d+[\.\d]+))?(?: package http)?' name: 'Go-http-client' version: '$1' From 469a3c19adfe230b8d01846bbdc848bcf0bba2cc Mon Sep 17 00:00:00 2001 From: Liviu-Mihail Concioiu Date: Sat, 3 Aug 2024 17:46:04 +0200 Subject: [PATCH 3/8] Move Cypress to libraries --- Tests/Parser/Client/fixtures/library.yml | 6 ++++++ Tests/fixtures/bots.yml | 9 --------- regexes/bots.yml | 8 -------- regexes/client/libraries.yml | 6 ++++++ regexes/client/mobile_apps.yml | 2 +- 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/Tests/Parser/Client/fixtures/library.yml b/Tests/Parser/Client/fixtures/library.yml index 311c16ba58..b6de432da8 100644 --- a/Tests/Parser/Client/fixtures/library.yml +++ b/Tests/Parser/Client/fixtures/library.yml @@ -701,3 +701,9 @@ type: library name: Android License Verification Library version: "" +- + user_agent: Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Cypress/12.1.0 Chrome/106.0.5249.51 Electron/21.0.0 Safari/537.36 + client: + type: library + name: Cypress + version: 12.1.0 diff --git a/Tests/fixtures/bots.yml b/Tests/fixtures/bots.yml index 265c3cec67..267baa0804 100644 --- a/Tests/fixtures/bots.yml +++ b/Tests/fixtures/bots.yml @@ -7008,15 +7008,6 @@ producer: name: Ghost Inspector, Inc. url: https://www.ghostinspector.com/ -- - user_agent: Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Cypress/12.1.0 Chrome/106.0.5249.51 Electron/21.0.0 Safari/537.36 - bot: - name: Cypress - category: Site Monitor - url: https://github.com/cypress-io/cypress - producer: - name: Cypress.io, Inc. - url: https://www.cypress.io/ - user_agent: Google-Area120-PrivacyPolicyFetcher bot: diff --git a/regexes/bots.yml b/regexes/bots.yml index a0af91219d..51c7f38f6f 100644 --- a/regexes/bots.yml +++ b/regexes/bots.yml @@ -4211,14 +4211,6 @@ name: 'Ghost Inspector, Inc.' url: 'https://www.ghostinspector.com/' -- regex: 'Cypress/[\d.]+' - name: 'Cypress' - category: 'Site Monitor' - url: 'https://github.com/cypress-io/cypress' - producer: - name: 'Cypress.io, Inc.' - url: 'https://www.cypress.io/' - - regex: 'Google-Apps-Script' name: 'Google Apps Script' category: 'Service Agent' diff --git a/regexes/client/libraries.yml b/regexes/client/libraries.yml index 223b12aa59..c55deb69be 100644 --- a/regexes/client/libraries.yml +++ b/regexes/client/libraries.yml @@ -130,6 +130,12 @@ version: '$1' url: 'https://jaunt-api.com/' +# Cypress +- regex: 'Cypress/(\d+[\.\d]+)' + name: 'Cypress' + version: '$1' + url: 'https://github.com/cypress-io/cypress' + - regex: 'Wget(?:/(\d+[\.\d]+))?' name: 'Wget' version: '$1' diff --git a/regexes/client/mobile_apps.yml b/regexes/client/mobile_apps.yml index 81895f9d3a..cb1fbfa910 100644 --- a/regexes/client/mobile_apps.yml +++ b/regexes/client/mobile_apps.yml @@ -2501,7 +2501,7 @@ version: '$1' # Electron generic apps -- regex: ' (?!(?:AppleWebKit|brave|Franz|Mailspring|Notion|Basecamp|Evernote|catalyst|ramboxpro|BlueMail|BeakerBrowser|TweakStyle|Colibri|Polypane|VibeMate|(?:d|LT|Glass|Sushi|Flash|OhHai)Browser|Sizzy))([a-z0-9]*)(?:-desktop|-electron-app)?/(\d+\.[\d.]+).*Electron/' +- regex: ' (?!(?:AppleWebKit|brave|Cypress|Franz|Mailspring|Notion|Basecamp|Evernote|catalyst|ramboxpro|BlueMail|BeakerBrowser|Dezor|TweakStyle|Colibri|Polypane|VibeMate|(?:d|LT|Glass|Sushi|Flash|OhHai)Browser|Sizzy))([a-z0-9]*)(?:-desktop|-electron-app)?/(\d+\.[\d.]+).*Electron/' name: '$1' version: '$2' From 0cd0d51b0a82b6f59a6baca37e24eb8e6c3d092e Mon Sep 17 00:00:00 2001 From: Liviu-Mihail Concioiu Date: Thu, 8 Aug 2024 13:15:14 +0200 Subject: [PATCH 4/8] Remove Dezor from this PR --- regexes/client/mobile_apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regexes/client/mobile_apps.yml b/regexes/client/mobile_apps.yml index cb1fbfa910..1beb020715 100644 --- a/regexes/client/mobile_apps.yml +++ b/regexes/client/mobile_apps.yml @@ -2501,7 +2501,7 @@ version: '$1' # Electron generic apps -- regex: ' (?!(?:AppleWebKit|brave|Cypress|Franz|Mailspring|Notion|Basecamp|Evernote|catalyst|ramboxpro|BlueMail|BeakerBrowser|Dezor|TweakStyle|Colibri|Polypane|VibeMate|(?:d|LT|Glass|Sushi|Flash|OhHai)Browser|Sizzy))([a-z0-9]*)(?:-desktop|-electron-app)?/(\d+\.[\d.]+).*Electron/' +- regex: ' (?!(?:AppleWebKit|brave|Cypress|Franz|Mailspring|Notion|Basecamp|Evernote|catalyst|ramboxpro|BlueMail|BeakerBrowser|TweakStyle|Colibri|Polypane|VibeMate|(?:d|LT|Glass|Sushi|Flash|OhHai)Browser|Sizzy))([a-z0-9]*)(?:-desktop|-electron-app)?/(\d+\.[\d.]+).*Electron/' name: '$1' version: '$2' From 1c65279f6ebfc372dc27c61ba0a7bb1e8f672b58 Mon Sep 17 00:00:00 2001 From: Liviu-Mihail Concioiu Date: Mon, 26 Aug 2024 11:20:27 +0200 Subject: [PATCH 5/8] Adds detection for PhantomJS --- Tests/Parser/Client/fixtures/library.yml | 6 ++++++ regexes/client/libraries.yml | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/Tests/Parser/Client/fixtures/library.yml b/Tests/Parser/Client/fixtures/library.yml index b6de432da8..434f640ac2 100644 --- a/Tests/Parser/Client/fixtures/library.yml +++ b/Tests/Parser/Client/fixtures/library.yml @@ -707,3 +707,9 @@ type: library name: Cypress version: 12.1.0 +- + user_agent: Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1 + client: + type: library + name: PhantomJS + version: 2.1.1 diff --git a/regexes/client/libraries.yml b/regexes/client/libraries.yml index c55deb69be..c143b2bcfa 100644 --- a/regexes/client/libraries.yml +++ b/regexes/client/libraries.yml @@ -5,6 +5,11 @@ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later ############### +- regex: 'PhantomJS(?:/(\d+[\.\d]+))?' + name: 'PhantomJS' + version: '$1' + url: 'https://phantomjs.org/' + - regex: 'IPinfoClient/.*/(\d+[\.\d]+)' name: 'IPinfo' version: '$1' From fb2f3281eb259174c5c5929ba387112687c26294 Mon Sep 17 00:00:00 2001 From: Liviu-Mihail Concioiu Date: Tue, 10 Sep 2024 15:09:01 +0200 Subject: [PATCH 6/8] Move back browser before library --- DeviceDetector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DeviceDetector.php b/DeviceDetector.php index 6eda7ae819..d08d827034 100644 --- a/DeviceDetector.php +++ b/DeviceDetector.php @@ -199,8 +199,8 @@ public function __construct(string $userAgent = '', ?ClientHints $clientHints = $this->addClientParser(new MobileApp()); $this->addClientParser(new MediaPlayer()); $this->addClientParser(new PIM()); - $this->addClientParser(new Library()); $this->addClientParser(new Browser()); + $this->addClientParser(new Library()); $this->addDeviceParser(new HbbTv()); $this->addDeviceParser(new ShellTv()); From fd228b4b81c2e14caba9d6389c70b740ea91d922 Mon Sep 17 00:00:00 2001 From: Liviu-Mihail Concioiu Date: Tue, 10 Sep 2024 15:09:31 +0200 Subject: [PATCH 7/8] Improves detection for Android Browser --- regexes/client/browsers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regexes/client/browsers.yml b/regexes/client/browsers.yml index 5eadae3660..1651323a45 100644 --- a/regexes/client/browsers.yml +++ b/regexes/client/browsers.yml @@ -3234,7 +3234,7 @@ version: '$1' #Android Browser -- regex: '(? Date: Tue, 10 Sep 2024 15:20:16 +0200 Subject: [PATCH 8/8] Improves detection for Cypress and PhantomJS --- Parser/Client/Browser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Parser/Client/Browser.php b/Parser/Client/Browser.php index 372af97c1a..ccf4f3bf83 100644 --- a/Parser/Client/Browser.php +++ b/Parser/Client/Browser.php @@ -1053,7 +1053,7 @@ public function parse(): ?array } } - if (empty($name)) { + if (empty($name) || 1 === \preg_match('/Cypress|PhantomJS/', $this->userAgent)) { return []; }