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
|
@@ -1,28 +1,53 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* anti-detect-config.ts
|
|
2
|
+
* anti-detect-config.ts - Generate and manage FingerprintConfig JSON for the anti-detect browser
|
|
3
3
|
*
|
|
4
4
|
* Called by browser.ts before launching the browser when useNativeStealth is enabled.
|
|
5
5
|
* Translates the fingerprint-generator BrowserFingerprintWithHeaders output into
|
|
6
|
-
* the --
|
|
6
|
+
* the --blink-platform-overrides-file JSON schema consumed by the C++ override singleton.
|
|
7
7
|
*/
|
|
8
|
+
import crypto from 'crypto';
|
|
8
9
|
import fs from 'fs/promises';
|
|
9
10
|
import os from 'os';
|
|
10
11
|
import path from 'path';
|
|
11
|
-
import
|
|
12
|
+
import { log } from 'crawlee';
|
|
13
|
+
import { deriveWebglFamilyProfile } from './gpu-family-profiles.js';
|
|
14
|
+
import { deriveRealisticDeviceMemory, deriveStorageQuota, normalizePlatformVersion, } from '../fingerprinting/hardware-realism.js';
|
|
15
|
+
import { alignBrandList } from '../fingerprinting/ua-ch-brands.js';
|
|
16
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* Pick deterministic, plausible navigator.connection values for a given session.
|
|
19
|
+
* Real residential broadband: rtt 25-150ms (Chrome rounds to 25ms steps),
|
|
20
|
+
* downlink 5-50 Mbps. Datacenters report rtt<5ms and downlink>500 Mbps which
|
|
21
|
+
* is an obvious bot signal. Same seed → same values, so a Mac harvest and a
|
|
22
|
+
* Linux-Docker-spoof harvest produce identical readouts.
|
|
23
|
+
*/
|
|
24
|
+
function deriveNetwork(seed) {
|
|
25
|
+
// rtt in [50, 150] ms, in 25ms steps (so 50, 75, 100, 125, 150).
|
|
26
|
+
const rttSteps = [50, 75, 100, 125, 150];
|
|
27
|
+
const rttIdx = (seed >>> 16) % rttSteps.length;
|
|
28
|
+
const rtt = rttSteps[rttIdx];
|
|
29
|
+
// downlink in [5, 25] Mbps, rounded to one decimal - Chrome rounds to ~1.5
|
|
30
|
+
// significant figures. Use a stable hash of the seed so the choice is
|
|
31
|
+
// reproducible.
|
|
32
|
+
const downlinkBucket = (seed >>> 24) & 0xFF; // 0..255
|
|
33
|
+
const downlink = Math.round((5 + (downlinkBucket / 255) * 20) * 10) / 10;
|
|
34
|
+
return { rtt, downlink, effectiveType: '4g', saveData: false };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Pick AudioContext sampleRate matching the spoofed platform. Real Mac default
|
|
38
|
+
* is 44100 Hz (CoreAudio); real Linux/Windows is 48000 Hz (PulseAudio/WASAPI).
|
|
39
|
+
* Pinning here makes the JS-visible value match the OS we're claiming.
|
|
40
|
+
*/
|
|
41
|
+
function deriveAudioSampleRate(platform) {
|
|
42
|
+
return platform.startsWith('Mac') ? 44100 : 48000;
|
|
43
|
+
}
|
|
12
44
|
// ─── Generation ───────────────────────────────────────────────────────────────
|
|
13
45
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @param sessionId - Session identifier used to derive the seed (proxy session ID, etc.)
|
|
18
|
-
* @param resolvedLocale - Pre-resolved locale/languages/timezone triple. When provided,
|
|
19
|
-
* these values win over anything derived from fingerprint-generator headers so that a
|
|
20
|
-
* user-supplied `locale: 'ko-KR'` coherently propagates to every locale surface
|
|
21
|
-
* (Accept-Language, navigator.language, Intl defaults, timezone).
|
|
46
|
+
* Derive the 53-bit session seed from the proxy session tag (or a per-process
|
|
47
|
+
* random source when none is supplied) and the UA. See `generateFingerprintConfig`
|
|
48
|
+
* for the determinism rationale.
|
|
22
49
|
*/
|
|
23
|
-
|
|
24
|
-
const fp = fingerprint.fingerprint;
|
|
25
|
-
const headers = fingerprint.headers;
|
|
50
|
+
function deriveSeed(sessionId, userAgent) {
|
|
26
51
|
// Seed derivation:
|
|
27
52
|
// - With a sessionId (proxy session tag) → deterministic: same session ID
|
|
28
53
|
// always yields the same seed so cookies/IP/canvas/audio stay coherent
|
|
@@ -31,20 +56,25 @@ export function generateFingerprintConfig(fingerprint, sessionId, resolvedLocale
|
|
|
31
56
|
// random. Without this, the fingerprint-generator macOS/Chrome pool
|
|
32
57
|
// emits exactly one UA across many runs, so sessionId-less calls would
|
|
33
58
|
// all produce the same seed and therefore the same canvas/audio noise
|
|
34
|
-
// hash across every session
|
|
59
|
+
// hash across every session - a cross-session correlation signal.
|
|
35
60
|
const seedSource = sessionId
|
|
36
|
-
? `${sessionId}|${
|
|
37
|
-
: `${crypto.randomBytes(16).toString('hex')}|${
|
|
61
|
+
? `${sessionId}|${userAgent}`
|
|
62
|
+
: `${crypto.randomBytes(16).toString('hex')}|${userAgent}`;
|
|
38
63
|
const seedHash = crypto.createHash('sha256').update(seedSource).digest();
|
|
39
64
|
// Take first 8 bytes as a number (JavaScript number precision is sufficient for 53-bit ints)
|
|
40
|
-
|
|
41
|
-
|
|
65
|
+
return seedHash.readUInt32BE(0) * 0x100000000 + seedHash.readUInt32BE(4);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Build the navigator surface: legacy + UA-CH platform split, UA-CH brands,
|
|
69
|
+
* user agent, deviceMemory resampling, and storage-quota pinning. Pure.
|
|
70
|
+
*/
|
|
71
|
+
function buildNavigatorSurface(fp, headers, seed, locale) {
|
|
42
72
|
// navigator.platform (legacy) and navigator.userAgentData.platform (UA-CH)
|
|
43
73
|
// are DIFFERENT APIs with DIFFERENT values:
|
|
44
74
|
// navigator.platform → 'MacIntel' | 'Win32' | 'Linux x86_64'
|
|
45
75
|
// navigator.userAgentData.platform → 'macOS' | 'Windows' | 'Linux'
|
|
46
76
|
// Previously this code collapsed both to the UA-CH form, which made
|
|
47
|
-
// navigator.platform report "macOS" in both the main frame and workers
|
|
77
|
+
// navigator.platform report "macOS" in both the main frame and workers -
|
|
48
78
|
// that is a Chrome invariant violation (real Chrome always returns
|
|
49
79
|
// "MacIntel" from navigator.platform regardless of architecture).
|
|
50
80
|
//
|
|
@@ -59,103 +89,305 @@ export function generateFingerprintConfig(fingerprint, sessionId, resolvedLocale
|
|
|
59
89
|
'Linux x86_64': 'Linux',
|
|
60
90
|
};
|
|
61
91
|
const uaChPlatform = legacyToUaCH[platform] ?? platform;
|
|
62
|
-
//
|
|
92
|
+
// User agent from headers (most accurate source)
|
|
93
|
+
const userAgent = headers['user-agent']
|
|
94
|
+
?? fp.navigator?.userAgent
|
|
95
|
+
?? '';
|
|
96
|
+
// UA-CH brands from fingerprint. Rebuilt rather than copied: Chromium
|
|
97
|
+
// derives the GREASE token, its fake version and the ORDER of the
|
|
98
|
+
// three-entry list from the major alone (see ua-ch-brands.ts). Pool
|
|
99
|
+
// profiles occasionally carry a GREASE token harvested from a different
|
|
100
|
+
// major, and `alignFingerprintConfigWithBinary` only runs when the binary
|
|
101
|
+
// version can be read - so the C++ FingerprintConfig has to be coherent at
|
|
102
|
+
// construction, or the binary faithfully emits a `sec-ch-ua` no Chromium
|
|
103
|
+
// ever sent (challenge-free HTTP 418 on Naver - issue #131).
|
|
63
104
|
const uaData = fp.navigator?.userAgentData;
|
|
64
105
|
const brands = uaData?.brands ?? [];
|
|
65
|
-
|
|
66
|
-
|
|
106
|
+
// Same rule on the native path: UA-CH carries the real build even though UA
|
|
107
|
+
// Reduction froze the UA string to MAJOR.0.0.0, so the UA is the LAST resort
|
|
108
|
+
// for this value. `alignFingerprintConfigWithBinary` normally replaces it
|
|
109
|
+
// with the binary's own build; when the version probe failed AND the profile
|
|
110
|
+
// has no build number, the config would emit "147.0.0.0" in
|
|
111
|
+
// sec-ch-ua-full-version(-list) - a shape no Chrome sends (issue #131).
|
|
112
|
+
const uaFullVersion = uaData?.uaFullVersion ?? extractFullVersion(userAgent);
|
|
113
|
+
if (/^\d+\.0\.0\.0$/.test(uaFullVersion)) {
|
|
114
|
+
log.warning('[AntiDetect] Profile has no UA-CH build version; falling back to the UA-reduced '
|
|
115
|
+
+ 'MAJOR.0.0.0 shape. Origins that request high-entropy hints reject it - the binary '
|
|
116
|
+
+ 'version probe must succeed for alignFingerprintConfigWithBinary to repair this.', { uaFullVersion });
|
|
117
|
+
}
|
|
118
|
+
const majorBrands = alignBrandList(brands, uaFullVersion.split('.')[0]);
|
|
119
|
+
const fullBrands = alignBrandList(brands, uaFullVersion);
|
|
120
|
+
const uaBrands = brands.length === 0 ? [] : majorBrands.map((b, i) => ({
|
|
67
121
|
brand: b.brand,
|
|
68
122
|
version: b.version,
|
|
69
|
-
full_version:
|
|
123
|
+
full_version: fullBrands[i]?.version ?? b.version,
|
|
70
124
|
}));
|
|
125
|
+
const brandName = extractBrandName(uaBrands, userAgent);
|
|
126
|
+
// deviceMemory: the W3C 2018 spec defined {0.25, 0.5, 1, 2, 4, 8} buckets,
|
|
127
|
+
// but real Chrome 147 on desktop now returns the raw host RAM in GB
|
|
128
|
+
// (verified by harvest 2026-05-11: 32 GB Apple Silicon Mac reports
|
|
129
|
+
// `navigator.deviceMemory === 32`). Reporting the legacy spec-bucketed 8
|
|
130
|
+
// is now a population minority (<15% of real Mac traffic) and an
|
|
131
|
+
// instant detection vector. Sample from a realistic 2026 Mac RAM
|
|
132
|
+
// distribution (8/16/24/32/48/64/128 GB), keyed off the session seed
|
|
133
|
+
// so Mac-on-Mac and Mac-on-Linux runs of the same seed agree.
|
|
134
|
+
const rawDeviceMemory = fp.navigator?.deviceMemory ?? 8;
|
|
135
|
+
const deviceMemory = deriveRealisticDeviceMemory(seed, rawDeviceMemory);
|
|
136
|
+
// navigator.storage.estimate().quota - pinned per-session so the same profile
|
|
137
|
+
// reports the same quota on Mac and Linux (without this, real disk leaks
|
|
138
|
+
// through). Derived from seed+deviceMemory to land in a plausible Mac-SSD
|
|
139
|
+
// distribution: 8 GB RAM ↔ 256/512 GB SSD, 16 GB ↔ 512/1024 GB, 24/32 GB ↔
|
|
140
|
+
// 1024/2048 GB. Chrome's StorageManager normally reports ~60% of total disk
|
|
141
|
+
// space; we mirror that range with ±10% seed-driven jitter so different
|
|
142
|
+
// profiles get different (but plausible) values.
|
|
143
|
+
const storageQuota = deriveStorageQuota(seed, deviceMemory);
|
|
144
|
+
const navigator = {
|
|
145
|
+
platform, // legacy form: 'MacIntel' | 'Win32' | 'Linux x86_64'
|
|
146
|
+
...(locale.language && { language: locale.language }),
|
|
147
|
+
...(locale.languages && { languages: locale.languages }),
|
|
148
|
+
hardwareConcurrency: fp.navigator?.hardwareConcurrency ?? 8,
|
|
149
|
+
deviceMemory,
|
|
150
|
+
storageQuota,
|
|
151
|
+
userAgent,
|
|
152
|
+
...(uaBrands.length > 0 && {
|
|
153
|
+
userAgentData: {
|
|
154
|
+
brands: uaBrands,
|
|
155
|
+
mobile: uaData?.mobile ?? false,
|
|
156
|
+
platform: uaData?.platform ?? uaChPlatform,
|
|
157
|
+
platformVersion: normalizePlatformVersion(platform, uaData?.platformVersion, seed),
|
|
158
|
+
architecture: uaData?.architecture ?? 'x86',
|
|
159
|
+
bitness: uaData?.bitness ?? '64',
|
|
160
|
+
model: uaData?.model ?? '',
|
|
161
|
+
uaFullVersion,
|
|
162
|
+
fullVersionList: uaBrands,
|
|
163
|
+
},
|
|
164
|
+
}),
|
|
165
|
+
};
|
|
166
|
+
return { navigator, brandName, uaChPlatform, platform };
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Build the WebGL surface: vendor/renderer passthrough, family classification,
|
|
170
|
+
* texture-size cap matched to the renderer, and the per-family pname block. Pure.
|
|
171
|
+
*/
|
|
172
|
+
function buildWebglSurface(fp) {
|
|
71
173
|
// WebGL from fingerprint. Real Chrome 147 on Apple Silicon leaks the
|
|
72
174
|
// exact chip variant verbatim ("ANGLE (Apple, ANGLE Metal Renderer:
|
|
73
175
|
// Apple M4 Pro, Unspecified Version)"), confirmed against a user's
|
|
74
176
|
// shipping Chrome + CreepJS verdict. Matching that behavior is safer than
|
|
75
|
-
// sanitizing to a generic M1
|
|
177
|
+
// sanitizing to a generic M1 - anti-bot ML models expect the raw string,
|
|
76
178
|
// and the hardware leak is not a Chrome-level invariant violation.
|
|
77
179
|
const videoCard = fp.videoCard;
|
|
78
180
|
const webglVendor = videoCard?.vendor ?? 'Google Inc. (NVIDIA)';
|
|
79
181
|
const webglRenderer = videoCard?.renderer
|
|
80
182
|
?? 'ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0, D3D11)';
|
|
81
|
-
//
|
|
183
|
+
// GL_MAX_TEXTURE_SIZE override. SwiftShader (--use-angle=swiftshader) returns
|
|
184
|
+
// 8192; real Apple Silicon (Metal), modern NVIDIA / AMD discrete GPUs, and
|
|
185
|
+
// most Intel iGPUs return 16384. Pair the spoofed renderer with its real
|
|
186
|
+
// texture-size cap; mismatch is an instant CreepJS catch.
|
|
187
|
+
//
|
|
188
|
+
// M1 - also classify the renderer into a GPU family (apple_metal,
|
|
189
|
+
// linux_mesa_*, windows_d3d_*) so we can populate the rest of the
|
|
190
|
+
// platform-divergent WebGL pnames (max_draw_buffers, aliased_*_range, ...)
|
|
191
|
+
// from the per-family PLATFORM_GPU_TABLE. The C++ binary ignores the new
|
|
192
|
+
// keys until M2 lands the parser additions; once it does, the JSON shape
|
|
193
|
+
// is already correct.
|
|
194
|
+
const rendererLower = webglRenderer.toLowerCase();
|
|
195
|
+
// Thread navigator.platform so an unclassifiable renderer (SwiftShader,
|
|
196
|
+
// exotic strings) on a known OS falls back to that OS's family params
|
|
197
|
+
// instead of Apple-Silicon defaults - keeps the param block OS-coherent.
|
|
198
|
+
const navPlatform = fp.navigator?.platform;
|
|
199
|
+
const { family: webglFamily, profile: webglFamilyProfile } = deriveWebglFamilyProfile(webglRenderer, navPlatform);
|
|
200
|
+
const webglMaxTextureSize = (() => {
|
|
201
|
+
if (/apple|metal|m[123]\b|intel.*iris.*xe|nvidia geforce rtx 40|nvidia geforce rtx 30|nvidia geforce rtx 20|amd radeon (rx [56789]|pro)/i.test(rendererLower)) {
|
|
202
|
+
return 16384;
|
|
203
|
+
}
|
|
204
|
+
if (/nvidia geforce (gtx 1[06]|rtx 50|rtx 60)|amd radeon rx 7|nvidia rtx (a|h)/i.test(rendererLower)) {
|
|
205
|
+
return 32768; // newest cards / workstation
|
|
206
|
+
}
|
|
207
|
+
if (/swiftshader|llvmpipe|mesa offscreen/i.test(rendererLower)) {
|
|
208
|
+
return 8192; // honest SwiftShader claim
|
|
209
|
+
}
|
|
210
|
+
return webglFamilyProfile.maxTextureSize; // family-table default
|
|
211
|
+
})();
|
|
212
|
+
const webgl = {
|
|
213
|
+
vendor: webglVendor,
|
|
214
|
+
renderer: webglRenderer,
|
|
215
|
+
maxTextureSize: webglMaxTextureSize,
|
|
216
|
+
maxViewportDim: webglFamilyProfile.maxViewportDim,
|
|
217
|
+
extensions: webglFamilyProfile.extensions,
|
|
218
|
+
...(webglFamily && { familyHint: webglFamily }),
|
|
219
|
+
maxDrawBuffers: webglFamilyProfile.maxDrawBuffers,
|
|
220
|
+
maxSamples: webglFamilyProfile.maxSamples,
|
|
221
|
+
max3dTextureSize: webglFamilyProfile.max3dTextureSize,
|
|
222
|
+
maxArrayTextureLayers: webglFamilyProfile.maxArrayTextureLayers,
|
|
223
|
+
subpixelBits: webglFamilyProfile.subpixelBits,
|
|
224
|
+
maxTransformFeedbackInterleavedComponents: webglFamilyProfile.maxTransformFeedbackInterleavedComponents,
|
|
225
|
+
aliasedLineWidthRange: webglFamilyProfile.aliasedLineWidthRange,
|
|
226
|
+
aliasedPointSizeRange: webglFamilyProfile.aliasedPointSizeRange,
|
|
227
|
+
};
|
|
228
|
+
return { webgl, family: webglFamily, vendor: webglVendor };
|
|
229
|
+
}
|
|
230
|
+
/** Build the WebGPU surface from explicit fingerprint data or the WebGL vendor. Pure. */
|
|
231
|
+
function buildWebgpuSurface(fp, webglVendor) {
|
|
232
|
+
// WebGPU - from explicit webgpu field on fingerprint (non-Apify profiles), or
|
|
233
|
+
// derived from WebGL vendor as a fallback (Apify fingerprints have no webgpu data).
|
|
234
|
+
const webgpuData = fp.webgpu;
|
|
235
|
+
const derivedWebGPUVendor = webgpuData?.vendor ?? deriveWebGPUVendorFromWebGL(webglVendor);
|
|
236
|
+
if (!derivedWebGPUVendor)
|
|
237
|
+
return undefined;
|
|
238
|
+
return {
|
|
239
|
+
vendor: derivedWebGPUVendor,
|
|
240
|
+
architecture: webgpuData?.architecture ?? '',
|
|
241
|
+
device: webgpuData?.device ?? '',
|
|
242
|
+
description: webgpuData?.description ?? '',
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/** Build the screen surface, keeping it coherent with the claimed platform. Pure. */
|
|
246
|
+
function buildScreenSurface(fp) {
|
|
82
247
|
const screen = fp.screen;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
248
|
+
const isMac = /Mac/i.test(fp.navigator?.platform ?? '');
|
|
249
|
+
// colorDepth is NOT capped at 24. The previous cap carried the comment
|
|
250
|
+
// "real Chrome privacy-reduces to 24 regardless of display HDR capability".
|
|
251
|
+
// Measured 2026-08-10 against real Google Chrome 151.0.7922.108 on macOS
|
|
252
|
+
// 26.5.2: it reports 30, on colorDepth and pixelDepth alike. Capping made
|
|
253
|
+
// it impossible for a profile claiming a modern wide-gamut Mac to report
|
|
254
|
+
// what such a Mac reports, while every other screen field said Mac.
|
|
255
|
+
const colorDepth = screen?.colorDepth ?? (isMac ? 30 : 24);
|
|
256
|
+
// Every Apple Silicon Mac is Retina: devicePixelRatio is 2. A MacIntel
|
|
257
|
+
// platform with an Apple Metal renderer and devicePixelRatio 1 is a
|
|
258
|
+
// combination no real machine produces, and it is one line to check.
|
|
259
|
+
const rawRatio = screen?.devicePixelRatio;
|
|
260
|
+
const pixelRatio = isMac ? Math.max(rawRatio ?? 2, 2) : (rawRatio ?? 1);
|
|
261
|
+
// macOS always reserves the menu bar, so availHeight is strictly less than
|
|
262
|
+
// height. Measured 33px on a real Mac; the old blanket -40 is a Windows
|
|
263
|
+
// taskbar shape.
|
|
264
|
+
const height = screen?.height ?? (isMac ? 1117 : 1080);
|
|
265
|
+
const reserved = isMac ? 33 : 40;
|
|
266
|
+
return {
|
|
267
|
+
width: screen?.width ?? (isMac ? 1728 : 1920),
|
|
268
|
+
height,
|
|
269
|
+
availWidth: screen?.availWidth ?? screen?.width ?? (isMac ? 1728 : 1920),
|
|
270
|
+
availHeight: screen?.availHeight ?? height - reserved,
|
|
271
|
+
colorDepth,
|
|
272
|
+
pixelRatio,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Resolve the (navigator.language, navigator.languages, timezone) triple the
|
|
277
|
+
* config advertises. Prefers the pre-resolved locale (explicit-intent path),
|
|
278
|
+
* else a seeded plausible default. Pure.
|
|
279
|
+
*/
|
|
280
|
+
function buildLocaleSurface(headers, resolvedLocale, seed) {
|
|
87
281
|
// Accept-language: prefer the pre-resolved triple (so a user-supplied locale wins)
|
|
88
282
|
// and fall back to fingerprint headers when no resolution happened.
|
|
89
283
|
//
|
|
90
284
|
// Important: the C++ FingerprintConfig reader splits this string on commas and
|
|
91
285
|
// feeds each entry verbatim into `navigator.languages` (the JS array). Real Chrome's
|
|
92
|
-
// navigator.languages never carries q-values
|
|
286
|
+
// navigator.languages never carries q-values - those are HTTP Accept-Language
|
|
93
287
|
// semantics only. If we leave `"en-US,en;q=0.9"` in the config, the JS array leaks
|
|
94
288
|
// `"en;q=0.9"` which is an instant detectable anomaly. Strip q-values here so the
|
|
95
289
|
// config field is the clean list; the HTTP header flows from the same field and
|
|
96
290
|
// will also be q-less, which is a valid (if less common) real-browser pattern.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
//
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
291
|
+
if (resolvedLocale) {
|
|
292
|
+
// User specified a locale (fingerprintOptions.locale) or one was derived
|
|
293
|
+
// from the proxy session. Honour it verbatim - this is the explicit-intent
|
|
294
|
+
// path and the source of truth for navigator.language / Accept-Language /
|
|
295
|
+
// timezone propagation.
|
|
296
|
+
const raw = resolvedLocale.languages
|
|
297
|
+
?? headers['accept-language']
|
|
298
|
+
?? headers['Accept-Language'];
|
|
299
|
+
const languages = raw
|
|
300
|
+
? raw.split(',').map((l) => l.split(';')[0].trim()).filter(Boolean).join(',')
|
|
301
|
+
: undefined;
|
|
302
|
+
return { language: resolvedLocale.locale, languages, timezone: resolvedLocale.timezone };
|
|
303
|
+
}
|
|
304
|
+
// ─── No-intent fallback ─────────────────────────────────────────────
|
|
305
|
+
// Without a resolvedLocale, the fingerprint-generator's Accept-Language
|
|
306
|
+
// header reflects the HOST machine (Mac dev box in Prague → cs-CZ
|
|
307
|
+
// header). Using it would leak the host locale through navigator.languages
|
|
308
|
+
// and the Worker's Intl/Date paths regardless of what UA the spoof
|
|
309
|
+
// claims. CreepJS Worker probe flags this as "lang/timezone confidence:
|
|
310
|
+
// high" on the host's value - instant detection.
|
|
311
|
+
//
|
|
312
|
+
// Pin a seeded-but-plausible default so the seed deterministically picks
|
|
313
|
+
// a coherent (locale, languages, timezone) triple. Pool entries are
|
|
314
|
+
// common English-speaking combos that match the macOS UA-Reduction
|
|
315
|
+
// freeze; identical seed → identical triple, so Mac-on-Mac and
|
|
316
|
+
// Mac-on-Linux runs are diff-stable.
|
|
317
|
+
const FALLBACK_POOL = [
|
|
318
|
+
{ locale: 'en-US', languages: 'en-US,en', timezone: 'America/Los_Angeles' },
|
|
319
|
+
{ locale: 'en-US', languages: 'en-US,en', timezone: 'America/New_York' },
|
|
320
|
+
{ locale: 'en-US', languages: 'en-US,en', timezone: 'America/Chicago' },
|
|
321
|
+
{ locale: 'en-US', languages: 'en-US,en', timezone: 'America/Denver' },
|
|
322
|
+
{ locale: 'en-GB', languages: 'en-GB,en', timezone: 'Europe/London' },
|
|
323
|
+
{ locale: 'en-CA', languages: 'en-CA,en', timezone: 'America/Toronto' },
|
|
324
|
+
{ locale: 'en-AU', languages: 'en-AU,en', timezone: 'Australia/Sydney' },
|
|
325
|
+
];
|
|
326
|
+
const idx = Math.abs(Math.trunc(seed)) % FALLBACK_POOL.length;
|
|
327
|
+
const fb = FALLBACK_POOL[idx];
|
|
328
|
+
return { language: fb.locale, languages: fb.languages, timezone: fb.timezone };
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Derive the canvas text-rendering-mode hint from the WebGL family so canvas2D
|
|
332
|
+
* text rasterisation matches the OS we claim. Pure.
|
|
333
|
+
*/
|
|
334
|
+
function buildCanvasSurface(family) {
|
|
335
|
+
// M6: the C++ FingerprintConfig parser ALSO derives the same default when
|
|
336
|
+
// canvas is omitted entirely, so this is belt-and-suspenders - but writing
|
|
337
|
+
// it from here means the JSON config is self-describing and a reader can
|
|
338
|
+
// see exactly which mode + font allowlist the session ships with.
|
|
339
|
+
if (!family)
|
|
340
|
+
return undefined;
|
|
341
|
+
const textRenderingMode = (() => {
|
|
342
|
+
switch (family) {
|
|
343
|
+
case 'apple_metal': return 'subpixel_aa_no_hinting';
|
|
344
|
+
case 'windows_d3d_nvidia':
|
|
345
|
+
case 'windows_d3d_amd':
|
|
346
|
+
case 'windows_d3d_intel':
|
|
347
|
+
return 'lcd_subpixel_full_hinting';
|
|
348
|
+
case 'linux_mesa_amd':
|
|
349
|
+
case 'linux_mesa_nvidia':
|
|
350
|
+
case 'linux_mesa_intel':
|
|
351
|
+
return 'rgb_subpixel_slight_hinting';
|
|
352
|
+
default:
|
|
353
|
+
return undefined;
|
|
354
|
+
}
|
|
355
|
+
})();
|
|
356
|
+
return textRenderingMode ? { textRenderingMode } : undefined;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Generate a FingerprintConfig JSON object from fingerprint-generator output.
|
|
360
|
+
*
|
|
361
|
+
* Composed from per-surface pure builders (navigator / webgl / webgpu / screen /
|
|
362
|
+
* locale / battery / network / audio / canvas). The narrow public signature is
|
|
363
|
+
* the module interface - the builders stay private so callers assemble the whole
|
|
364
|
+
* config in one call.
|
|
365
|
+
*
|
|
366
|
+
* @param fingerprint - BrowserFingerprintWithHeaders from fingerprint-generator
|
|
367
|
+
* @param sessionId - Session identifier used to derive the seed (proxy session ID, etc.)
|
|
368
|
+
* @param resolvedLocale - Pre-resolved locale/languages/timezone triple. When provided,
|
|
369
|
+
* these values win over anything derived from fingerprint-generator headers so that a
|
|
370
|
+
* user-supplied `locale: 'ko-KR'` coherently propagates to every locale surface
|
|
371
|
+
* (Accept-Language, navigator.language, Intl defaults, timezone).
|
|
372
|
+
*/
|
|
373
|
+
export function generateFingerprintConfig(fingerprint, sessionId, resolvedLocale) {
|
|
374
|
+
const fp = fingerprint.fingerprint;
|
|
375
|
+
const { headers } = fingerprint;
|
|
376
|
+
const seed = deriveSeed(sessionId, fp.navigator?.userAgent ?? '');
|
|
377
|
+
const locale = buildLocaleSurface(headers, resolvedLocale, seed);
|
|
378
|
+
const nav = buildNavigatorSurface(fp, headers, seed, locale);
|
|
379
|
+
const webglSurface = buildWebglSurface(fp);
|
|
120
380
|
const config = {
|
|
121
381
|
version: 1,
|
|
122
382
|
seed,
|
|
123
|
-
brandName,
|
|
124
|
-
...(timezone && { timezone }),
|
|
125
|
-
navigator:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
userAgent,
|
|
132
|
-
...(uaBrands.length > 0 && {
|
|
133
|
-
userAgentData: {
|
|
134
|
-
brands: uaBrands,
|
|
135
|
-
mobile: uaData?.mobile ?? false,
|
|
136
|
-
platform: uaData?.platform ?? uaChPlatform,
|
|
137
|
-
platformVersion: uaData?.platformVersion ?? '15.0.0',
|
|
138
|
-
architecture: uaData?.architecture ?? 'x86',
|
|
139
|
-
bitness: uaData?.bitness ?? '64',
|
|
140
|
-
model: uaData?.model ?? '',
|
|
141
|
-
uaFullVersion: uaData?.uaFullVersion ?? extractFullVersion(userAgent),
|
|
142
|
-
fullVersionList: uaBrands,
|
|
143
|
-
},
|
|
144
|
-
}),
|
|
145
|
-
},
|
|
146
|
-
webgl: {
|
|
147
|
-
vendor: webglVendor,
|
|
148
|
-
renderer: webglRenderer,
|
|
149
|
-
},
|
|
150
|
-
screen: {
|
|
151
|
-
width: screen?.width ?? 1920,
|
|
152
|
-
height: screen?.height ?? 1080,
|
|
153
|
-
availWidth: screen?.availWidth ?? screen?.width ?? 1920,
|
|
154
|
-
availHeight: screen?.availHeight ?? (screen?.height ? screen.height - 40 : 1040),
|
|
155
|
-
colorDepth,
|
|
156
|
-
pixelRatio: screen?.devicePixelRatio ?? 1,
|
|
157
|
-
},
|
|
158
|
-
battery,
|
|
383
|
+
brandName: nav.brandName,
|
|
384
|
+
...(locale.timezone && { timezone: locale.timezone }),
|
|
385
|
+
navigator: nav.navigator,
|
|
386
|
+
webgl: webglSurface.webgl,
|
|
387
|
+
screen: buildScreenSurface(fp),
|
|
388
|
+
// Battery - generate realistic values based on target platform.
|
|
389
|
+
// Uses UA-CH platform names ('Windows'|'macOS'|'Linux') for the desktop/mac checks.
|
|
390
|
+
battery: generateBatteryConfig(nav.uaChPlatform, seed),
|
|
159
391
|
noise: {
|
|
160
392
|
canvas: true,
|
|
161
393
|
audio: true,
|
|
@@ -166,18 +398,19 @@ export function generateFingerprintConfig(fingerprint, sessionId, resolvedLocale
|
|
|
166
398
|
performanceNowResolutionMs: 1,
|
|
167
399
|
},
|
|
168
400
|
};
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
401
|
+
const webgpu = buildWebgpuSurface(fp, webglSurface.vendor);
|
|
402
|
+
if (webgpu)
|
|
403
|
+
config.webgpu = webgpu;
|
|
404
|
+
// navigator.connection - prevent datacenter rtt/downlink leak. Same seed
|
|
405
|
+
// → same values, so Mac and Linux Docker hosts running the same profile
|
|
406
|
+
// report the same connection metrics.
|
|
407
|
+
config.network = deriveNetwork(seed);
|
|
408
|
+
// AudioContext.sampleRate hint matched to platform. Consumed by the C++
|
|
409
|
+
// base_audio_context.h getter when the binding-layer override lands.
|
|
410
|
+
config.audio = { sampleRate: deriveAudioSampleRate(nav.platform) };
|
|
411
|
+
const canvas = buildCanvasSurface(webglSurface.family);
|
|
412
|
+
if (canvas)
|
|
413
|
+
config.canvas = canvas;
|
|
181
414
|
return config;
|
|
182
415
|
}
|
|
183
416
|
/**
|
|
@@ -199,33 +432,10 @@ export async function cleanupTempFingerprintConfig(filePath) {
|
|
|
199
432
|
await fs.unlink(filePath);
|
|
200
433
|
}
|
|
201
434
|
catch {
|
|
202
|
-
// Non-fatal
|
|
435
|
+
// Non-fatal - temp file will be cleaned by OS eventually
|
|
203
436
|
}
|
|
204
437
|
}
|
|
205
438
|
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
206
|
-
/**
|
|
207
|
-
* Clamp a raw device-memory-in-GB value to the buckets required by the
|
|
208
|
-
* Device Memory API spec (https://www.w3.org/TR/device-memory/). Chrome
|
|
209
|
-
* always quantizes to {0.25, 0.5, 1, 2, 4, 8}. Returning anything outside
|
|
210
|
-
* this set — especially the real value on >8 GB machines — is an instant
|
|
211
|
-
* anti-bot detection signal.
|
|
212
|
-
*
|
|
213
|
-
* Rule (per spec): the returned value is the closest bucket that is less
|
|
214
|
-
* than or equal to the actual value, capped at 8.
|
|
215
|
-
*/
|
|
216
|
-
function clampDeviceMemoryToSpecBuckets(raw) {
|
|
217
|
-
const buckets = [0.25, 0.5, 1, 2, 4, 8];
|
|
218
|
-
if (!Number.isFinite(raw) || raw <= 0)
|
|
219
|
-
return 8;
|
|
220
|
-
if (raw >= 8)
|
|
221
|
-
return 8;
|
|
222
|
-
let bucket = buckets[0];
|
|
223
|
-
for (const b of buckets) {
|
|
224
|
-
if (b <= raw)
|
|
225
|
-
bucket = b;
|
|
226
|
-
}
|
|
227
|
-
return bucket;
|
|
228
|
-
}
|
|
229
439
|
/** Extract full Chrome version string from User-Agent (e.g. "Chrome/136.0.7103.0") */
|
|
230
440
|
function extractFullVersion(userAgent) {
|
|
231
441
|
const match = userAgent.match(/Chrome\/(\d+\.\d+\.\d+\.\d+)/);
|
|
@@ -304,7 +514,7 @@ function seedRng(seed) {
|
|
|
304
514
|
return () => {
|
|
305
515
|
s = (s + 0x6D2B79F5) | 0;
|
|
306
516
|
let t = Math.imul(s ^ (s >>> 15), 1 | s);
|
|
307
|
-
t
|
|
517
|
+
t ^= t + Math.imul(t ^ (t >>> 7), 61 | t);
|
|
308
518
|
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
309
519
|
};
|
|
310
520
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anti-detect-config.js","sourceRoot":"","sources":["../../src/browser-process/anti-detect-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anti-detect-config.js","sourceRoot":"","sources":["../../src/browser-process/anti-detect-config.ts"],"names":[],"mappings":"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"}
|