fpscanner 0.2.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +639 -55
- package/bin/cli.js +216 -0
- package/dist/crypto-helpers.d.ts +19 -0
- package/dist/crypto-helpers.d.ts.map +1 -0
- package/dist/detections/hasCDP.d.ts +3 -0
- package/dist/detections/hasCDP.d.ts.map +1 -0
- package/dist/detections/hasContextMismatch.d.ts +3 -0
- package/dist/detections/hasContextMismatch.d.ts.map +1 -0
- package/dist/detections/hasHeadlessChromeScreenResolution.d.ts +3 -0
- package/dist/detections/hasHeadlessChromeScreenResolution.d.ts.map +1 -0
- package/dist/detections/hasHighCPUCount.d.ts +3 -0
- package/dist/detections/hasHighCPUCount.d.ts.map +1 -0
- package/dist/detections/hasImpossibleDeviceMemory.d.ts +3 -0
- package/dist/detections/hasImpossibleDeviceMemory.d.ts.map +1 -0
- package/dist/detections/hasMismatchPlatformIframe.d.ts +3 -0
- package/dist/detections/hasMismatchPlatformIframe.d.ts.map +1 -0
- package/dist/detections/hasMismatchPlatformWorker.d.ts +3 -0
- package/dist/detections/hasMismatchPlatformWorker.d.ts.map +1 -0
- package/dist/detections/hasMismatchWebGLInWorker.d.ts +3 -0
- package/dist/detections/hasMismatchWebGLInWorker.d.ts.map +1 -0
- package/dist/detections/hasMissingChromeObject.d.ts +3 -0
- package/dist/detections/hasMissingChromeObject.d.ts.map +1 -0
- package/dist/detections/hasPlaywright.d.ts +3 -0
- package/dist/detections/hasPlaywright.d.ts.map +1 -0
- package/dist/detections/hasSeleniumProperty.d.ts +3 -0
- package/dist/detections/hasSeleniumProperty.d.ts.map +1 -0
- package/dist/detections/hasSwiftshaderRenderer.d.ts +3 -0
- package/dist/detections/hasSwiftshaderRenderer.d.ts.map +1 -0
- package/dist/detections/hasUTCTimezone.d.ts +3 -0
- package/dist/detections/hasUTCTimezone.d.ts.map +1 -0
- package/dist/detections/hasWebdriver.d.ts +3 -0
- package/dist/detections/hasWebdriver.d.ts.map +1 -0
- package/dist/detections/hasWebdriverIframe.d.ts +3 -0
- package/dist/detections/hasWebdriverIframe.d.ts.map +1 -0
- package/dist/detections/hasWebdriverWorker.d.ts +3 -0
- package/dist/detections/hasWebdriverWorker.d.ts.map +1 -0
- package/dist/detections/hasWebdriverWritable.d.ts +3 -0
- package/dist/detections/hasWebdriverWritable.d.ts.map +1 -0
- package/dist/fpScanner.cjs.js +31 -0
- package/dist/fpScanner.es.js +1066 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/signals/browserExtensions.d.ts +5 -0
- package/dist/signals/browserExtensions.d.ts.map +1 -0
- package/dist/signals/browserFeatures.d.ts +14 -0
- package/dist/signals/browserFeatures.d.ts.map +1 -0
- package/dist/signals/canvas.d.ts +6 -0
- package/dist/signals/canvas.d.ts.map +1 -0
- package/dist/signals/cdp.d.ts +2 -0
- package/dist/signals/cdp.d.ts.map +1 -0
- package/dist/signals/cpuCount.d.ts +2 -0
- package/dist/signals/cpuCount.d.ts.map +1 -0
- package/dist/signals/etsl.d.ts +2 -0
- package/dist/signals/etsl.d.ts.map +1 -0
- package/dist/signals/highEntropyValues.d.ts +11 -0
- package/dist/signals/highEntropyValues.d.ts.map +1 -0
- package/dist/signals/iframe.d.ts +9 -0
- package/dist/signals/iframe.d.ts.map +1 -0
- package/dist/signals/internationalization.d.ts +5 -0
- package/dist/signals/internationalization.d.ts.map +1 -0
- package/dist/signals/languages.d.ts +5 -0
- package/dist/signals/languages.d.ts.map +1 -0
- package/dist/signals/maths.d.ts +2 -0
- package/dist/signals/maths.d.ts.map +1 -0
- package/dist/signals/mediaCodecs.d.ts +11 -0
- package/dist/signals/mediaCodecs.d.ts.map +1 -0
- package/dist/signals/mediaQueries.d.ts +13 -0
- package/dist/signals/mediaQueries.d.ts.map +1 -0
- package/dist/signals/memory.d.ts +2 -0
- package/dist/signals/memory.d.ts.map +1 -0
- package/dist/signals/multimediaDevices.d.ts +2 -0
- package/dist/signals/multimediaDevices.d.ts.map +1 -0
- package/dist/signals/navigatorPropertyDescriptors.d.ts +2 -0
- package/dist/signals/navigatorPropertyDescriptors.d.ts.map +1 -0
- package/dist/signals/nonce.d.ts +2 -0
- package/dist/signals/nonce.d.ts.map +1 -0
- package/dist/signals/platform.d.ts +2 -0
- package/dist/signals/platform.d.ts.map +1 -0
- package/dist/signals/playwright.d.ts +2 -0
- package/dist/signals/playwright.d.ts.map +1 -0
- package/dist/signals/plugins.d.ts +9 -0
- package/dist/signals/plugins.d.ts.map +1 -0
- package/dist/signals/screenResolution.d.ts +12 -0
- package/dist/signals/screenResolution.d.ts.map +1 -0
- package/dist/signals/seleniumProperties.d.ts +2 -0
- package/dist/signals/seleniumProperties.d.ts.map +1 -0
- package/dist/signals/time.d.ts +2 -0
- package/dist/signals/time.d.ts.map +1 -0
- package/dist/signals/toSourceError.d.ts +5 -0
- package/dist/signals/toSourceError.d.ts.map +1 -0
- package/dist/signals/url.d.ts +2 -0
- package/dist/signals/url.d.ts.map +1 -0
- package/dist/signals/userAgent.d.ts +2 -0
- package/dist/signals/userAgent.d.ts.map +1 -0
- package/dist/signals/utils.d.ts +11 -0
- package/dist/signals/utils.d.ts.map +1 -0
- package/dist/signals/webGL.d.ts +5 -0
- package/dist/signals/webGL.d.ts.map +1 -0
- package/dist/signals/webdriver.d.ts +2 -0
- package/dist/signals/webdriver.d.ts.map +1 -0
- package/dist/signals/webdriverWritable.d.ts +2 -0
- package/dist/signals/webdriverWritable.d.ts.map +1 -0
- package/dist/signals/webgpu.d.ts +7 -0
- package/dist/signals/webgpu.d.ts.map +1 -0
- package/dist/signals/worker.d.ts +2 -0
- package/dist/signals/worker.d.ts.map +1 -0
- package/dist/types.d.ts +207 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +58 -15
- package/scripts/build-custom.js +246 -0
- package/src/crypto-helpers.ts +50 -0
- package/src/detections/hasCDP.ts +5 -0
- package/src/detections/hasContextMismatch.ts +19 -0
- package/src/detections/hasHeadlessChromeScreenResolution.ts +10 -0
- package/src/detections/hasHighCPUCount.ts +9 -0
- package/src/detections/hasImpossibleDeviceMemory.ts +9 -0
- package/src/detections/hasMismatchPlatformIframe.ts +10 -0
- package/src/detections/hasMismatchPlatformWorker.ts +10 -0
- package/src/detections/hasMismatchWebGLInWorker.ts +13 -0
- package/src/detections/hasMissingChromeObject.ts +6 -0
- package/src/detections/hasPlaywright.ts +5 -0
- package/src/detections/hasSeleniumProperty.ts +5 -0
- package/src/detections/hasSwiftshaderRenderer.ts +5 -0
- package/src/detections/hasUTCTimezone.ts +5 -0
- package/src/detections/hasWebdriver.ts +5 -0
- package/src/detections/hasWebdriverIframe.ts +5 -0
- package/src/detections/hasWebdriverWorker.ts +5 -0
- package/src/detections/hasWebdriverWritable.ts +5 -0
- package/src/globals.d.ts +10 -0
- package/src/index.ts +644 -0
- package/src/signals/browserExtensions.ts +57 -0
- package/src/signals/browserFeatures.ts +24 -0
- package/src/signals/canvas.ts +84 -0
- package/src/signals/cdp.ts +18 -0
- package/src/signals/cpuCount.ts +5 -0
- package/src/signals/etsl.ts +3 -0
- package/src/signals/highEntropyValues.ts +48 -0
- package/src/signals/iframe.ts +34 -0
- package/src/signals/internationalization.ts +24 -0
- package/src/signals/languages.ts +6 -0
- package/src/signals/maths.ts +30 -0
- package/src/signals/mediaCodecs.ts +120 -0
- package/src/signals/mediaQueries.ts +85 -0
- package/src/signals/memory.ts +5 -0
- package/src/signals/multimediaDevices.ts +34 -0
- package/src/signals/navigatorPropertyDescriptors.ts +17 -0
- package/src/signals/nonce.ts +3 -0
- package/src/signals/platform.ts +3 -0
- package/src/signals/playwright.ts +3 -0
- package/src/signals/plugins.ts +70 -0
- package/src/signals/screenResolution.ts +15 -0
- package/src/signals/seleniumProperties.ts +40 -0
- package/src/signals/time.ts +3 -0
- package/src/signals/toSourceError.ts +27 -0
- package/src/signals/url.ts +3 -0
- package/src/signals/userAgent.ts +3 -0
- package/src/signals/utils.ts +29 -0
- package/src/signals/webGL.ts +28 -0
- package/src/signals/webdriver.ts +3 -0
- package/src/signals/webdriverWritable.ts +15 -0
- package/src/signals/webgpu.ts +28 -0
- package/src/signals/worker.ts +77 -0
- package/src/types.ts +237 -0
- package/.babelrc +0 -3
- package/.travis.yml +0 -17
- package/src/fpScanner.js +0 -222
- package/test/test.html +0 -11
- package/test/test.js +0 -116
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Fingerprint, CollectFingerprintOptions } from './types';
|
|
2
|
+
declare class FingerprintScanner {
|
|
3
|
+
private fingerprint;
|
|
4
|
+
constructor();
|
|
5
|
+
private collectSignal;
|
|
6
|
+
/**
|
|
7
|
+
* Generate a JA4-inspired fingerprint scanner ID
|
|
8
|
+
* Format: FS1_<det>_<auto>_<dev>_<brw>_<gfx>_<cod>_<loc>_<ctx>
|
|
9
|
+
*
|
|
10
|
+
* Each section is delimited by '_', allowing partial matching.
|
|
11
|
+
* Sections use the pattern: <bitmask>h<hash> where applicable.
|
|
12
|
+
* Bitmasks are extensible - new boolean fields are appended without breaking existing positions.
|
|
13
|
+
*
|
|
14
|
+
* Sections:
|
|
15
|
+
* - det: fastBotDetectionDetails bitmask (14 bits: headlessChromeScreenResolution, hasWebdriver,
|
|
16
|
+
* hasWebdriverWritable, hasSeleniumProperty, hasCDP, hasPlaywright, hasImpossibleDeviceMemory,
|
|
17
|
+
* hasHighCPUCount, hasMissingChromeObject, hasWebdriverIframe, hasWebdriverWorker,
|
|
18
|
+
* hasMismatchWebGLInWorker, hasMismatchPlatformIframe, hasMismatchPlatformWorker)
|
|
19
|
+
* - auto: automation bitmask (5 bits: webdriver, webdriverWritable, selenium, cdp, playwright) + hash
|
|
20
|
+
* - dev: WIDTHxHEIGHT + cpu + mem + device bitmask + hash of all device signals
|
|
21
|
+
* - brw: features.bitmask + extensions.bitmask + plugins bitmask (3 bits) + hash of browser signals
|
|
22
|
+
* - gfx: canvas bitmask (1 bit: hasModifiedCanvas) + hash of all graphics signals
|
|
23
|
+
* - cod: codecs bitmask (1 bit: hasMediaSource) + hash of all codec hashes
|
|
24
|
+
* - loc: language code (2 chars) + language count + hash of locale signals
|
|
25
|
+
* - ctx: context mismatch bitmask (2 bits: iframe, worker) + hash of all context signals
|
|
26
|
+
*/
|
|
27
|
+
private generateFingerprintScannerId;
|
|
28
|
+
private encryptFingerprint;
|
|
29
|
+
/**
|
|
30
|
+
* Detection rules with name and severity.
|
|
31
|
+
* All rules are currently HIGH severity as they indicate bot-like behavior.
|
|
32
|
+
*/
|
|
33
|
+
private getDetectionRules;
|
|
34
|
+
private runDetectionRules;
|
|
35
|
+
collectFingerprint(options?: CollectFingerprintOptions): Promise<string | Fingerprint>;
|
|
36
|
+
}
|
|
37
|
+
export default FingerprintScanner;
|
|
38
|
+
export * from './types';
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsDA,OAAO,EAAE,WAAW,EAA0C,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGzG,cAAM,kBAAkB;IACpB,OAAO,CAAC,WAAW,CAAc;;YAiLnB,aAAa;IAQ3B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,4BAA4B;YA2LtB,kBAAkB;IAShC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,iBAAiB;IAiCnB,kBAAkB,CAAC,OAAO,GAAE,yBAA6C;CA0HlF;AAED,eAAe,kBAAkB,CAAC;AAClC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserExtensions.d.ts","sourceRoot":"","sources":["../../src/signals/browserExtensions.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB;;gBAGP,MAAM,EAAE;EAmDjC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function browserFeatures(): {
|
|
2
|
+
bitmask: string;
|
|
3
|
+
chrome: boolean;
|
|
4
|
+
brave: boolean;
|
|
5
|
+
applePaySupport: boolean;
|
|
6
|
+
opera: boolean;
|
|
7
|
+
serial: boolean;
|
|
8
|
+
attachShadow: boolean;
|
|
9
|
+
caches: boolean;
|
|
10
|
+
webAssembly: boolean;
|
|
11
|
+
buffer: boolean;
|
|
12
|
+
showModalDialog: boolean;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=browserFeatures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserFeatures.d.ts","sourceRoot":"","sources":["../../src/signals/browserFeatures.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe;;;;;;;;;;;;EAqB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/signals/canvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAuEvC,wBAAsB,MAAM;uBAEO,WAAW,CAAC,OAAO,CAAC;uBACpB,WAAW,CAAC,MAAM,CAAC;GAQrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdp.d.ts","sourceRoot":"","sources":["../../src/signals/cdp.ts"],"names":[],"mappings":"AAEA,wBAAgB,GAAG,oBAelB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpuCount.d.ts","sourceRoot":"","sources":["../../src/signals/cpuCount.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,kBAEvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"etsl.d.ts","sourceRoot":"","sources":["../../src/signals/etsl.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,WAEnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function highEntropyValues(): Promise<{
|
|
2
|
+
architecture: string;
|
|
3
|
+
bitness: string;
|
|
4
|
+
brands: string;
|
|
5
|
+
mobile: string;
|
|
6
|
+
model: string;
|
|
7
|
+
platform: string;
|
|
8
|
+
platformVersion: string;
|
|
9
|
+
uaFullVersion: string;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=highEntropyValues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highEntropyValues.d.ts","sourceRoot":"","sources":["../../src/signals/highEntropyValues.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB;;;;;;;;;GA6CtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframe.d.ts","sourceRoot":"","sources":["../../src/signals/iframe.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM;;;;;;;EA+BrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internationalization.d.ts","sourceRoot":"","sources":["../../src/signals/internationalization.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB;;;EAqBnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/signals/languages.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS;;;EAKxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maths.d.ts","sourceRoot":"","sources":["../../src/signals/maths.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,WA2BpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ERROR, NA } from './utils';
|
|
2
|
+
export declare function mediaCodecs(): {
|
|
3
|
+
audioCanPlayTypeHash: string | typeof NA | typeof ERROR;
|
|
4
|
+
videoCanPlayTypeHash: string | typeof NA | typeof ERROR;
|
|
5
|
+
audioMediaSourceHash: string | typeof NA | typeof ERROR;
|
|
6
|
+
videoMediaSourceHash: string | typeof NA | typeof ERROR;
|
|
7
|
+
rtcAudioCapabilitiesHash: string | typeof NA | typeof ERROR;
|
|
8
|
+
rtcVideoCapabilitiesHash: string | typeof NA | typeof ERROR;
|
|
9
|
+
hasMediaSource: boolean;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=mediaCodecs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaCodecs.d.ts","sourceRoot":"","sources":["../../src/signals/mediaCodecs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAA6B,MAAM,SAAS,CAAC;AAmF/D,wBAAgB,WAAW;0BAES,MAAM,GAAG,OAAO,EAAE,GAAG,OAAO,KAAK;0BACjC,MAAM,GAAG,OAAO,EAAE,GAAG,OAAO,KAAK;0BACjC,MAAM,GAAG,OAAO,EAAE,GAAG,OAAO,KAAK;0BACjC,MAAM,GAAG,OAAO,EAAE,GAAG,OAAO,KAAK;8BAC7B,MAAM,GAAG,OAAO,EAAE,GAAG,OAAO,KAAK;8BACjC,MAAM,GAAG,OAAO,EAAE,GAAG,OAAO,KAAK;;EA6BxE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ERROR, INIT } from './utils';
|
|
2
|
+
export declare function mediaQueries(): {
|
|
3
|
+
prefersColorScheme: string | null | typeof INIT | typeof ERROR;
|
|
4
|
+
prefersReducedMotion: boolean | typeof INIT | typeof ERROR;
|
|
5
|
+
prefersReducedTransparency: boolean | typeof INIT | typeof ERROR;
|
|
6
|
+
colorGamut: string | null | typeof INIT | typeof ERROR;
|
|
7
|
+
pointer: string | null | typeof INIT | typeof ERROR;
|
|
8
|
+
anyPointer: string | null | typeof INIT | typeof ERROR;
|
|
9
|
+
hover: boolean | typeof INIT | typeof ERROR;
|
|
10
|
+
anyHover: boolean | typeof INIT | typeof ERROR;
|
|
11
|
+
colorDepth: number | typeof INIT | typeof ERROR;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=mediaQueries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaQueries.d.ts","sourceRoot":"","sources":["../../src/signals/mediaQueries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAmB,MAAM,SAAS,CAAC;AAEvD,wBAAgB,YAAY;wBAEQ,MAAM,GAAG,IAAI,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;0BACxC,OAAO,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;gCAC9B,OAAO,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;gBACpD,MAAM,GAAG,IAAI,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;aAC7C,MAAM,GAAG,IAAI,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;gBACvC,MAAM,GAAG,IAAI,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;WAC/C,OAAO,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;cACjC,OAAO,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;gBAClC,MAAM,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK;EAwE9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/signals/memory.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,QAErB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multimediaDevices.d.ts","sourceRoot":"","sources":["../../src/signals/multimediaDevices.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB,qBA+BtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigatorPropertyDescriptors.d.ts","sourceRoot":"","sources":["../../src/signals/navigatorPropertyDescriptors.ts"],"names":[],"mappings":"AAAA,wBAAgB,4BAA4B,WAgB3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonce.d.ts","sourceRoot":"","sources":["../../src/signals/nonce.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,WAEpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/signals/platform.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,WAEvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../src/signals/playwright.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,YAEzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SignalValue } from "../types";
|
|
2
|
+
export declare function plugins(): {
|
|
3
|
+
isValidPluginArray: SignalValue<boolean>;
|
|
4
|
+
pluginCount: SignalValue<number>;
|
|
5
|
+
pluginNamesHash: SignalValue<string>;
|
|
6
|
+
pluginConsistency1: SignalValue<boolean>;
|
|
7
|
+
pluginOverflow: SignalValue<boolean>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/signals/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAkDvC,wBAAgB,OAAO;wBAEa,WAAW,CAAC,OAAO,CAAC;iBAC3B,WAAW,CAAC,MAAM,CAAC;qBACf,WAAW,CAAC,MAAM,CAAC;wBAChB,WAAW,CAAC,OAAO,CAAC;oBACxB,WAAW,CAAC,OAAO,CAAC;EAanD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function screenResolution(): {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
pixelDepth: number;
|
|
5
|
+
colorDepth: number;
|
|
6
|
+
availableWidth: number;
|
|
7
|
+
availableHeight: number;
|
|
8
|
+
innerWidth: number;
|
|
9
|
+
innerHeight: number;
|
|
10
|
+
hasMultipleDisplays: any;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=screenResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenResolution.d.ts","sourceRoot":"","sources":["../../src/signals/screenResolution.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB;;;;;;;;;;EAY/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seleniumProperties.d.ts","sourceRoot":"","sources":["../../src/signals/seleniumProperties.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,YAuCpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/signals/time.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,WAEnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSourceError.d.ts","sourceRoot":"","sources":["../../src/signals/toSourceError.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa;;;EAwB5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/signals/url.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,WAEtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userAgent.d.ts","sourceRoot":"","sources":["../../src/signals/userAgent.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,WAExB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const ERROR = "ERROR";
|
|
2
|
+
export declare const INIT = "INIT";
|
|
3
|
+
export declare const NA = "NA";
|
|
4
|
+
export declare const SKIPPED = "SKIPPED";
|
|
5
|
+
export declare const HIGH = "high";
|
|
6
|
+
export declare const LOW = "low";
|
|
7
|
+
export declare const MEDIUM = "medium";
|
|
8
|
+
export declare function hashCode(str: string): string;
|
|
9
|
+
export declare function setObjectValues(object: any, value: any): void;
|
|
10
|
+
export declare function isFirefox(): boolean;
|
|
11
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/signals/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,EAAE,OAAO,CAAC;AACvB,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,IAAI,SAAS,CAAA;AAC1B,eAAO,MAAM,GAAG,QAAQ,CAAA;AACxB,eAAO,MAAM,MAAM,WAAW,CAAA;AAG9B,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UAQnC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAItD;AAGD,wBAAgB,SAAS,YAExB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webGL.d.ts","sourceRoot":"","sources":["../../src/signals/webGL.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK;;;EAyBpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webdriver.d.ts","sourceRoot":"","sources":["../../src/signals/webdriver.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webdriverWritable.d.ts","sourceRoot":"","sources":["../../src/signals/webdriverWritable.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,YAchC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu.d.ts","sourceRoot":"","sources":["../../src/signals/webgpu.ts"],"names":[],"mappings":"AAEA,wBAAsB,MAAM;;;;;GAyB3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/signals/worker.ts"],"names":[],"mappings":"AAEA,wBAAsB,MAAM,qBA0E3B"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { ERROR, INIT, NA, SKIPPED } from './signals/utils';
|
|
2
|
+
export type SignalValue<T> = T | typeof ERROR | typeof INIT | typeof NA | typeof SKIPPED;
|
|
3
|
+
export interface WebGLSignal {
|
|
4
|
+
vendor: SignalValue<string>;
|
|
5
|
+
renderer: SignalValue<string>;
|
|
6
|
+
}
|
|
7
|
+
export interface InternationalizationSignal {
|
|
8
|
+
timezone: SignalValue<string>;
|
|
9
|
+
localeLanguage: SignalValue<string>;
|
|
10
|
+
}
|
|
11
|
+
export interface ScreenResolutionSignal {
|
|
12
|
+
width: SignalValue<number>;
|
|
13
|
+
height: SignalValue<number>;
|
|
14
|
+
pixelDepth: SignalValue<number>;
|
|
15
|
+
colorDepth: SignalValue<number>;
|
|
16
|
+
availableWidth: SignalValue<number>;
|
|
17
|
+
availableHeight: SignalValue<number>;
|
|
18
|
+
innerWidth: SignalValue<number>;
|
|
19
|
+
innerHeight: SignalValue<number>;
|
|
20
|
+
hasMultipleDisplays: SignalValue<boolean>;
|
|
21
|
+
}
|
|
22
|
+
export interface LanguagesSignal {
|
|
23
|
+
languages: SignalValue<string[]>;
|
|
24
|
+
language: SignalValue<string>;
|
|
25
|
+
}
|
|
26
|
+
export interface WebGPUSignal {
|
|
27
|
+
vendor: SignalValue<string>;
|
|
28
|
+
architecture: SignalValue<string>;
|
|
29
|
+
device: SignalValue<string>;
|
|
30
|
+
description: SignalValue<string>;
|
|
31
|
+
}
|
|
32
|
+
export interface IframeSignal {
|
|
33
|
+
webdriver: SignalValue<boolean>;
|
|
34
|
+
userAgent: SignalValue<string>;
|
|
35
|
+
platform: SignalValue<string>;
|
|
36
|
+
memory: SignalValue<number>;
|
|
37
|
+
cpuCount: SignalValue<number>;
|
|
38
|
+
language: SignalValue<string>;
|
|
39
|
+
}
|
|
40
|
+
export interface WebWorkerSignal {
|
|
41
|
+
webdriver: SignalValue<boolean>;
|
|
42
|
+
userAgent: SignalValue<string>;
|
|
43
|
+
platform: SignalValue<string>;
|
|
44
|
+
memory: SignalValue<number>;
|
|
45
|
+
cpuCount: SignalValue<number>;
|
|
46
|
+
language: SignalValue<string>;
|
|
47
|
+
vendor: SignalValue<string>;
|
|
48
|
+
renderer: SignalValue<string>;
|
|
49
|
+
}
|
|
50
|
+
export interface BrowserExtensionsSignal {
|
|
51
|
+
bitmask: SignalValue<string>;
|
|
52
|
+
extensions: SignalValue<string[]>;
|
|
53
|
+
}
|
|
54
|
+
export interface BrowserFeaturesSignal {
|
|
55
|
+
bitmask: SignalValue<string>;
|
|
56
|
+
chrome: SignalValue<boolean>;
|
|
57
|
+
brave: SignalValue<boolean>;
|
|
58
|
+
applePaySupport: SignalValue<boolean>;
|
|
59
|
+
opera: SignalValue<boolean>;
|
|
60
|
+
serial: SignalValue<boolean>;
|
|
61
|
+
attachShadow: SignalValue<boolean>;
|
|
62
|
+
caches: SignalValue<boolean>;
|
|
63
|
+
webAssembly: SignalValue<boolean>;
|
|
64
|
+
buffer: SignalValue<boolean>;
|
|
65
|
+
showModalDialog: SignalValue<boolean>;
|
|
66
|
+
}
|
|
67
|
+
export interface MediaQueriesSignal {
|
|
68
|
+
prefersColorScheme: SignalValue<string | null>;
|
|
69
|
+
prefersReducedMotion: SignalValue<boolean>;
|
|
70
|
+
prefersReducedTransparency: SignalValue<boolean>;
|
|
71
|
+
colorGamut: SignalValue<string | null>;
|
|
72
|
+
pointer: SignalValue<string | null>;
|
|
73
|
+
anyPointer: SignalValue<string | null>;
|
|
74
|
+
hover: SignalValue<boolean>;
|
|
75
|
+
anyHover: SignalValue<boolean>;
|
|
76
|
+
colorDepth: SignalValue<number>;
|
|
77
|
+
}
|
|
78
|
+
export interface ToSourceErrorSignal {
|
|
79
|
+
toSourceError: SignalValue<string>;
|
|
80
|
+
hasToSource: SignalValue<boolean>;
|
|
81
|
+
}
|
|
82
|
+
export interface CanvasSignal {
|
|
83
|
+
hasModifiedCanvas: SignalValue<boolean>;
|
|
84
|
+
canvasFingerprint: SignalValue<string>;
|
|
85
|
+
}
|
|
86
|
+
export interface HighEntropyValuesSignal {
|
|
87
|
+
architecture: SignalValue<string>;
|
|
88
|
+
bitness: SignalValue<string>;
|
|
89
|
+
brands: SignalValue<string[]>;
|
|
90
|
+
mobile: SignalValue<boolean>;
|
|
91
|
+
model: SignalValue<string>;
|
|
92
|
+
platform: SignalValue<string>;
|
|
93
|
+
platformVersion: SignalValue<string>;
|
|
94
|
+
uaFullVersion: SignalValue<string>;
|
|
95
|
+
}
|
|
96
|
+
export interface PluginsSignal {
|
|
97
|
+
isValidPluginArray: SignalValue<boolean>;
|
|
98
|
+
pluginCount: SignalValue<number>;
|
|
99
|
+
pluginNamesHash: SignalValue<string>;
|
|
100
|
+
pluginConsistency1: SignalValue<boolean>;
|
|
101
|
+
pluginOverflow: SignalValue<boolean>;
|
|
102
|
+
}
|
|
103
|
+
export interface MultimediaDevicesSignal {
|
|
104
|
+
speakers: SignalValue<number>;
|
|
105
|
+
microphones: SignalValue<number>;
|
|
106
|
+
webcams: SignalValue<number>;
|
|
107
|
+
}
|
|
108
|
+
export interface MediaCodecsSignal {
|
|
109
|
+
audioCanPlayTypeHash: SignalValue<string>;
|
|
110
|
+
videoCanPlayTypeHash: SignalValue<string>;
|
|
111
|
+
audioMediaSourceHash: SignalValue<string>;
|
|
112
|
+
videoMediaSourceHash: SignalValue<string>;
|
|
113
|
+
rtcAudioCapabilitiesHash: SignalValue<string>;
|
|
114
|
+
rtcVideoCapabilitiesHash: SignalValue<string>;
|
|
115
|
+
hasMediaSource: SignalValue<boolean>;
|
|
116
|
+
}
|
|
117
|
+
export interface AutomationSignals {
|
|
118
|
+
webdriver: SignalValue<boolean>;
|
|
119
|
+
webdriverWritable: SignalValue<boolean>;
|
|
120
|
+
selenium: SignalValue<boolean>;
|
|
121
|
+
cdp: SignalValue<boolean>;
|
|
122
|
+
playwright: SignalValue<boolean>;
|
|
123
|
+
navigatorPropertyDescriptors: SignalValue<string>;
|
|
124
|
+
}
|
|
125
|
+
export interface DeviceSignals {
|
|
126
|
+
cpuCount: SignalValue<number>;
|
|
127
|
+
memory: SignalValue<number>;
|
|
128
|
+
platform: SignalValue<string>;
|
|
129
|
+
screenResolution: ScreenResolutionSignal;
|
|
130
|
+
multimediaDevices: MultimediaDevicesSignal;
|
|
131
|
+
mediaQueries: MediaQueriesSignal;
|
|
132
|
+
}
|
|
133
|
+
export interface BrowserSignals {
|
|
134
|
+
userAgent: SignalValue<string>;
|
|
135
|
+
features: BrowserFeaturesSignal;
|
|
136
|
+
plugins: PluginsSignal;
|
|
137
|
+
extensions: BrowserExtensionsSignal;
|
|
138
|
+
highEntropyValues: HighEntropyValuesSignal;
|
|
139
|
+
etsl: SignalValue<number>;
|
|
140
|
+
maths: SignalValue<string>;
|
|
141
|
+
toSourceError: ToSourceErrorSignal;
|
|
142
|
+
}
|
|
143
|
+
export interface GraphicsSignals {
|
|
144
|
+
webGL: WebGLSignal;
|
|
145
|
+
webgpu: WebGPUSignal;
|
|
146
|
+
canvas: CanvasSignal;
|
|
147
|
+
}
|
|
148
|
+
export interface LocaleSignals {
|
|
149
|
+
internationalization: InternationalizationSignal;
|
|
150
|
+
languages: LanguagesSignal;
|
|
151
|
+
}
|
|
152
|
+
export interface ContextsSignals {
|
|
153
|
+
iframe: IframeSignal;
|
|
154
|
+
webWorker: WebWorkerSignal;
|
|
155
|
+
}
|
|
156
|
+
export interface FingerprintSignals {
|
|
157
|
+
automation: AutomationSignals;
|
|
158
|
+
device: DeviceSignals;
|
|
159
|
+
browser: BrowserSignals;
|
|
160
|
+
graphics: GraphicsSignals;
|
|
161
|
+
codecs: MediaCodecsSignal;
|
|
162
|
+
locale: LocaleSignals;
|
|
163
|
+
contexts: ContextsSignals;
|
|
164
|
+
}
|
|
165
|
+
export interface FastBotDetectionDetails {
|
|
166
|
+
headlessChromeScreenResolution: DetectionRuleResult;
|
|
167
|
+
hasWebdriver: DetectionRuleResult;
|
|
168
|
+
hasWebdriverWritable: DetectionRuleResult;
|
|
169
|
+
hasSeleniumProperty: DetectionRuleResult;
|
|
170
|
+
hasCDP: DetectionRuleResult;
|
|
171
|
+
hasPlaywright: DetectionRuleResult;
|
|
172
|
+
hasImpossibleDeviceMemory: DetectionRuleResult;
|
|
173
|
+
hasHighCPUCount: DetectionRuleResult;
|
|
174
|
+
hasMissingChromeObject: DetectionRuleResult;
|
|
175
|
+
hasWebdriverIframe: DetectionRuleResult;
|
|
176
|
+
hasWebdriverWorker: DetectionRuleResult;
|
|
177
|
+
hasMismatchWebGLInWorker: DetectionRuleResult;
|
|
178
|
+
hasMismatchPlatformIframe: DetectionRuleResult;
|
|
179
|
+
hasMismatchPlatformWorker: DetectionRuleResult;
|
|
180
|
+
hasSwiftshaderRenderer: DetectionRuleResult;
|
|
181
|
+
hasUTCTimezone: DetectionRuleResult;
|
|
182
|
+
}
|
|
183
|
+
export interface Fingerprint {
|
|
184
|
+
signals: FingerprintSignals;
|
|
185
|
+
fsid: string;
|
|
186
|
+
nonce: string;
|
|
187
|
+
time: SignalValue<number>;
|
|
188
|
+
url: string;
|
|
189
|
+
fastBotDetection: boolean;
|
|
190
|
+
fastBotDetectionDetails: FastBotDetectionDetails;
|
|
191
|
+
}
|
|
192
|
+
export type DetectionSeverity = 'low' | 'medium' | 'high';
|
|
193
|
+
export interface DetectionRuleResult {
|
|
194
|
+
detected: boolean;
|
|
195
|
+
severity: DetectionSeverity;
|
|
196
|
+
}
|
|
197
|
+
export interface DetectionRule {
|
|
198
|
+
name: string;
|
|
199
|
+
severity: DetectionSeverity;
|
|
200
|
+
test: (fingerprint: Fingerprint) => boolean;
|
|
201
|
+
}
|
|
202
|
+
export interface CollectFingerprintOptions {
|
|
203
|
+
encrypt?: boolean;
|
|
204
|
+
timeout?: number;
|
|
205
|
+
skipWorker?: boolean;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|