fingerprintjs / BotD

Bot detection library that runs in the browser. Detects automation tools and frameworks. No server required, runs 100% on the client. MIT license, no usage restrictions.
https://fingerprintjs.github.io/BotD/main/
MIT License
1.06k stars 82 forks source link

Add Safari 18 to the list of tested browsers #179

Closed Finesse closed 1 month ago

Finesse commented 2 months ago

I didn't check BotD signals in Safari 18. They look normal from the Fingerprint Pro perspective, but please check by yourself.

xnerhu commented 1 month ago

Safari 18:

{"isError":false,"collectionTime":18,"detectionTime":19,"detectionResult":{"bot":false},"collectedData":{"rtt":{"state":-1,"error":"BotdError: navigator.connection is undefined"},"windowExternal":{"state":-1,"error":"BotdError: window.external is undefined"},"process":{"state":-1,"error":"BotdError: window.process is undefined"},"android":{"value":false,"state":0},"browserKind":{"value":"safari","state":0},"browserEngineKind":{"value":"webkit","state":0},"documentFocus":{"value":true,"state":0},"userAgent":{"value":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15","state":0},"appVersion":{"value":"5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15","state":0},"windowSize":{"value":{"outerWidth":1920,"outerHeight":1055,"innerWidth":1920,"innerHeight":1003},"state":0},"pluginsLength":{"value":5,"state":0},"pluginsArray":{"value":true,"state":0},"errorTrace":{"value":"errorTrace@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:45843\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:39516\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\nmap@[native code]\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:39331\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:51210\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:51687\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:52454\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:52293\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:54754","state":0},"productSub":{"value":"20030107","state":0},"mimeTypesConsistent":{"value":true,"state":0},"evalLength":{"value":37,"state":0},"webGL":{"value":{"vendor":"WebKit","renderer":"WebKit WebGL"},"state":0},"webDriver":{"value":false,"state":0},"languages":{"value":[["en-US"],["en-US"]],"state":0},"documentElementKeys":{"value":["lang"],"state":0},"functionBind":{"value":"function bind() {\n    [native code]\n}","state":0},"distinctiveProps":{"value":{"awesomium":false,"cef":false,"cefsharp":false,"coachjs":false,"fminer":false,"geb":false,"nightmarejs":false,"phantomas":false,"phantomjs":false,"rhino":false,"selenium":false,"webdriverio":false,"webdriver":false,"headless_chrome":false},"state":0},"notificationPermissions":{"value":false,"state":0}},"detectorsResults":{"detectAppVersion":{"bot":false},"detectDocumentAttributes":{"bot":false},"detectErrorTrace":{"bot":false},"detectEvalLengthInconsistency":{"bot":false},"detectFunctionBind":{"bot":false},"detectLanguagesLengthInconsistency":{"bot":false},"detectNotificationPermissions":{"bot":false},"detectPluginsArray":{"bot":false},"detectPluginsLengthInconsistency":{"bot":false},"detectProcess":{"bot":false},"detectUserAgent":{"bot":false},"detectWebDriver":{"bot":false},"detectWebGL":{"bot":false},"detectWindowExternal":{"bot":false},"detectWindowSize":{"bot":false},"detectMimeTypesConsistent":{"bot":false},"detectProductSub":{"bot":false},"detectDistinctiveProperties":{"bot":false}},"debugData":{"browserEngineKind":"webkit","browserKind":"safari","browserVersion":{"major":18,"minor":0},"documentFocus":true,"mozAppearanceSupport":false,"isAndroid":false,"isDesktopWebKit":true,"isIPad":true}}

Safari 17:

{"isError":false,"collectionTime":25,"detectionTime":25,"detectionResult":{"bot":false},"collectedData":{"rtt":{"state":-1,"error":"BotdError: navigator.connection is undefined"},"windowExternal":{"state":-1,"error":"BotdError: window.external is undefined"},"process":{"state":-1,"error":"BotdError: window.process is undefined"},"android":{"value":false,"state":0},"browserKind":{"value":"safari","state":0},"browserEngineKind":{"value":"webkit","state":0},"documentFocus":{"value":true,"state":0},"userAgent":{"value":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3 Safari/605.1.15","state":0},"appVersion":{"value":"5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3 Safari/605.1.15","state":0},"windowSize":{"value":{"outerWidth":1920,"outerHeight":1055,"innerWidth":1920,"innerHeight":1003},"state":0},"pluginsLength":{"value":5,"state":0},"pluginsArray":{"value":true,"state":0},"errorTrace":{"value":"errorTrace@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:45843\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:39516\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\nmap@[native code]\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:39331\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:51210\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:51687\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:52454\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:52293\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:38328\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37349\nPromise@[native code]\ne@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:37109\n@https://fingerprintjs.github.io/BotD/main/main.bundle.js:1:54754","state":0},"productSub":{"value":"20030107","state":0},"mimeTypesConsistent":{"value":true,"state":0},"evalLength":{"value":37,"state":0},"webGL":{"value":{"vendor":"WebKit","renderer":"WebKit WebGL"},"state":0},"webDriver":{"value":false,"state":0},"languages":{"value":[["en-US"],["en-US"]],"state":0},"documentElementKeys":{"value":["lang"],"state":0},"functionBind":{"value":"function bind() {\n    [native code]\n}","state":0},"distinctiveProps":{"value":{"awesomium":false,"cef":false,"cefsharp":false,"coachjs":false,"fminer":false,"geb":false,"nightmarejs":false,"phantomas":false,"phantomjs":false,"rhino":false,"selenium":false,"webdriverio":false,"webdriver":false,"headless_chrome":false},"state":0},"notificationPermissions":{"value":false,"state":0}},"detectorsResults":{"detectAppVersion":{"bot":false},"detectDocumentAttributes":{"bot":false},"detectErrorTrace":{"bot":false},"detectEvalLengthInconsistency":{"bot":false},"detectFunctionBind":{"bot":false},"detectLanguagesLengthInconsistency":{"bot":false},"detectNotificationPermissions":{"bot":false},"detectPluginsArray":{"bot":false},"detectPluginsLengthInconsistency":{"bot":false},"detectProcess":{"bot":false},"detectUserAgent":{"bot":false},"detectWebDriver":{"bot":false},"detectWebGL":{"bot":false},"detectWindowExternal":{"bot":false},"detectWindowSize":{"bot":false},"detectMimeTypesConsistent":{"bot":false},"detectProductSub":{"bot":false},"detectDistinctiveProperties":{"bot":false}},"debugData":{"browserEngineKind":"webkit","browserKind":"safari","browserVersion":{"major":17,"minor":3},"documentFocus":true,"mozAppearanceSupport":false,"isAndroid":false,"isDesktopWebKit":true,"isIPad":true}}

Diff: image

xnerhu commented 1 month ago

Everything is ok. Merge when you want.