jumpy-lion 0.1.6-beta.7 → 1.0.0-beta.0
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 +1 -607
- package/browser/fonts/macos-bundle/40-macos-aliases.conf +515 -0
- package/browser/fonts/macos-bundle/README.md +24 -0
- package/browser/fonts/macos-bundle/install.sh +83 -0
- package/dist/browser-controller.d.ts +47 -4
- package/dist/browser-controller.d.ts.map +1 -1
- package/dist/browser-controller.js +219 -278
- package/dist/browser-controller.js.map +1 -1
- package/dist/browser-plugin.d.ts +82 -110
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +376 -379
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/align-fingerprint-config.d.ts +36 -0
- package/dist/browser-process/align-fingerprint-config.d.ts.map +1 -0
- package/dist/browser-process/align-fingerprint-config.js +74 -0
- package/dist/browser-process/align-fingerprint-config.js.map +1 -0
- package/dist/browser-process/anti-detect-browser.d.ts +2 -2
- package/dist/browser-process/anti-detect-browser.js +7 -7
- package/dist/browser-process/anti-detect-config.d.ts +131 -2
- package/dist/browser-process/anti-detect-config.d.ts.map +1 -1
- package/dist/browser-process/anti-detect-config.js +337 -127
- package/dist/browser-process/anti-detect-config.js.map +1 -1
- package/dist/browser-process/browser.d.ts +25 -92
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +429 -73
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/browser-process/fingerprint-config.d.ts +146 -0
- package/dist/browser-process/fingerprint-config.d.ts.map +1 -0
- package/dist/browser-process/fingerprint-config.js +308 -0
- package/dist/browser-process/fingerprint-config.js.map +1 -0
- package/dist/browser-process/get-chrome-executable.d.ts +6 -0
- package/dist/browser-process/get-chrome-executable.d.ts.map +1 -1
- package/dist/browser-process/get-chrome-executable.js +79 -4
- package/dist/browser-process/get-chrome-executable.js.map +1 -1
- package/dist/browser-process/gpu-family-profiles.d.ts +58 -0
- package/dist/browser-process/gpu-family-profiles.d.ts.map +1 -0
- package/dist/browser-process/gpu-family-profiles.js +480 -0
- package/dist/browser-process/gpu-family-profiles.js.map +1 -0
- package/dist/browser-process/launch-options.d.ts +301 -0
- package/dist/browser-process/launch-options.d.ts.map +1 -0
- package/dist/browser-process/launch-options.js +2 -0
- package/dist/browser-process/launch-options.js.map +1 -0
- package/dist/browser-process/port-allocator.d.ts +64 -0
- package/dist/browser-process/port-allocator.d.ts.map +1 -0
- package/dist/browser-process/port-allocator.js +198 -0
- package/dist/browser-process/port-allocator.js.map +1 -0
- package/dist/browser-process/process.d.ts +85 -0
- package/dist/browser-process/process.d.ts.map +1 -1
- package/dist/browser-process/process.js +235 -19
- package/dist/browser-process/process.js.map +1 -1
- package/dist/browser-process/signal-cleanup.d.ts +40 -0
- package/dist/browser-process/signal-cleanup.d.ts.map +1 -0
- package/dist/browser-process/signal-cleanup.js +105 -0
- package/dist/browser-process/signal-cleanup.js.map +1 -0
- package/dist/browser-process/widevine-cdm.d.ts +144 -0
- package/dist/browser-process/widevine-cdm.d.ts.map +1 -0
- package/dist/browser-process/widevine-cdm.js +298 -0
- package/dist/browser-process/widevine-cdm.js.map +1 -0
- package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -1
- package/dist/browser-profiles/chrome/populate-profile.js +21 -22
- package/dist/browser-profiles/chrome/populate-profile.js.map +1 -1
- package/dist/connection/cdp-reconnection.d.ts +50 -0
- package/dist/connection/cdp-reconnection.d.ts.map +1 -0
- package/dist/connection/cdp-reconnection.js +75 -0
- package/dist/connection/cdp-reconnection.js.map +1 -0
- package/dist/connection/page-session.d.ts +114 -0
- package/dist/connection/page-session.d.ts.map +1 -0
- package/dist/connection/page-session.js +237 -0
- package/dist/connection/page-session.js.map +1 -0
- package/dist/connection/session-client.d.ts +34 -0
- package/dist/connection/session-client.d.ts.map +1 -0
- package/dist/connection/session-client.js +129 -0
- package/dist/connection/session-client.js.map +1 -0
- package/dist/crawler.d.ts +9 -88
- package/dist/crawler.d.ts.map +1 -1
- package/dist/crawler.js +157 -8
- package/dist/crawler.js.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.d.ts +24 -114
- package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.js +305 -611
- package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +1 -1
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +16 -14
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts +6 -2
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.js +6 -2
- package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +1 -1
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +4 -4
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +4 -4
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts +18 -0
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.js +136 -0
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/override.d.ts +151 -0
- package/dist/fingerprinting/fingerprint-overrides/override.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/override.js +14 -0
- package/dist/fingerprinting/fingerprint-overrides/override.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +46 -15
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/registry.d.ts +43 -0
- package/dist/fingerprinting/fingerprint-overrides/registry.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/registry.js +342 -0
- package/dist/fingerprinting/fingerprint-overrides/registry.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts +16 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.js +175 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +1 -1
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +4 -4
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +75 -9
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +1 -1
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +34 -20
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +25 -6
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +1 -1
- package/dist/fingerprinting/hardware-realism.d.ts +83 -0
- package/dist/fingerprinting/hardware-realism.d.ts.map +1 -0
- package/dist/fingerprinting/hardware-realism.js +156 -0
- package/dist/fingerprinting/hardware-realism.js.map +1 -0
- package/dist/fingerprinting/injection-planner.d.ts +133 -0
- package/dist/fingerprinting/injection-planner.d.ts.map +1 -0
- package/dist/fingerprinting/injection-planner.js +497 -0
- package/dist/fingerprinting/injection-planner.js.map +1 -0
- package/dist/fingerprinting/locale-resolver.d.ts +8 -1
- package/dist/fingerprinting/locale-resolver.d.ts.map +1 -1
- package/dist/fingerprinting/locale-resolver.js +26 -3
- package/dist/fingerprinting/locale-resolver.js.map +1 -1
- package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts +4 -4
- package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts.map +1 -1
- package/dist/fingerprinting/non-apify-fingerprint-generator.js +24 -58
- package/dist/fingerprinting/non-apify-fingerprint-generator.js.map +1 -1
- package/dist/fingerprinting/non-apify-profiles.json +10515 -8494
- package/dist/fingerprinting/os-consistency.d.ts +28 -0
- package/dist/fingerprinting/os-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/os-consistency.js +45 -0
- package/dist/fingerprinting/os-consistency.js.map +1 -0
- package/dist/fingerprinting/profile-quality.d.ts +25 -0
- package/dist/fingerprinting/profile-quality.d.ts.map +1 -0
- package/dist/fingerprinting/profile-quality.js +310 -0
- package/dist/fingerprinting/profile-quality.js.map +1 -0
- package/dist/fingerprinting/profile-selector.d.ts +102 -0
- package/dist/fingerprinting/profile-selector.d.ts.map +1 -0
- package/dist/fingerprinting/profile-selector.js +168 -0
- package/dist/fingerprinting/profile-selector.js.map +1 -0
- package/dist/fingerprinting/ua-alignment.d.ts +83 -0
- package/dist/fingerprinting/ua-alignment.d.ts.map +1 -0
- package/dist/fingerprinting/ua-alignment.js +197 -0
- package/dist/fingerprinting/ua-alignment.js.map +1 -0
- package/dist/fingerprinting/ua-ch-brands.d.ts +88 -0
- package/dist/fingerprinting/ua-ch-brands.d.ts.map +1 -0
- package/dist/fingerprinting/ua-ch-brands.js +174 -0
- package/dist/fingerprinting/ua-ch-brands.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/input/dropdown-selector.d.ts +90 -0
- package/dist/input/dropdown-selector.d.ts.map +1 -0
- package/dist/input/dropdown-selector.js +394 -0
- package/dist/input/dropdown-selector.js.map +1 -0
- package/dist/input/element-target.d.ts +152 -0
- package/dist/input/element-target.d.ts.map +1 -0
- package/dist/input/element-target.js +461 -0
- package/dist/input/element-target.js.map +1 -0
- package/dist/input/input-emulator.d.ts +85 -0
- package/dist/input/input-emulator.d.ts.map +1 -0
- package/dist/input/input-emulator.js +325 -0
- package/dist/input/input-emulator.js.map +1 -0
- package/dist/input/input-transport.d.ts +60 -0
- package/dist/input/input-transport.d.ts.map +1 -0
- package/dist/input/input-transport.js +28 -0
- package/dist/input/input-transport.js.map +1 -0
- package/dist/input/recording-transport.d.ts +32 -0
- package/dist/input/recording-transport.d.ts.map +1 -0
- package/dist/input/recording-transport.js +43 -0
- package/dist/input/recording-transport.js.map +1 -0
- package/dist/keyboard-layout.d.ts +2 -2
- package/dist/keyboard-layout.js +2 -2
- package/dist/navigation/page-navigation.d.ts +67 -0
- package/dist/navigation/page-navigation.d.ts.map +1 -0
- package/dist/navigation/page-navigation.js +122 -0
- package/dist/navigation/page-navigation.js.map +1 -0
- package/dist/network/network-watch.d.ts +110 -0
- package/dist/network/network-watch.d.ts.map +1 -0
- package/dist/network/network-watch.js +223 -0
- package/dist/network/network-watch.js.map +1 -0
- package/dist/page.d.ts +118 -104
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +311 -1130
- package/dist/page.js.map +1 -1
- package/dist/session/inject-hook.d.ts +24 -0
- package/dist/session/inject-hook.d.ts.map +1 -0
- package/dist/session/inject-hook.js +80 -0
- package/dist/session/inject-hook.js.map +1 -0
- package/dist/session/save.d.ts +21 -0
- package/dist/session/save.d.ts.map +1 -0
- package/dist/session/save.js +163 -0
- package/dist/session/save.js.map +1 -0
- package/dist/session/tar-data-dir.d.ts +18 -0
- package/dist/session/tar-data-dir.d.ts.map +1 -0
- package/dist/session/tar-data-dir.js +105 -0
- package/dist/session/tar-data-dir.js.map +1 -0
- package/dist/session/types.d.ts +80 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +29 -0
- package/dist/session/types.js.map +1 -0
- package/dist/session-profile.d.ts +102 -0
- package/dist/session-profile.d.ts.map +1 -0
- package/dist/session-profile.js +163 -0
- package/dist/session-profile.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -6
- package/scripts/postinstall.cjs +58 -0
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts +0 -87
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +0 -1
- package/dist/fingerprinting/custom-fingerprint-injector.js +0 -342
- package/dist/fingerprinting/custom-fingerprint-injector.js.map +0 -1
- package/dist/launcher-wrap.d.ts +0 -10
- package/dist/launcher-wrap.d.ts.map +0 -1
- package/dist/launcher-wrap.js +0 -11
- package/dist/launcher-wrap.js.map +0 -1
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The override registry - the single place that knows every JS fingerprint
|
|
3
|
+
* override, its injection order, its option gate, and whether the native (C++)
|
|
4
|
+
* anti-detect binary already covers its surface.
|
|
5
|
+
*
|
|
6
|
+
* The injector consumes this through `buildOverrideScripts()` and never names
|
|
7
|
+
* individual overrides. To add an override: create the module, append one
|
|
8
|
+
* entry here, done.
|
|
9
|
+
*/
|
|
10
|
+
import { createAudioFingerprintSpoofingScript } from './audio-spoofing.js';
|
|
11
|
+
import { createAdvancedCanvasProtectionScript } from './canvas-protection.js';
|
|
12
|
+
import { createCDPDetectionBypassScript } from './cdp-detection-bypass.js';
|
|
13
|
+
import { createClientRectSpoofingScript } from './client-rect-spoofing.js';
|
|
14
|
+
import { createDataDomeBypassScript } from './datadome-bypass.js';
|
|
15
|
+
import { createFontSpoofingScript } from './font-spoofing.js';
|
|
16
|
+
import { createKeyboardHumanizationScript } from './keyboard-humanization.js';
|
|
17
|
+
import { createLocaleSpoofingScript } from './locale-spoofing.js';
|
|
18
|
+
import { createMediaCodecsSpoofingScript } from './media-codecs-spoofing.js';
|
|
19
|
+
import { createMouseMovementHumanizationScript } from './mouse-humanization.js';
|
|
20
|
+
import { createFingerprintInjectionBannerScript, createNavigatorOverrideScript } from './navigator-override.js';
|
|
21
|
+
import { createPerformanceSpoofingScript } from './performance-spoofing.js';
|
|
22
|
+
import { createPlatformConsistencyScript } from './platform-consistency.js';
|
|
23
|
+
import { createPrototypeIntegrityScript } from './prototype-integrity.js';
|
|
24
|
+
import { createRuntimeEnableBypassScript } from './runtime-enable-bypass.js';
|
|
25
|
+
import { createScreenOverrideScript, createWindowOverrideScript } from './screen-override.js';
|
|
26
|
+
import { createScrollHumanizationScript } from './scroll-humanization.js';
|
|
27
|
+
import { createStealthScript } from './stealth-script.js';
|
|
28
|
+
import { createStorageConsistencyScript } from './storage-consistency.js';
|
|
29
|
+
import { createTimingConsistencyScript } from './timing-consistency.js';
|
|
30
|
+
import { createUAClientHintsSpoofingScript } from './ua-ch.js';
|
|
31
|
+
import { createStealthUtilsScript } from './utils.js';
|
|
32
|
+
import { createWebGLSpoofingScript } from './webgl-spoofing.js';
|
|
33
|
+
import { createWebGPUSpoofingScript } from './webgpu-spoofing.js';
|
|
34
|
+
import { createWebRTCDisableScript, createWebRTCSpoofingScript } from './webrtc-spoofing.js';
|
|
35
|
+
export const OVERRIDE_REGISTRY = [
|
|
36
|
+
{
|
|
37
|
+
// Must be first - provides guards and toString spoofing every later override relies on.
|
|
38
|
+
id: 'stealth-utils',
|
|
39
|
+
order: 10,
|
|
40
|
+
runsUnderNativeStealth: true,
|
|
41
|
+
enabled: () => true,
|
|
42
|
+
build: () => createStealthUtilsScript(),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
// Early - native-like property descriptor masking used by later overrides.
|
|
46
|
+
id: 'prototype-integrity',
|
|
47
|
+
order: 20,
|
|
48
|
+
runsUnderNativeStealth: true,
|
|
49
|
+
enabled: () => true,
|
|
50
|
+
build: () => createPrototypeIntegrityScript(),
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
// Protects against CDP detection via Error stack analysis. Covered natively by
|
|
54
|
+
// the inspector-artifact stripping in the C++ tree (Runtime.enable console side
|
|
55
|
+
// effects and automation sourceURL frames in Error stacks).
|
|
56
|
+
id: 'runtime-enable-bypass',
|
|
57
|
+
order: 30,
|
|
58
|
+
runsUnderNativeStealth: false,
|
|
59
|
+
enabled: ctx => ctx.maskAutomation,
|
|
60
|
+
build: () => createRuntimeEnableBypassScript(),
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
// Must run early: stack-trace sanitization + performance.memory spoofing have
|
|
64
|
+
// to land before the other overrides execute.
|
|
65
|
+
id: 'datadome-bypass',
|
|
66
|
+
order: 40,
|
|
67
|
+
runsUnderNativeStealth: true,
|
|
68
|
+
enabled: ctx => ctx.dataDomeBypass,
|
|
69
|
+
build: ctx => createDataDomeBypassScript(ctx.binaryFullVersion),
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
// Debug banner for the profile-driven property overrides below
|
|
73
|
+
// (navigator-override, screen-override). Pure console logging - the
|
|
74
|
+
// injector's cleanScript pass strips it when debug is off.
|
|
75
|
+
id: 'custom-fingerprint-log',
|
|
76
|
+
order: 50,
|
|
77
|
+
runsUnderNativeStealth: false,
|
|
78
|
+
enabled: () => true,
|
|
79
|
+
build: ctx => createFingerprintInjectionBannerScript(ctx.fingerprint),
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
// Navigator property overrides generated from the fingerprint profile.
|
|
83
|
+
// Covered natively by the navigator overrides in the C++ tree (e.g.
|
|
84
|
+
// NavigatorBase::GetReducedNavigatorPlatform); injecting this JS on top
|
|
85
|
+
// of the binary would create detectable descriptor lies.
|
|
86
|
+
id: 'navigator-override',
|
|
87
|
+
order: 52,
|
|
88
|
+
runsUnderNativeStealth: false,
|
|
89
|
+
enabled: ctx => !!ctx.fingerprint.navigator && Object.keys(ctx.fingerprint.navigator).length > 0,
|
|
90
|
+
build: ctx => createNavigatorOverrideScript(ctx.fingerprint),
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
// Screen + window (devicePixelRatio) property overrides from the
|
|
94
|
+
// fingerprint profile. Covered natively by the screen-dimension
|
|
95
|
+
// overrides in the C++ tree.
|
|
96
|
+
id: 'screen-override',
|
|
97
|
+
order: 54,
|
|
98
|
+
runsUnderNativeStealth: false,
|
|
99
|
+
enabled: ctx => !!ctx.fingerprint.screen && Object.keys(ctx.fingerprint.screen).length > 0,
|
|
100
|
+
build: ctx => {
|
|
101
|
+
const scripts = [createScreenOverrideScript(ctx.fingerprint)];
|
|
102
|
+
if (ctx.fingerprint.screen?.devicePixelRatio) {
|
|
103
|
+
scripts.push(createWindowOverrideScript(ctx.fingerprint));
|
|
104
|
+
}
|
|
105
|
+
return scripts;
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
// navigator.webdriver removal + Error-stack hiding for the JS-injection path.
|
|
110
|
+
id: 'stealth-script',
|
|
111
|
+
order: 60,
|
|
112
|
+
runsUnderNativeStealth: true,
|
|
113
|
+
enabled: ctx => ctx.maskAutomation,
|
|
114
|
+
build: () => createStealthScript(),
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
// navigator.userAgentData spoofing. Covered natively by the UA-CH structured
|
|
118
|
+
// data + Sec-CH-UA-* header overrides in components/embedder_support.
|
|
119
|
+
id: 'ua-ch',
|
|
120
|
+
order: 70,
|
|
121
|
+
runsUnderNativeStealth: false,
|
|
122
|
+
enabled: ctx => ctx.advancedStealth,
|
|
123
|
+
build: ctx => createUAClientHintsSpoofingScript(ctx.platform, ctx.uaClientHints, ctx.binaryFullVersion),
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
// Covered natively by the WebGL getParameter override in
|
|
127
|
+
// third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc.
|
|
128
|
+
id: 'webgl-spoofing',
|
|
129
|
+
order: 80,
|
|
130
|
+
runsUnderNativeStealth: false,
|
|
131
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.webgl,
|
|
132
|
+
build: ctx => createWebGLSpoofingScript(ctx.webglConfig),
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
// Covered natively by the audio-buffer noise in the Blink audio path.
|
|
136
|
+
id: 'audio-spoofing',
|
|
137
|
+
order: 90,
|
|
138
|
+
runsUnderNativeStealth: false,
|
|
139
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.audio,
|
|
140
|
+
build: () => createAudioFingerprintSpoofingScript(),
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
// Covered natively by the canvas readback noise in the Blink canvas path.
|
|
144
|
+
id: 'canvas-protection',
|
|
145
|
+
order: 100,
|
|
146
|
+
runsUnderNativeStealth: false,
|
|
147
|
+
enabled: ctx => ctx.advancedStealth,
|
|
148
|
+
build: () => createAdvancedCanvasProtectionScript(),
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
// Covered natively by the getBoundingClientRect noise in the C++ tree.
|
|
152
|
+
id: 'client-rect-spoofing',
|
|
153
|
+
order: 110,
|
|
154
|
+
runsUnderNativeStealth: false,
|
|
155
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.clientRects,
|
|
156
|
+
build: () => createClientRectSpoofingScript(),
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
// canPlayType is behavioral - always keep, even under native stealth.
|
|
160
|
+
id: 'media-codecs',
|
|
161
|
+
order: 120,
|
|
162
|
+
runsUnderNativeStealth: true,
|
|
163
|
+
enabled: ctx => ctx.advancedStealth,
|
|
164
|
+
build: () => createMediaCodecsSpoofingScript(),
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: 'webrtc-disable',
|
|
168
|
+
order: 130,
|
|
169
|
+
runsUnderNativeStealth: true,
|
|
170
|
+
enabled: ctx => ctx.advancedStealth && ctx.webRtcPolicy === 'disable',
|
|
171
|
+
build: () => createWebRTCDisableScript(),
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
// Fake device IDs; the C++ tree handles IP-leak prevention only.
|
|
175
|
+
id: 'webrtc-spoof',
|
|
176
|
+
order: 140,
|
|
177
|
+
runsUnderNativeStealth: true,
|
|
178
|
+
enabled: ctx => ctx.advancedStealth && ctx.webRtcPolicy !== 'disable',
|
|
179
|
+
build: () => createWebRTCSpoofingScript(),
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
// Covered natively by the WebGPU adapter-info override in the C++ tree.
|
|
183
|
+
id: 'webgpu-spoofing',
|
|
184
|
+
order: 150,
|
|
185
|
+
runsUnderNativeStealth: false,
|
|
186
|
+
enabled: ctx => ctx.advancedStealth,
|
|
187
|
+
build: ctx => createWebGPUSpoofingScript(ctx.useExperimentalFingerprints),
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
// Covered natively by the Cromite built-in font allowlist.
|
|
191
|
+
id: 'font-spoofing',
|
|
192
|
+
order: 160,
|
|
193
|
+
runsUnderNativeStealth: false,
|
|
194
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.fonts,
|
|
195
|
+
build: () => createFontSpoofingScript(),
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
// Covered natively by the Cromite built-in performance.now clamping.
|
|
199
|
+
id: 'performance-spoofing',
|
|
200
|
+
order: 170,
|
|
201
|
+
runsUnderNativeStealth: false,
|
|
202
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.performance,
|
|
203
|
+
build: () => createPerformanceSpoofingScript(),
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
// Always keep: the Intl.NumberFormat formatting surface is not in the C++ tree.
|
|
207
|
+
// The resolved locale/languages are baked in as literals so the script reports
|
|
208
|
+
// values that match the navigator/header overrides instead of hardcoded en-US.
|
|
209
|
+
id: 'locale-spoofing',
|
|
210
|
+
order: 180,
|
|
211
|
+
runsUnderNativeStealth: true,
|
|
212
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.locale,
|
|
213
|
+
build: ctx => createLocaleSpoofingScript(ctx.locale),
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
// Covered natively by navigator.webdriver=false + CDP automation-artifact
|
|
217
|
+
// stripping in the C++ tree.
|
|
218
|
+
id: 'cdp-detection-bypass',
|
|
219
|
+
order: 190,
|
|
220
|
+
runsUnderNativeStealth: false,
|
|
221
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.cdpDetection,
|
|
222
|
+
build: () => createCDPDetectionBypassScript(),
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
// Always keep: CDP-level storage quota spoofing.
|
|
226
|
+
id: 'storage-consistency',
|
|
227
|
+
order: 200,
|
|
228
|
+
runsUnderNativeStealth: true,
|
|
229
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.storage,
|
|
230
|
+
build: () => createStorageConsistencyScript(),
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
// Always keep: Date.now alignment; the C++ tree handles performance.now only.
|
|
234
|
+
id: 'timing-consistency',
|
|
235
|
+
order: 210,
|
|
236
|
+
runsUnderNativeStealth: true,
|
|
237
|
+
enabled: ctx => ctx.advancedStealth && ctx.spoof.timing,
|
|
238
|
+
build: () => createTimingConsistencyScript(),
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
// Behavioral rather than fingerprinting - bundled so the bezier-curve utility
|
|
242
|
+
// counts as part of the single addScriptToEvaluateOnNewDocument call.
|
|
243
|
+
id: 'mouse-humanization',
|
|
244
|
+
order: 220,
|
|
245
|
+
runsUnderNativeStealth: true,
|
|
246
|
+
enabled: ctx => ctx.advancedStealth && ctx.humanization.mouse,
|
|
247
|
+
build: () => createMouseMovementHumanizationScript(),
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
id: 'keyboard-humanization',
|
|
251
|
+
order: 230,
|
|
252
|
+
runsUnderNativeStealth: true,
|
|
253
|
+
enabled: ctx => ctx.advancedStealth && ctx.humanization.keyboard,
|
|
254
|
+
build: () => createKeyboardHumanizationScript(),
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
id: 'scroll-humanization',
|
|
258
|
+
order: 240,
|
|
259
|
+
runsUnderNativeStealth: true,
|
|
260
|
+
enabled: ctx => ctx.advancedStealth && ctx.humanization.scroll,
|
|
261
|
+
build: () => createScrollHumanizationScript(),
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
// Covered natively by the navigator.platform override
|
|
265
|
+
// (third_party/blink/renderer/core/frame/navigator_base.cc) and the screen
|
|
266
|
+
// overrides in the C++ tree. Note: NOT gated on advancedStealth.
|
|
267
|
+
id: 'platform-consistency',
|
|
268
|
+
order: 250,
|
|
269
|
+
runsUnderNativeStealth: false,
|
|
270
|
+
enabled: ctx => ctx.platform !== undefined,
|
|
271
|
+
build: ctx => createPlatformConsistencyScript(ctx.platform, ctx.platformConfig),
|
|
272
|
+
},
|
|
273
|
+
];
|
|
274
|
+
/**
|
|
275
|
+
* Injection order never changes at runtime, so sort the registry once at module
|
|
276
|
+
* load instead of spreading + sorting on every page build.
|
|
277
|
+
*/
|
|
278
|
+
const SORTED_OVERRIDE_REGISTRY = [...OVERRIDE_REGISTRY]
|
|
279
|
+
.sort((a, b) => a.order - b.order);
|
|
280
|
+
/**
|
|
281
|
+
* Module-scope memo for context-independent (static) override builders. A
|
|
282
|
+
* builder is static iff it declares no OverrideContext parameter
|
|
283
|
+
* (`build.length === 0`): its script bytes are constant for the whole process,
|
|
284
|
+
* so we assemble them once and reuse the identical strings across every page.
|
|
285
|
+
* Context-dependent builders (navigator/screen/webgl/ua-ch/locale/
|
|
286
|
+
* platform-consistency/banner/webgpu) reference `ctx`, vary per session, and are
|
|
287
|
+
* never cached - they rebuild on every call.
|
|
288
|
+
*/
|
|
289
|
+
const staticScriptCache = new Map();
|
|
290
|
+
/** A builder is static (memoizable) precisely when it ignores the OverrideContext. */
|
|
291
|
+
function isStaticBuilder(override) {
|
|
292
|
+
return override.build.length === 0;
|
|
293
|
+
}
|
|
294
|
+
function toScripts(built) {
|
|
295
|
+
return Array.isArray(built) ? built : [built];
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Assemble the enabled override scripts for one page, tagging each script with
|
|
299
|
+
* whether its builder is static. Static builders run once per process (their
|
|
300
|
+
* output is memoized); context-dependent builders run on every call. The tag
|
|
301
|
+
* lets the injector cache expensive post-processing (script cleaning) for the
|
|
302
|
+
* static scripts only, without ever caching per-session scripts.
|
|
303
|
+
*/
|
|
304
|
+
export function assembleOverrideScripts(ctx, { nativeStealth }) {
|
|
305
|
+
const result = [];
|
|
306
|
+
for (const override of SORTED_OVERRIDE_REGISTRY) {
|
|
307
|
+
if (nativeStealth && !override.runsUnderNativeStealth)
|
|
308
|
+
continue;
|
|
309
|
+
if (!override.enabled(ctx))
|
|
310
|
+
continue;
|
|
311
|
+
const isStatic = isStaticBuilder(override);
|
|
312
|
+
let scripts;
|
|
313
|
+
if (isStatic) {
|
|
314
|
+
const cached = staticScriptCache.get(override.id);
|
|
315
|
+
if (cached) {
|
|
316
|
+
scripts = cached;
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
scripts = toScripts(override.build(ctx));
|
|
320
|
+
staticScriptCache.set(override.id, scripts);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
scripts = toScripts(override.build(ctx));
|
|
325
|
+
}
|
|
326
|
+
for (const script of scripts)
|
|
327
|
+
result.push({ script, isStatic });
|
|
328
|
+
}
|
|
329
|
+
return result;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Assemble the injection scripts for one page: filter by native coverage,
|
|
333
|
+
* filter by option gates, order by declared order, build each override.
|
|
334
|
+
*/
|
|
335
|
+
export function buildOverrideScripts(ctx, options) {
|
|
336
|
+
return assembleOverrideScripts(ctx, options).map(({ script }) => script);
|
|
337
|
+
}
|
|
338
|
+
/** Test-only: drop the static-builder memo so invocation counts start fresh. */
|
|
339
|
+
export function resetStaticOverrideCacheForTesting() {
|
|
340
|
+
staticScriptCache.clear();
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,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,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,qCAAqC,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,sCAAsC,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAEhH,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAE7F,MAAM,CAAC,MAAM,iBAAiB,GAAwB;IAClD;QACI,wFAAwF;QACxF,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,KAAK,EAAE,GAAG,EAAE,CAAC,wBAAwB,EAAE;KAC1C;IACD;QACI,2EAA2E;QAC3E,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,KAAK,EAAE,GAAG,EAAE,CAAC,8BAA8B,EAAE;KAChD;IACD;QACI,+EAA+E;QAC/E,gFAAgF;QAChF,4DAA4D;QAC5D,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,+BAA+B,EAAE;KACjD;IACD;QACI,8EAA8E;QAC9E,8CAA8C;QAC9C,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc;QAClC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,0BAA0B,CAAC,GAAG,CAAC,iBAAiB,CAAC;KAClE;IACD;QACI,+DAA+D;QAC/D,oEAAoE;QACpE,2DAA2D;QAC3D,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,sCAAsC,CAAC,GAAG,CAAC,WAAW,CAAC;KACxE;IACD;QACI,uEAAuE;QACvE,oEAAoE;QACpE,wEAAwE;QACxE,yDAAyD;QACzD,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QAChG,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,6BAA6B,CAAC,GAAG,CAAC,WAAW,CAAC;KAC/D;IACD;QACI,iEAAiE;QACjE,gEAAgE;QAChE,6BAA6B;QAC7B,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;QAC1F,KAAK,EAAE,GAAG,CAAC,EAAE;YACT,MAAM,OAAO,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9D,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,OAAO,CAAC;QACnB,CAAC;KACJ;IACD;QACI,8EAA8E;QAC9E,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE;KACrC;IACD;QACI,6EAA6E;QAC7E,sEAAsE;QACtE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe;QACnC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,iCAAiC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,iBAAiB,CAAC;KAC1G;IACD;QACI,yDAAyD;QACzD,4EAA4E;QAC5E,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK;QACtD,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC;KAC3D;IACD;QACI,sEAAsE;QACtE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,EAAE;QACT,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK;QACtD,KAAK,EAAE,GAAG,EAAE,CAAC,oCAAoC,EAAE;KACtD;IACD;QACI,0EAA0E;QAC1E,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe;QACnC,KAAK,EAAE,GAAG,EAAE,CAAC,oCAAoC,EAAE;KACtD;IACD;QACI,uEAAuE;QACvE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW;QAC5D,KAAK,EAAE,GAAG,EAAE,CAAC,8BAA8B,EAAE;KAChD;IACD;QACI,sEAAsE;QACtE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe;QACnC,KAAK,EAAE,GAAG,EAAE,CAAC,+BAA+B,EAAE;KACjD;IACD;QACI,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS;QACrE,KAAK,EAAE,GAAG,EAAE,CAAC,yBAAyB,EAAE;KAC3C;IACD;QACI,iEAAiE;QACjE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS;QACrE,KAAK,EAAE,GAAG,EAAE,CAAC,0BAA0B,EAAE;KAC5C;IACD;QACI,wEAAwE;QACxE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe;QACnC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,0BAA0B,CAAC,GAAG,CAAC,2BAA2B,CAAC;KAC5E;IACD;QACI,2DAA2D;QAC3D,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK;QACtD,KAAK,EAAE,GAAG,EAAE,CAAC,wBAAwB,EAAE;KAC1C;IACD;QACI,qEAAqE;QACrE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW;QAC5D,KAAK,EAAE,GAAG,EAAE,CAAC,+BAA+B,EAAE;KACjD;IACD;QACI,gFAAgF;QAChF,+EAA+E;QAC/E,+EAA+E;QAC/E,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;QACvD,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC;KACvD;IACD;QACI,0EAA0E;QAC1E,6BAA6B;QAC7B,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY;QAC7D,KAAK,EAAE,GAAG,EAAE,CAAC,8BAA8B,EAAE;KAChD;IACD;QACI,iDAAiD;QACjD,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO;QACxD,KAAK,EAAE,GAAG,EAAE,CAAC,8BAA8B,EAAE;KAChD;IACD;QACI,8EAA8E;QAC9E,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;QACvD,KAAK,EAAE,GAAG,EAAE,CAAC,6BAA6B,EAAE;KAC/C;IACD;QACI,8EAA8E;QAC9E,sEAAsE;QACtE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK;QAC7D,KAAK,EAAE,GAAG,EAAE,CAAC,qCAAqC,EAAE;KACvD;IACD;QACI,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ;QAChE,KAAK,EAAE,GAAG,EAAE,CAAC,gCAAgC,EAAE;KAClD;IACD;QACI,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,IAAI;QAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM;QAC9D,KAAK,EAAE,GAAG,EAAE,CAAC,8BAA8B,EAAE;KAChD;IACD;QACI,sDAAsD;QACtD,2EAA2E;QAC3E,iEAAiE;QACjE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,GAAG;QACV,sBAAsB,EAAE,KAAK;QAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;QAC1C,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,+BAA+B,CAAC,GAAG,CAAC,QAAS,EAAE,GAAG,CAAC,cAAc,CAAC;KACnF;CACJ,CAAC;AAaF;;;GAGG;AACH,MAAM,wBAAwB,GAAwB,CAAC,GAAG,iBAAiB,CAAC;KACvE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAC;AAEtD,sFAAsF;AACtF,SAAS,eAAe,CAAC,QAAkB;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,KAAwB;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AASD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACnC,GAAoB,EACpB,EAAE,aAAa,EAA+B;IAE9C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;QAC9C,IAAI,aAAa,IAAI,CAAC,QAAQ,CAAC,sBAAsB;YAAE,SAAS;QAChE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,SAAS;QAErC,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,OAAiB,CAAC;QACtB,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,GAAG,MAAM,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAChC,GAAoB,EACpB,OAAoC;IAEpC,OAAO,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kCAAkC;IAC9C,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screen + window (devicePixelRatio) property overrides generated from the
|
|
3
|
+
* fingerprint profile. Formerly part of the pre-registry
|
|
4
|
+
* custom-fingerprint-injector module; now an ordinary Override under the
|
|
5
|
+
* registry's ordering/gating/native-coverage contract.
|
|
6
|
+
*/
|
|
7
|
+
import type { BrowserFingerprint } from './override.js';
|
|
8
|
+
/**
|
|
9
|
+
* Creates a script that overrides all screen properties
|
|
10
|
+
*/
|
|
11
|
+
export declare function createScreenOverrideScript(fingerprint: BrowserFingerprint): string;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a script that overrides window-level properties
|
|
14
|
+
*/
|
|
15
|
+
export declare function createWindowOverrideScript(fingerprint: BrowserFingerprint): string;
|
|
16
|
+
//# sourceMappingURL=screen-override.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen-override.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/screen-override.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,GAAG,MAAM,CA0FlF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,GAAG,MAAM,CAwElF"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screen + window (devicePixelRatio) property overrides generated from the
|
|
3
|
+
* fingerprint profile. Formerly part of the pre-registry
|
|
4
|
+
* custom-fingerprint-injector module; now an ordinary Override under the
|
|
5
|
+
* registry's ordering/gating/native-coverage contract.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates a script that overrides all screen properties
|
|
9
|
+
*/
|
|
10
|
+
export function createScreenOverrideScript(fingerprint) {
|
|
11
|
+
const scr = fingerprint.screen || {};
|
|
12
|
+
return `
|
|
13
|
+
(() => {
|
|
14
|
+
'use strict';
|
|
15
|
+
|
|
16
|
+
const DEBUG_PREFIX = '[CDP-FP-DEBUG]';
|
|
17
|
+
const ERROR_PREFIX = '[CDP-FP-ERROR]';
|
|
18
|
+
|
|
19
|
+
console.log(DEBUG_PREFIX, 'Starting screen property overrides...');
|
|
20
|
+
|
|
21
|
+
// Get stealth utilities
|
|
22
|
+
const utils = (typeof __stealth !== 'undefined' && __stealth.utils) || {
|
|
23
|
+
overrideGetterWithNative: (obj, prop, getter) => {
|
|
24
|
+
try {
|
|
25
|
+
const existing = Object.getOwnPropertyDescriptor(obj, prop);
|
|
26
|
+
if (existing && existing.configurable === false) {
|
|
27
|
+
console.warn(DEBUG_PREFIX, \`Property screen.\${prop} is frozen, attempting fallback\`);
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
Object.defineProperty(obj, prop, {
|
|
31
|
+
get: getter,
|
|
32
|
+
configurable: true,
|
|
33
|
+
enumerable: true
|
|
34
|
+
});
|
|
35
|
+
return true;
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.error(ERROR_PREFIX, \`Failed to override screen.\${prop}:\`, e);
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const overrideScreenProperty = (prop, value) => {
|
|
44
|
+
try {
|
|
45
|
+
const success = utils.overrideGetterWithNative(
|
|
46
|
+
screen,
|
|
47
|
+
prop,
|
|
48
|
+
() => value
|
|
49
|
+
);
|
|
50
|
+
if (success) {
|
|
51
|
+
console.log(DEBUG_PREFIX, \`✓ Overridden screen.\${prop} to:\`, value);
|
|
52
|
+
} else {
|
|
53
|
+
console.warn(DEBUG_PREFIX, \`⚠ Could not override screen.\${prop} (frozen property)\`);
|
|
54
|
+
}
|
|
55
|
+
return success;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error(ERROR_PREFIX, \`Exception overriding screen.\${prop}:\`, error);
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// Override screen properties
|
|
63
|
+
const overrides = {
|
|
64
|
+
${scr.width ? `width: ${scr.width},` : ''}
|
|
65
|
+
${scr.height ? `height: ${scr.height},` : ''}
|
|
66
|
+
${scr.availWidth ? `availWidth: ${scr.availWidth},` : ''}
|
|
67
|
+
${scr.availHeight ? `availHeight: ${scr.availHeight},` : ''}
|
|
68
|
+
${scr.colorDepth ? `colorDepth: ${scr.colorDepth},` : ''}
|
|
69
|
+
${scr.pixelDepth ? `pixelDepth: ${scr.pixelDepth},` : ''}
|
|
70
|
+
${scr.availLeft !== undefined ? `availLeft: ${scr.availLeft},` : ''}
|
|
71
|
+
${scr.availTop !== undefined ? `availTop: ${scr.availTop},` : ''}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
let successCount = 0;
|
|
75
|
+
let failureCount = 0;
|
|
76
|
+
|
|
77
|
+
for (const [prop, value] of Object.entries(overrides)) {
|
|
78
|
+
if (overrideScreenProperty(prop, value)) {
|
|
79
|
+
successCount++;
|
|
80
|
+
} else {
|
|
81
|
+
failureCount++;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
console.log(DEBUG_PREFIX, \`Screen overrides complete: \${successCount} succeeded, \${failureCount} failed\`);
|
|
86
|
+
|
|
87
|
+
// Verify overrides
|
|
88
|
+
console.log(DEBUG_PREFIX, 'Verifying screen overrides...');
|
|
89
|
+
for (const [prop, expectedValue] of Object.entries(overrides)) {
|
|
90
|
+
const actualValue = screen[prop];
|
|
91
|
+
if (actualValue === expectedValue) {
|
|
92
|
+
console.log(DEBUG_PREFIX, \`✓ Verified screen.\${prop}\`);
|
|
93
|
+
} else {
|
|
94
|
+
console.warn(DEBUG_PREFIX, \`⚠ Mismatch for screen.\${prop}: expected\`, expectedValue, 'got', actualValue);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
})();
|
|
98
|
+
`;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Creates a script that overrides window-level properties
|
|
102
|
+
*/
|
|
103
|
+
export function createWindowOverrideScript(fingerprint) {
|
|
104
|
+
const scr = fingerprint.screen || {};
|
|
105
|
+
return `
|
|
106
|
+
(() => {
|
|
107
|
+
'use strict';
|
|
108
|
+
|
|
109
|
+
const DEBUG_PREFIX = '[CDP-FP-DEBUG]';
|
|
110
|
+
const ERROR_PREFIX = '[CDP-FP-ERROR]';
|
|
111
|
+
|
|
112
|
+
console.log(DEBUG_PREFIX, 'Starting window property overrides...');
|
|
113
|
+
|
|
114
|
+
// Get stealth utilities
|
|
115
|
+
const utils = (typeof __stealth !== 'undefined' && __stealth.utils) || {
|
|
116
|
+
overrideGetterWithNative: (obj, prop, getter) => {
|
|
117
|
+
try {
|
|
118
|
+
const existing = Object.getOwnPropertyDescriptor(obj, prop);
|
|
119
|
+
if (existing && existing.configurable === false) {
|
|
120
|
+
console.warn(DEBUG_PREFIX, \`Property window.\${prop} is frozen, attempting fallback\`);
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
Object.defineProperty(obj, prop, {
|
|
124
|
+
get: getter,
|
|
125
|
+
configurable: true,
|
|
126
|
+
enumerable: true
|
|
127
|
+
});
|
|
128
|
+
return true;
|
|
129
|
+
} catch (e) {
|
|
130
|
+
console.error(ERROR_PREFIX, \`Failed to override window.\${prop}:\`, e);
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const overrideWindowProperty = (prop, value) => {
|
|
137
|
+
try {
|
|
138
|
+
const success = utils.overrideGetterWithNative(
|
|
139
|
+
window,
|
|
140
|
+
prop,
|
|
141
|
+
() => value
|
|
142
|
+
);
|
|
143
|
+
if (success) {
|
|
144
|
+
console.log(DEBUG_PREFIX, \`✓ Overridden window.\${prop} to:\`, value);
|
|
145
|
+
} else {
|
|
146
|
+
console.warn(DEBUG_PREFIX, \`⚠ Could not override window.\${prop} (frozen property)\`);
|
|
147
|
+
}
|
|
148
|
+
return success;
|
|
149
|
+
} catch (error) {
|
|
150
|
+
console.error(ERROR_PREFIX, \`Exception overriding window.\${prop}:\`, error);
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// Override window properties
|
|
156
|
+
const overrides = {
|
|
157
|
+
${scr.devicePixelRatio ? `devicePixelRatio: ${scr.devicePixelRatio},` : ''}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
let successCount = 0;
|
|
161
|
+
let failureCount = 0;
|
|
162
|
+
|
|
163
|
+
for (const [prop, value] of Object.entries(overrides)) {
|
|
164
|
+
if (overrideWindowProperty(prop, value)) {
|
|
165
|
+
successCount++;
|
|
166
|
+
} else {
|
|
167
|
+
failureCount++;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
console.log(DEBUG_PREFIX, \`Window overrides complete: \${successCount} succeeded, \${failureCount} failed\`);
|
|
172
|
+
})();
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=screen-override.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen-override.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/screen-override.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAA+B;IACtE,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IAErC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAoDD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;UACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;UAC1C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;UACtD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE;UACzD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;UACtD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;UACtD,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE;UACjE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BvE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAA+B;IACtE,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IAErC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAoDD,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;CAgBjF,CAAC;AACF,CAAC"}
|
|
@@ -51,7 +51,7 @@ export declare const humanScrollToElement: (client: unknown, selector: string, c
|
|
|
51
51
|
* Setup scroll humanization at CDP level.
|
|
52
52
|
*
|
|
53
53
|
* Pass `useNativeStealth: true` when running on the patched anti-detect Cromite
|
|
54
|
-
* build
|
|
54
|
+
* build - the JS `WheelEvent` constructor override and pass-through `scrollTo`
|
|
55
55
|
* shims add no value on top of the native browser behaviour and only introduce
|
|
56
56
|
* detectable prototype tampering. In that mode this function no-ops.
|
|
57
57
|
*/
|
|
@@ -168,7 +168,7 @@ export const createScrollHumanizationScript = () => {
|
|
|
168
168
|
/**
|
|
169
169
|
* Helper sleep function
|
|
170
170
|
*/
|
|
171
|
-
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
171
|
+
const sleep = async (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
172
172
|
/**
|
|
173
173
|
* CDP-level human-like scroll function
|
|
174
174
|
*/
|
|
@@ -198,7 +198,7 @@ export const humanScroll = async (client, targetY, config = {}) => {
|
|
|
198
198
|
x: mouseX,
|
|
199
199
|
y: mouseY,
|
|
200
200
|
deltaX: 0,
|
|
201
|
-
deltaY
|
|
201
|
+
deltaY,
|
|
202
202
|
});
|
|
203
203
|
}
|
|
204
204
|
lastY = point.y;
|
|
@@ -234,7 +234,7 @@ export const humanScrollToElement = async (client, selector, config = {}) => {
|
|
|
234
234
|
* Setup scroll humanization at CDP level.
|
|
235
235
|
*
|
|
236
236
|
* Pass `useNativeStealth: true` when running on the patched anti-detect Cromite
|
|
237
|
-
* build
|
|
237
|
+
* build - the JS `WheelEvent` constructor override and pass-through `scrollTo`
|
|
238
238
|
* shims add no value on top of the native browser behaviour and only introduce
|
|
239
239
|
* detectable prototype tampering. In that mode this function no-ops.
|
|
240
240
|
*/
|
|
@@ -246,7 +246,7 @@ export const setupScrollHumanization = async (client, options) => {
|
|
|
246
246
|
// NOTE: Using addScriptToEvaluateOnNewDocument instead of Runtime.evaluate
|
|
247
247
|
// Runtime.evaluate is a CDP detection vector
|
|
248
248
|
await runtimeClient.Page.addScriptToEvaluateOnNewDocument({
|
|
249
|
-
source: createScrollHumanizationScript()
|
|
249
|
+
source: createScrollHumanizationScript(),
|
|
250
250
|
});
|
|
251
251
|
};
|
|
252
252
|
//# sourceMappingURL=scroll-humanization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-humanization.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/scroll-humanization.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scroll-humanization.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/scroll-humanization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stealth-script.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/stealth-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,mBAAmB,QAAO,
|
|
1
|
+
{"version":3,"file":"stealth-script.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/stealth-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,mBAAmB,QAAO,MA+oCtC,CAAC"}
|