jumpy-lion 0.0.41 → 0.0.43
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/dist/browser-controller.d.ts.map +1 -1
- package/dist/browser-controller.js +102 -16
- package/dist/browser-controller.js.map +1 -1
- package/dist/browser-plugin.d.ts +20 -1
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +21 -1
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/browser.d.ts +22 -1
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +77 -5
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/browser-profiles/chrome/default.d.ts +116 -0
- package/dist/browser-profiles/chrome/default.d.ts.map +1 -1
- package/dist/browser-profiles/chrome/default.js +118 -1
- package/dist/browser-profiles/chrome/default.js.map +1 -1
- package/dist/browser-profiles/chrome/populate-profile.d.ts +76 -0
- package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -0
- package/dist/browser-profiles/chrome/populate-profile.js +300 -0
- package/dist/browser-profiles/chrome/populate-profile.js.map +1 -0
- package/dist/browser-profiles/index.d.ts +1 -0
- package/dist/browser-profiles/index.d.ts.map +1 -1
- package/dist/browser-profiles/index.js +2 -0
- package/dist/browser-profiles/index.js.map +1 -1
- package/dist/crawler.d.ts +32 -1
- package/dist/crawler.d.ts.map +1 -1
- package/dist/crawler.js +7 -0
- package/dist/crawler.js.map +1 -1
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts +87 -0
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +1 -0
- package/dist/fingerprinting/custom-fingerprint-injector.js +342 -0
- package/dist/fingerprinting/custom-fingerprint-injector.js.map +1 -0
- package/dist/fingerprinting/fingerprint-injector.d.ts +40 -2
- package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.js +452 -44
- package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js +11 -1
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js +11 -1
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts +14 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js +776 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js +11 -1
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +14 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +643 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js +11 -1
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts +17 -1
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.js +21 -1
- package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +45 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +291 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +153 -90
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js +4 -5
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js +11 -1
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +413 -70
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js +355 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts +12 -3
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js +261 -71
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +55 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +380 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts +8 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +756 -71
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js +368 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js +438 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +7 -1
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +158 -58
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/utils.d.ts +12 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.js +517 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +51 -10
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js +11 -1
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +11 -1
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -1
- package/dist/page.d.ts +12 -0
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +35 -3
- package/dist/page.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/fingerprinting/canvas-fingerprint.d.ts +0 -4
- package/dist/fingerprinting/canvas-fingerprint.d.ts.map +0 -1
- package/dist/fingerprinting/canvas-fingerprint.js +0 -60
- package/dist/fingerprinting/canvas-fingerprint.js.map +0 -1
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fingerprint Overrides Index
|
|
3
3
|
* Exports all individual fingerprint override modules
|
|
4
|
+
*
|
|
5
|
+
* 2024-2025 Additions:
|
|
6
|
+
* - CDP Detection Bypass
|
|
7
|
+
* - Storage Consistency
|
|
8
|
+
* - Timing Consistency
|
|
9
|
+
* - Keyboard Humanization
|
|
10
|
+
* - Scroll Humanization
|
|
11
|
+
* - DataDome Bypass
|
|
4
12
|
*/
|
|
5
13
|
export { createStealthScript } from './stealth-script.js';
|
|
6
14
|
export { createWebGLSpoofingScript, type WebGLConfig } from './webgl-spoofing.js';
|
|
@@ -11,9 +19,17 @@ export { createWebRTCSpoofingScript } from './webrtc-spoofing.js';
|
|
|
11
19
|
export { createWebGPUSpoofingScript } from './webgpu-spoofing.js';
|
|
12
20
|
export { createPlatformConsistencyScript, type PlatformConfig } from './platform-consistency.js';
|
|
13
21
|
export { setupMouseMovementHumanization } from './mouse-humanization.js';
|
|
14
|
-
export {
|
|
22
|
+
export { createRuntimeEnableBypassScript } from './runtime-enable-bypass.js';
|
|
15
23
|
export { createFontSpoofingScript } from './font-spoofing.js';
|
|
16
24
|
export { createPerformanceSpoofingScript } from './performance-spoofing.js';
|
|
17
25
|
export { createLocaleSpoofingScript } from './locale-spoofing.js';
|
|
18
26
|
export { createUAClientHintsSpoofingScript } from './ua-ch.js';
|
|
27
|
+
export { createStealthUtilsScript } from './utils.js';
|
|
28
|
+
export { createPrototypeIntegrityScript } from './prototype-integrity.js';
|
|
29
|
+
export { createCDPDetectionBypassScript } from './cdp-detection-bypass.js';
|
|
30
|
+
export { createStorageConsistencyScript } from './storage-consistency.js';
|
|
31
|
+
export { createTimingConsistencyScript } from './timing-consistency.js';
|
|
32
|
+
export { createKeyboardHumanizationScript, setupKeyboardHumanization, generateTypingDelays, createHumanTypingFunction } from './keyboard-humanization.js';
|
|
33
|
+
export { createScrollHumanizationScript, setupScrollHumanization, humanScroll, humanScrollToElement, generateScrollPath } from './scroll-humanization.js';
|
|
34
|
+
export { createDataDomeBypassScript } from './datadome-bypass.js';
|
|
19
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAG/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACH,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,8BAA8B,EAC9B,uBAAuB,EACvB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fingerprint Overrides Index
|
|
3
3
|
* Exports all individual fingerprint override modules
|
|
4
|
+
*
|
|
5
|
+
* 2024-2025 Additions:
|
|
6
|
+
* - CDP Detection Bypass
|
|
7
|
+
* - Storage Consistency
|
|
8
|
+
* - Timing Consistency
|
|
9
|
+
* - Keyboard Humanization
|
|
10
|
+
* - Scroll Humanization
|
|
11
|
+
* - DataDome Bypass
|
|
4
12
|
*/
|
|
13
|
+
// Base stealth and protection scripts
|
|
5
14
|
export { createStealthScript } from './stealth-script.js';
|
|
6
15
|
export { createWebGLSpoofingScript } from './webgl-spoofing.js';
|
|
7
16
|
export { createAudioFingerprintSpoofingScript } from './audio-spoofing.js';
|
|
@@ -11,9 +20,20 @@ export { createWebRTCSpoofingScript } from './webrtc-spoofing.js';
|
|
|
11
20
|
export { createWebGPUSpoofingScript } from './webgpu-spoofing.js';
|
|
12
21
|
export { createPlatformConsistencyScript } from './platform-consistency.js';
|
|
13
22
|
export { setupMouseMovementHumanization } from './mouse-humanization.js';
|
|
14
|
-
export {
|
|
23
|
+
export { createRuntimeEnableBypassScript } from './runtime-enable-bypass.js';
|
|
15
24
|
export { createFontSpoofingScript } from './font-spoofing.js';
|
|
16
25
|
export { createPerformanceSpoofingScript } from './performance-spoofing.js';
|
|
17
26
|
export { createLocaleSpoofingScript } from './locale-spoofing.js';
|
|
18
27
|
export { createUAClientHintsSpoofingScript } from './ua-ch.js';
|
|
28
|
+
// Stealth utilities (must be injected first)
|
|
29
|
+
export { createStealthUtilsScript } from './utils.js';
|
|
30
|
+
// Prototype integrity (should be injected early)
|
|
31
|
+
export { createPrototypeIntegrityScript } from './prototype-integrity.js';
|
|
32
|
+
// 2024-2025 New modules
|
|
33
|
+
export { createCDPDetectionBypassScript } from './cdp-detection-bypass.js';
|
|
34
|
+
export { createStorageConsistencyScript } from './storage-consistency.js';
|
|
35
|
+
export { createTimingConsistencyScript } from './timing-consistency.js';
|
|
36
|
+
export { createKeyboardHumanizationScript, setupKeyboardHumanization, generateTypingDelays, createHumanTypingFunction } from './keyboard-humanization.js';
|
|
37
|
+
export { createScrollHumanizationScript, setupScrollHumanization, humanScroll, humanScrollToElement, generateScrollPath } from './scroll-humanization.js';
|
|
38
|
+
export { createDataDomeBypassScript } from './datadome-bypass.js';
|
|
19
39
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sCAAsC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAoB,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAuB,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAE/D,6CAA6C;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,iDAAiD;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAE1E,wBAAwB;AACxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACH,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,8BAA8B,EAC9B,uBAAuB,EACvB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard Humanization Module
|
|
3
|
+
* Simulates realistic keyboard behavior for 2024-2025
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Variable keystroke timing (faster for common patterns)
|
|
7
|
+
* - Realistic key press/release timing gaps
|
|
8
|
+
* - Shift key timing consistency
|
|
9
|
+
* - Tab/Enter key natural delays
|
|
10
|
+
* - CDP-level typing enhancement
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Keyboard timing configuration
|
|
14
|
+
*/
|
|
15
|
+
interface KeyboardConfig {
|
|
16
|
+
/** Base delay between keystrokes in ms */
|
|
17
|
+
baseDelay: number;
|
|
18
|
+
/** Variance in delay (±ms) */
|
|
19
|
+
delayVariance: number;
|
|
20
|
+
/** Delay between key press and release in ms */
|
|
21
|
+
pressReleaseDelay: number;
|
|
22
|
+
/** Extra delay for special keys (Enter, Tab) */
|
|
23
|
+
specialKeyDelay: number;
|
|
24
|
+
/** Delay when using shift key */
|
|
25
|
+
shiftDelay: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generate human-like typing delays for a string
|
|
29
|
+
*/
|
|
30
|
+
export declare const generateTypingDelays: (text: string, config?: Partial<KeyboardConfig>) => number[];
|
|
31
|
+
/**
|
|
32
|
+
* Create a script that enhances keyboard events in the browser
|
|
33
|
+
*/
|
|
34
|
+
export declare const createKeyboardHumanizationScript: () => string;
|
|
35
|
+
/**
|
|
36
|
+
* CDP-level keyboard typing helper
|
|
37
|
+
* Returns an async function that types text with human-like delays
|
|
38
|
+
*/
|
|
39
|
+
export declare const createHumanTypingFunction: (client: unknown, config?: Partial<KeyboardConfig>) => Promise<(text: string) => Promise<void>>;
|
|
40
|
+
/**
|
|
41
|
+
* Setup keyboard humanization at CDP level
|
|
42
|
+
*/
|
|
43
|
+
export declare const setupKeyboardHumanization: (client: unknown) => Promise<void>;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=keyboard-humanization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-humanization.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/keyboard-humanization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,UAAU,cAAc;IACpB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACtB;AAqBD;;GAEG;AACH,eAAO,MAAM,oBAAoB,SACvB,MAAM,WACJ,OAAO,CAAC,cAAc,CAAC,KAChC,MAAM,EAiDR,CAAC;AA2BF;;GAEG;AACH,eAAO,MAAM,gCAAgC,QAAO,MA+HnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,OAAO,WACP,OAAO,CAAC,cAAc,CAAC,KAChC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CA+DzC,CAAC;AAOF;;GAEG;AACH,eAAO,MAAM,yBAAyB,WAAkB,OAAO,KAAG,OAAO,CAAC,IAAI,CAc7E,CAAC"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard Humanization Module
|
|
3
|
+
* Simulates realistic keyboard behavior for 2024-2025
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Variable keystroke timing (faster for common patterns)
|
|
7
|
+
* - Realistic key press/release timing gaps
|
|
8
|
+
* - Shift key timing consistency
|
|
9
|
+
* - Tab/Enter key natural delays
|
|
10
|
+
* - CDP-level typing enhancement
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
baseDelay: 80,
|
|
14
|
+
delayVariance: 40,
|
|
15
|
+
pressReleaseDelay: 30,
|
|
16
|
+
specialKeyDelay: 150,
|
|
17
|
+
shiftDelay: 50,
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Common word patterns that are typed faster
|
|
21
|
+
*/
|
|
22
|
+
const COMMON_PATTERNS = [
|
|
23
|
+
'the', 'and', 'ing', 'ion', 'tion', 'ent', 'ation', 'for',
|
|
24
|
+
'her', 'ter', 'hat', 'tha', 'ere', 'ate', 'his', 'con', 'res',
|
|
25
|
+
'ver', 'all', 'ess', 'not', 'ive', 'was', 'ect', 'rea', 'com',
|
|
26
|
+
'eve', 'per', 'int', 'est', 'sta', 'cti', 'ica', 'ist', 'ear',
|
|
27
|
+
'ain', 'one', 'our', 'iti', 'rat', 'ted', 'men', 'ome', 'man',
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Generate human-like typing delays for a string
|
|
31
|
+
*/
|
|
32
|
+
export const generateTypingDelays = (text, config = {}) => {
|
|
33
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
34
|
+
const delays = [];
|
|
35
|
+
for (let i = 0; i < text.length; i++) {
|
|
36
|
+
const char = text[i];
|
|
37
|
+
const prevChar = i > 0 ? text[i - 1] : '';
|
|
38
|
+
const nextChars = text.substring(i, i + 3).toLowerCase();
|
|
39
|
+
// Base delay with variance
|
|
40
|
+
let delay = cfg.baseDelay + (Math.random() - 0.5) * cfg.delayVariance * 2;
|
|
41
|
+
// Faster for common patterns
|
|
42
|
+
if (COMMON_PATTERNS.some(pattern => nextChars.startsWith(pattern))) {
|
|
43
|
+
delay *= 0.7;
|
|
44
|
+
}
|
|
45
|
+
// Slower for uppercase (shift key)
|
|
46
|
+
if (char >= 'A' && char <= 'Z') {
|
|
47
|
+
delay += cfg.shiftDelay;
|
|
48
|
+
}
|
|
49
|
+
// Slower for special characters
|
|
50
|
+
if (/[!@#$%^&*()_+{}|:"<>?~`\-=\[\]\\;',./]/.test(char)) {
|
|
51
|
+
delay += cfg.specialKeyDelay * 0.5;
|
|
52
|
+
}
|
|
53
|
+
// Pause after punctuation
|
|
54
|
+
if (/[.!?]/.test(prevChar)) {
|
|
55
|
+
delay += cfg.specialKeyDelay;
|
|
56
|
+
}
|
|
57
|
+
// Slight pause after spaces (word boundary)
|
|
58
|
+
if (prevChar === ' ') {
|
|
59
|
+
delay += cfg.specialKeyDelay * 0.3;
|
|
60
|
+
}
|
|
61
|
+
// Faster when same hand (adjacent keys)
|
|
62
|
+
if (areAdjacentKeys(prevChar, char)) {
|
|
63
|
+
delay *= 0.8;
|
|
64
|
+
}
|
|
65
|
+
// Add minimum delay
|
|
66
|
+
delay = Math.max(20, delay);
|
|
67
|
+
delays.push(Math.round(delay));
|
|
68
|
+
}
|
|
69
|
+
return delays;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Check if two keys are adjacent on a QWERTY keyboard
|
|
73
|
+
*/
|
|
74
|
+
const areAdjacentKeys = (char1, char2) => {
|
|
75
|
+
const rows = [
|
|
76
|
+
'qwertyuiop',
|
|
77
|
+
'asdfghjkl',
|
|
78
|
+
'zxcvbnm',
|
|
79
|
+
];
|
|
80
|
+
const c1 = char1.toLowerCase();
|
|
81
|
+
const c2 = char2.toLowerCase();
|
|
82
|
+
for (const row of rows) {
|
|
83
|
+
const idx1 = row.indexOf(c1);
|
|
84
|
+
const idx2 = row.indexOf(c2);
|
|
85
|
+
if (idx1 !== -1 && idx2 !== -1 && Math.abs(idx1 - idx2) === 1) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Create a script that enhances keyboard events in the browser
|
|
93
|
+
*/
|
|
94
|
+
export const createKeyboardHumanizationScript = () => {
|
|
95
|
+
return `
|
|
96
|
+
(() => {
|
|
97
|
+
'use strict';
|
|
98
|
+
|
|
99
|
+
// Keyboard Humanization for 2024-2025
|
|
100
|
+
const humanizeKeyboard = () => {
|
|
101
|
+
// Store original event constructors
|
|
102
|
+
const OriginalKeyboardEvent = KeyboardEvent;
|
|
103
|
+
|
|
104
|
+
// Track key timing for consistency
|
|
105
|
+
let lastKeyTime = 0;
|
|
106
|
+
let lastKeyCode = '';
|
|
107
|
+
|
|
108
|
+
// Generate consistent timing based on key combination
|
|
109
|
+
const getKeyTiming = (key, isShift = false, isPunctuation = false) => {
|
|
110
|
+
const baseDelay = 80;
|
|
111
|
+
let timing = baseDelay + (Math.random() - 0.5) * 40;
|
|
112
|
+
|
|
113
|
+
// Slower for shift combinations
|
|
114
|
+
if (isShift) {
|
|
115
|
+
timing += 50;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Slower for punctuation
|
|
119
|
+
if (isPunctuation) {
|
|
120
|
+
timing += 30;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Ensure minimum gap between keys
|
|
124
|
+
const now = performance.now();
|
|
125
|
+
if (now - lastKeyTime < 30) {
|
|
126
|
+
timing += 30 - (now - lastKeyTime);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
lastKeyTime = now;
|
|
130
|
+
lastKeyCode = key;
|
|
131
|
+
|
|
132
|
+
return Math.round(timing);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// Override KeyboardEvent to include realistic properties
|
|
136
|
+
window.KeyboardEvent = function(type, eventInitDict = {}) {
|
|
137
|
+
// Ensure realistic event properties
|
|
138
|
+
const enhancedInit = { ...eventInitDict };
|
|
139
|
+
|
|
140
|
+
// Add realistic timing properties if not set
|
|
141
|
+
if (!enhancedInit.repeat) {
|
|
142
|
+
enhancedInit.repeat = false;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Ensure proper location for modifier keys
|
|
146
|
+
if (['Shift', 'Control', 'Alt', 'Meta'].includes(enhancedInit.key)) {
|
|
147
|
+
if (!enhancedInit.location) {
|
|
148
|
+
enhancedInit.location = Math.random() > 0.7 ? 2 : 1; // Right or Left
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const event = new OriginalKeyboardEvent(type, enhancedInit);
|
|
153
|
+
|
|
154
|
+
return event;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// Note: Don't assign to prototype - it may be frozen in modern Chrome
|
|
158
|
+
// The Proxy wrapper handles prototype access if needed
|
|
159
|
+
|
|
160
|
+
// Override document.createEvent for legacy support
|
|
161
|
+
const originalCreateEvent = document.createEvent;
|
|
162
|
+
document.createEvent = function(eventType) {
|
|
163
|
+
const event = originalCreateEvent.call(this, eventType);
|
|
164
|
+
|
|
165
|
+
if (eventType.toLowerCase().includes('keyboard')) {
|
|
166
|
+
// Add realistic properties to keyboard events
|
|
167
|
+
const originalInitKeyboardEvent = event.initKeyboardEvent;
|
|
168
|
+
if (originalInitKeyboardEvent) {
|
|
169
|
+
event.initKeyboardEvent = function(...args) {
|
|
170
|
+
// Enhance the initialization
|
|
171
|
+
originalInitKeyboardEvent.apply(this, args);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return event;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
// Track and normalize trusted key events
|
|
180
|
+
const originalAddEventListener = EventTarget.prototype.addEventListener;
|
|
181
|
+
|
|
182
|
+
EventTarget.prototype.addEventListener = function(type, listener, options) {
|
|
183
|
+
if (type === 'keydown' || type === 'keyup' || type === 'keypress') {
|
|
184
|
+
const wrappedListener = function(event) {
|
|
185
|
+
// Ensure event has realistic timing
|
|
186
|
+
if (event.timeStamp < lastKeyTime) {
|
|
187
|
+
Object.defineProperty(event, 'timeStamp', {
|
|
188
|
+
value: lastKeyTime + Math.random() * 5,
|
|
189
|
+
writable: false
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return listener.call(this, event);
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
return originalAddEventListener.call(this, type, wrappedListener, options);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return originalAddEventListener.call(this, type, listener, options);
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
// Override InputEvent for modern input handling
|
|
203
|
+
if (typeof InputEvent !== 'undefined') {
|
|
204
|
+
const OriginalInputEvent = InputEvent;
|
|
205
|
+
|
|
206
|
+
window.InputEvent = function(type, eventInitDict = {}) {
|
|
207
|
+
// Ensure inputType is set properly
|
|
208
|
+
if (!eventInitDict.inputType && type === 'input') {
|
|
209
|
+
eventInitDict.inputType = 'insertText';
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return new OriginalInputEvent(type, eventInitDict);
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
// Note: Don't assign to prototype - it may be frozen in modern Chrome
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
humanizeKeyboard();
|
|
220
|
+
})();`;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* CDP-level keyboard typing helper
|
|
224
|
+
* Returns an async function that types text with human-like delays
|
|
225
|
+
*/
|
|
226
|
+
export const createHumanTypingFunction = async (client, config = {}) => {
|
|
227
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
228
|
+
return async (text) => {
|
|
229
|
+
const delays = generateTypingDelays(text, cfg);
|
|
230
|
+
const inputClient = client.Input;
|
|
231
|
+
for (let i = 0; i < text.length; i++) {
|
|
232
|
+
const char = text[i];
|
|
233
|
+
const delay = delays[i];
|
|
234
|
+
const needsShift = char >= 'A' && char <= 'Z' || /[!@#$%^&*()_+{}|:"<>?~]/.test(char);
|
|
235
|
+
// Press shift if needed
|
|
236
|
+
if (needsShift) {
|
|
237
|
+
await inputClient.dispatchKeyEvent({
|
|
238
|
+
type: 'keyDown',
|
|
239
|
+
key: 'Shift',
|
|
240
|
+
code: 'ShiftLeft',
|
|
241
|
+
modifiers: 8,
|
|
242
|
+
});
|
|
243
|
+
await sleep(cfg.shiftDelay * (0.8 + Math.random() * 0.4));
|
|
244
|
+
}
|
|
245
|
+
// Press the key
|
|
246
|
+
await inputClient.dispatchKeyEvent({
|
|
247
|
+
type: 'keyDown',
|
|
248
|
+
key: char,
|
|
249
|
+
text: char,
|
|
250
|
+
});
|
|
251
|
+
// Wait for press-release delay
|
|
252
|
+
await sleep(cfg.pressReleaseDelay * (0.8 + Math.random() * 0.4));
|
|
253
|
+
// Release the key
|
|
254
|
+
await inputClient.dispatchKeyEvent({
|
|
255
|
+
type: 'keyUp',
|
|
256
|
+
key: char,
|
|
257
|
+
});
|
|
258
|
+
// Release shift if it was pressed
|
|
259
|
+
if (needsShift) {
|
|
260
|
+
await sleep(cfg.shiftDelay * 0.5 * (0.8 + Math.random() * 0.4));
|
|
261
|
+
await inputClient.dispatchKeyEvent({
|
|
262
|
+
type: 'keyUp',
|
|
263
|
+
key: 'Shift',
|
|
264
|
+
code: 'ShiftLeft',
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
// Wait before next key
|
|
268
|
+
if (i < text.length - 1) {
|
|
269
|
+
await sleep(delay);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
/**
|
|
275
|
+
* Helper sleep function
|
|
276
|
+
*/
|
|
277
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
278
|
+
/**
|
|
279
|
+
* Setup keyboard humanization at CDP level
|
|
280
|
+
*/
|
|
281
|
+
export const setupKeyboardHumanization = async (client) => {
|
|
282
|
+
// Inject the keyboard humanization script
|
|
283
|
+
// NOTE: Using Page.addScriptToEvaluateOnNewDocument instead of Runtime.evaluate to avoid CDP detection
|
|
284
|
+
const inputClient = client;
|
|
285
|
+
// NOTE: Using addScriptToEvaluateOnNewDocument instead of Runtime.evaluate
|
|
286
|
+
// Runtime.evaluate is a CDP detection vector
|
|
287
|
+
await inputClient.Page.addScriptToEvaluateOnNewDocument({
|
|
288
|
+
source: createKeyboardHumanizationScript()
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
//# sourceMappingURL=keyboard-humanization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-humanization.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/keyboard-humanization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale-spoofing.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/locale-spoofing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,0BAA0B,QAAO,
|
|
1
|
+
{"version":3,"file":"locale-spoofing.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/locale-spoofing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,0BAA0B,QAAO,MA+T7C,CAAC"}
|