jumpy-lion 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-controller.d.ts +22 -3
- package/dist/browser-controller.d.ts.map +1 -1
- package/dist/browser-controller.js +319 -28
- package/dist/browser-controller.js.map +1 -1
- package/dist/browser-plugin.d.ts +56 -7
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +268 -56
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/browser.d.ts +39 -0
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +125 -18
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/browser-process/process.d.ts +9 -0
- package/dist/browser-process/process.d.ts.map +1 -1
- package/dist/browser-process/process.js +100 -6
- package/dist/browser-process/process.js.map +1 -1
- package/dist/browser-profiles/chrome/default.d.ts +116 -0
- package/dist/browser-profiles/chrome/default.d.ts.map +1 -1
- package/dist/browser-profiles/chrome/default.js +118 -1
- package/dist/browser-profiles/chrome/default.js.map +1 -1
- package/dist/browser-profiles/chrome/populate-profile.d.ts +76 -0
- package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -0
- package/dist/browser-profiles/chrome/populate-profile.js +300 -0
- package/dist/browser-profiles/chrome/populate-profile.js.map +1 -0
- package/dist/browser-profiles/index.d.ts +1 -0
- package/dist/browser-profiles/index.d.ts.map +1 -1
- package/dist/browser-profiles/index.js +2 -0
- package/dist/browser-profiles/index.js.map +1 -1
- package/dist/crawler.d.ts +81 -9
- package/dist/crawler.d.ts.map +1 -1
- package/dist/crawler.js +26 -10
- package/dist/crawler.js.map +1 -1
- package/dist/fingerprinting/all-fingerprint-defender/_locales/en/messages.json +95 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts +83 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/debounce-09920c81.css +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/options-fe2fb5aa.css +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/popup-1886d2ef.css +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-128.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-16.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-24.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-32-disabled.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-32.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-48.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/manifest.json +83 -0
- package/dist/fingerprinting/all-fingerprint-defender/options.html +17 -0
- package/dist/fingerprinting/all-fingerprint-defender/popup.html +23 -0
- package/dist/fingerprinting/anti-webgpu/background.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/background.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/background.js +4 -0
- package/dist/fingerprinting/anti-webgpu/background.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js +50 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js +172 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/128.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/16.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/32.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/48.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/64.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.css +88 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.html +58 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.js +96 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.js +249 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.js +86 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.js +14 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.js +107 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/manifest.json +58 -0
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts +87 -0
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +1 -0
- package/dist/fingerprinting/custom-fingerprint-injector.js +342 -0
- package/dist/fingerprinting/custom-fingerprint-injector.js.map +1 -0
- package/dist/fingerprinting/fingerprint-injector.d.ts +157 -0
- package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-injector.js +632 -0
- package/dist/fingerprinting/fingerprint-injector.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js +119 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js +149 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts +14 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js +763 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js +195 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts +10 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js +195 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +28 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +1181 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts +7 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js +171 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts +36 -0
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/index.js +40 -0
- package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +45 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +268 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +301 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts +7 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js +58 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js +249 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts +33 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +618 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js +356 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts +18 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js +171 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +55 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +244 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts +14 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +925 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js +346 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js +264 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +27 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +213 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.d.ts +12 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.js +517 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts +12 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +215 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js +202 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +188 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/launcher-wrap.d.ts +2 -2
- package/dist/launcher-wrap.d.ts.map +1 -1
- package/dist/launcher-wrap.js.map +1 -1
- package/dist/page.d.ts +161 -7
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +1034 -23
- package/dist/page.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datadome-bypass.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/datadome-bypass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAW,EAAE;IACnD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+nCL,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Font Spoofing
|
|
3
|
+
* Hides Linux-specific fonts and reports Windows/Mac fonts as available
|
|
4
|
+
* Now includes randomization to prevent cross-session correlation
|
|
5
|
+
*/
|
|
6
|
+
export declare const createFontSpoofingScript: () => string;
|
|
7
|
+
//# sourceMappingURL=font-spoofing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-spoofing.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/font-spoofing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,wBAAwB,QAAO,MAoK3C,CAAC"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Font Spoofing
|
|
3
|
+
* Hides Linux-specific fonts and reports Windows/Mac fonts as available
|
|
4
|
+
* Now includes randomization to prevent cross-session correlation
|
|
5
|
+
*/
|
|
6
|
+
export const createFontSpoofingScript = () => {
|
|
7
|
+
return `
|
|
8
|
+
(() => {
|
|
9
|
+
'use strict';
|
|
10
|
+
|
|
11
|
+
// Font Spoofing for 2025 - Platform-aware font availability with randomization
|
|
12
|
+
const spoofFonts = () => {
|
|
13
|
+
// Generate a session-stable seed from current time and user agent
|
|
14
|
+
const generateSeed = () => {
|
|
15
|
+
const ua = navigator.userAgent || '';
|
|
16
|
+
const timeStamp = Math.floor(Date.now() / (1000 * 60 * 60 * 24)); // Changes daily
|
|
17
|
+
return ua.split('').reduce((a, b) => a + b.charCodeAt(0), 0) + timeStamp;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Seeded PRNG (mulberry32) for consistent values
|
|
21
|
+
const seededRandom = (seed) => {
|
|
22
|
+
let s = seed | 0;
|
|
23
|
+
s = s + 0x6D2B79F5 | 0;
|
|
24
|
+
let t = Math.imul(s ^ s >>> 15, 1 | s);
|
|
25
|
+
t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
|
|
26
|
+
return ((t ^ t >>> 14) >>> 0) / 4294967296;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const sessionSeed = generateSeed();
|
|
30
|
+
|
|
31
|
+
// Platform-specific font lists
|
|
32
|
+
const basePlatformFonts = {
|
|
33
|
+
'Win32': [
|
|
34
|
+
'Arial', 'Times New Roman', 'Calibri', 'Segoe UI', 'Georgia', 'Verdana',
|
|
35
|
+
'Trebuchet MS', 'Impact', 'Comic Sans MS', 'Courier New', 'Palatino Linotype',
|
|
36
|
+
'Book Antiqua', 'Lucida Console', 'Lucida Sans Unicode', 'MS Sans Serif',
|
|
37
|
+
'MS Serif', 'Tahoma', 'Century Gothic', 'Franklin Gothic Medium',
|
|
38
|
+
'Arial Black', 'Garamond', 'Bookman Old Style', 'Copperplate Gothic Bold',
|
|
39
|
+
'Copperplate Gothic Light', 'Century Schoolbook', 'Monotype Corsiva',
|
|
40
|
+
'Bradley Hand ITC', 'Brush Script MT', 'Chiller', 'Harrington',
|
|
41
|
+
'Jokerman', 'Old English Text MT', 'Papyrus', 'Stencil', 'Vivaldi',
|
|
42
|
+
'Wingdings', 'Wingdings 2', 'Wingdings 3', 'Webdings', 'Symbol'
|
|
43
|
+
],
|
|
44
|
+
'MacIntel': [
|
|
45
|
+
'Helvetica', 'Times', 'Courier', 'Monaco', 'Geneva', 'Chicago',
|
|
46
|
+
'New York', 'Palatino', 'Charcoal', 'Sand', 'Techno', 'Textile',
|
|
47
|
+
'American Typewriter', 'Andale Mono', 'Apple Chancery', 'Apple Color Emoji',
|
|
48
|
+
'Apple SD Gothic Neo', 'Apple Symbols', 'AppleGothic', 'Arial',
|
|
49
|
+
'Arial Black', 'Arial Narrow', 'Arial Rounded MT Bold', 'Arial Unicode MS',
|
|
50
|
+
'Avenir', 'Avenir Next', 'Avenir Next Condensed', 'Baskerville',
|
|
51
|
+
'Big Caslon', 'Bodoni 72', 'Bodoni 72 Oldstyle', 'Bodoni 72 Smallcaps',
|
|
52
|
+
'Bradley Hand', 'Brush Script MT', 'Chalkboard', 'Chalkboard SE',
|
|
53
|
+
'Chalkduster', 'Charter', 'Cochin', 'Comic Sans MS', 'Copperplate',
|
|
54
|
+
'Courier New', 'Didot', 'Futura', 'Georgia', 'Gill Sans', 'Helvetica Neue',
|
|
55
|
+
'Hoefler Text', 'Impact', 'Lucida Grande', 'Marker Felt', 'Menlo',
|
|
56
|
+
'Optima', 'Papyrus', 'Phosphate', 'Rockwell', 'Savoye LET', 'SignPainter',
|
|
57
|
+
'Skia', 'Snell Roundhand', 'Tahoma', 'Times New Roman', 'Trattatello',
|
|
58
|
+
'Trebuchet MS', 'Verdana', 'Zapfino'
|
|
59
|
+
],
|
|
60
|
+
'Linux x86_64': [
|
|
61
|
+
// Limited font set typical for Linux systems
|
|
62
|
+
'Arial', 'Times New Roman', 'Courier New', 'Georgia', 'Verdana',
|
|
63
|
+
'Tahoma', 'Trebuchet MS', 'Impact', 'Comic Sans MS', 'Palatino Linotype',
|
|
64
|
+
'Lucida Console', 'Lucida Sans Unicode', 'DejaVu Sans', 'DejaVu Serif',
|
|
65
|
+
'DejaVu Sans Mono', 'Liberation Sans', 'Liberation Serif', 'Liberation Mono',
|
|
66
|
+
'Ubuntu', 'Ubuntu Mono', 'Droid Sans', 'Droid Serif', 'Droid Sans Mono'
|
|
67
|
+
]
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Get platform from navigator (this should be spoofed by platform consistency)
|
|
71
|
+
const platform = navigator.platform || 'Win32';
|
|
72
|
+
const baseFonts = basePlatformFonts[platform] || basePlatformFonts['Win32'];
|
|
73
|
+
|
|
74
|
+
// Randomize font availability (remove 2-5 fonts randomly but consistently per session)
|
|
75
|
+
const fontsToRemove = Math.floor(seededRandom(sessionSeed) * 4) + 2; // 2-5 fonts
|
|
76
|
+
const shuffledFonts = [...baseFonts];
|
|
77
|
+
|
|
78
|
+
// Remove some fonts based on session seed to create variance
|
|
79
|
+
for (let i = 0; i < fontsToRemove; i++) {
|
|
80
|
+
const indexToRemove = Math.floor(seededRandom(sessionSeed + i + 100) * shuffledFonts.length);
|
|
81
|
+
// Don't remove core fonts
|
|
82
|
+
const coreFonts = ['Arial', 'Times New Roman', 'Courier New', 'Georgia', 'Verdana'];
|
|
83
|
+
if (!coreFonts.includes(shuffledFonts[indexToRemove])) {
|
|
84
|
+
shuffledFonts.splice(indexToRemove, 1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const availableFonts = shuffledFonts;
|
|
89
|
+
// NOTE: Removed sessionStorage persistence of font list.
|
|
90
|
+
// Writing 'cdp_font_list' to sessionStorage is a trivially detectable fingerprint.
|
|
91
|
+
// The seeded PRNG already ensures session-stable font selection.
|
|
92
|
+
|
|
93
|
+
// Override document.fonts.check if available
|
|
94
|
+
if (document.fonts && document.fonts.check) {
|
|
95
|
+
const originalCheck = document.fonts.check;
|
|
96
|
+
document.fonts.check = function(font, text) {
|
|
97
|
+
// Extract font family from font descriptor
|
|
98
|
+
const fontFamily = font.match(/(?:^|\\s)(['"]?)([^'"\\s,]+)\\1(?=\\s|,|$)/)?.[2];
|
|
99
|
+
|
|
100
|
+
if (fontFamily && availableFonts.includes(fontFamily)) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// For fonts not in our list, return false to hide Linux-specific fonts
|
|
105
|
+
if (fontFamily) {
|
|
106
|
+
const linuxSpecificFonts = [
|
|
107
|
+
'Ubuntu', 'Liberation Sans', 'DejaVu Sans', 'Noto Sans', 'Cantarell',
|
|
108
|
+
'Source Sans Pro', 'Droid Sans', 'Roboto', 'Open Sans'
|
|
109
|
+
];
|
|
110
|
+
if (linuxSpecificFonts.includes(fontFamily)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Fall back to original check for other cases
|
|
116
|
+
try {
|
|
117
|
+
return originalCheck.call(this, font, text);
|
|
118
|
+
} catch (e) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Override FontFace constructor to control font loading
|
|
125
|
+
if (typeof FontFace !== 'undefined') {
|
|
126
|
+
const OriginalFontFace = FontFace;
|
|
127
|
+
window.FontFace = new Proxy(OriginalFontFace, {
|
|
128
|
+
construct(target, args) {
|
|
129
|
+
const [family, source, descriptors] = args;
|
|
130
|
+
|
|
131
|
+
// Check if this font should be available on our target platform
|
|
132
|
+
if (availableFonts.includes(family)) {
|
|
133
|
+
return Reflect.construct(target, args);
|
|
134
|
+
} else {
|
|
135
|
+
// Create a font face that will fail to load for unavailable fonts
|
|
136
|
+
const fontFace = Reflect.construct(target, [family, 'url(data:,)', descriptors]);
|
|
137
|
+
// Override the load method to always reject
|
|
138
|
+
fontFace.load = function() {
|
|
139
|
+
return Promise.reject(new DOMException('Font load failed', 'NetworkError'));
|
|
140
|
+
};
|
|
141
|
+
return fontFace;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// NOTE: measureText override removed - canvas-protection.ts already handles
|
|
148
|
+
// canvas measurement spoofing with seeded PRNG. Double-overriding measureText
|
|
149
|
+
// creates detectable proxy chains and inconsistent behavior.
|
|
150
|
+
|
|
151
|
+
// NOTE: getComputedStyle Proxy removed. Wrapping every getComputedStyle call
|
|
152
|
+
// in a Proxy is highly detectable (anti-bot checks for Proxy behavior on
|
|
153
|
+
// CSSStyleDeclaration objects via toString, Symbol.toStringTag, and perf timing).
|
|
154
|
+
// Font availability is already controlled via document.fonts.check and FontFace overrides.
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
const DEBUG_PREFIX = '[CDP-FP-DEBUG]';
|
|
158
|
+
const ERROR_PREFIX = '[CDP-FP-ERROR]';
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
console.log(DEBUG_PREFIX, 'Starting font spoofing...');
|
|
162
|
+
spoofFonts();
|
|
163
|
+
console.log(DEBUG_PREFIX, '✓ Font spoofing applied');
|
|
164
|
+
} catch (e) {
|
|
165
|
+
console.error(ERROR_PREFIX, '✗ Failed to apply font spoofing:', e);
|
|
166
|
+
throw e;
|
|
167
|
+
}
|
|
168
|
+
})();
|
|
169
|
+
`;
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=font-spoofing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-spoofing.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/font-spoofing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAW,EAAE;IACjD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkKV,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fingerprint Overrides Index
|
|
3
|
+
* Exports all individual fingerprint override modules
|
|
4
|
+
*
|
|
5
|
+
* 2024-2025 Additions:
|
|
6
|
+
* - CDP Detection Bypass
|
|
7
|
+
* - Storage Consistency
|
|
8
|
+
* - Timing Consistency
|
|
9
|
+
* - Keyboard Humanization
|
|
10
|
+
* - Scroll Humanization
|
|
11
|
+
* - DataDome Bypass
|
|
12
|
+
*/
|
|
13
|
+
export { createStealthScript } from './stealth-script.js';
|
|
14
|
+
export { createWebGLSpoofingScript, type WebGLConfig } from './webgl-spoofing.js';
|
|
15
|
+
export { createAudioFingerprintSpoofingScript } from './audio-spoofing.js';
|
|
16
|
+
export { createAdvancedCanvasProtectionScript } from './canvas-protection.js';
|
|
17
|
+
export { createClientRectSpoofingScript } from './client-rect-spoofing.js';
|
|
18
|
+
export { createWebRTCSpoofingScript } from './webrtc-spoofing.js';
|
|
19
|
+
export { createWebGPUSpoofingScript } from './webgpu-spoofing.js';
|
|
20
|
+
export { createPlatformConsistencyScript, type PlatformConfig } from './platform-consistency.js';
|
|
21
|
+
export { setupMouseMovementHumanization } from './mouse-humanization.js';
|
|
22
|
+
export { createRuntimeEnableBypassScript } from './runtime-enable-bypass.js';
|
|
23
|
+
export { createFontSpoofingScript } from './font-spoofing.js';
|
|
24
|
+
export { createPerformanceSpoofingScript } from './performance-spoofing.js';
|
|
25
|
+
export { createLocaleSpoofingScript } from './locale-spoofing.js';
|
|
26
|
+
export { createUAClientHintsSpoofingScript, type UAClientHintsData } from './ua-ch.js';
|
|
27
|
+
export { createStealthUtilsScript } from './utils.js';
|
|
28
|
+
export { createPrototypeIntegrityScript } from './prototype-integrity.js';
|
|
29
|
+
export { createCDPDetectionBypassScript } from './cdp-detection-bypass.js';
|
|
30
|
+
export { createStorageConsistencyScript } from './storage-consistency.js';
|
|
31
|
+
export { createTimingConsistencyScript } from './timing-consistency.js';
|
|
32
|
+
export { createKeyboardHumanizationScript, setupKeyboardHumanization, generateTypingDelays, createHumanTypingFunction } from './keyboard-humanization.js';
|
|
33
|
+
export { createScrollHumanizationScript, setupScrollHumanization, humanScroll, humanScrollToElement, generateScrollPath } from './scroll-humanization.js';
|
|
34
|
+
export { createDataDomeBypassScript } from './datadome-bypass.js';
|
|
35
|
+
export { createCoalescedEventsSpoofingScript } from './coalesced-events-spoofing.js';
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACH,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,8BAA8B,EAC9B,uBAAuB,EACvB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fingerprint Overrides Index
|
|
3
|
+
* Exports all individual fingerprint override modules
|
|
4
|
+
*
|
|
5
|
+
* 2024-2025 Additions:
|
|
6
|
+
* - CDP Detection Bypass
|
|
7
|
+
* - Storage Consistency
|
|
8
|
+
* - Timing Consistency
|
|
9
|
+
* - Keyboard Humanization
|
|
10
|
+
* - Scroll Humanization
|
|
11
|
+
* - DataDome Bypass
|
|
12
|
+
*/
|
|
13
|
+
// Base stealth and protection scripts
|
|
14
|
+
export { createStealthScript } from './stealth-script.js';
|
|
15
|
+
export { createWebGLSpoofingScript } from './webgl-spoofing.js';
|
|
16
|
+
export { createAudioFingerprintSpoofingScript } from './audio-spoofing.js';
|
|
17
|
+
export { createAdvancedCanvasProtectionScript } from './canvas-protection.js';
|
|
18
|
+
export { createClientRectSpoofingScript } from './client-rect-spoofing.js';
|
|
19
|
+
export { createWebRTCSpoofingScript } from './webrtc-spoofing.js';
|
|
20
|
+
export { createWebGPUSpoofingScript } from './webgpu-spoofing.js';
|
|
21
|
+
export { createPlatformConsistencyScript } from './platform-consistency.js';
|
|
22
|
+
export { setupMouseMovementHumanization } from './mouse-humanization.js';
|
|
23
|
+
export { createRuntimeEnableBypassScript } from './runtime-enable-bypass.js';
|
|
24
|
+
export { createFontSpoofingScript } from './font-spoofing.js';
|
|
25
|
+
export { createPerformanceSpoofingScript } from './performance-spoofing.js';
|
|
26
|
+
export { createLocaleSpoofingScript } from './locale-spoofing.js';
|
|
27
|
+
export { createUAClientHintsSpoofingScript } from './ua-ch.js';
|
|
28
|
+
// Stealth utilities (must be injected first)
|
|
29
|
+
export { createStealthUtilsScript } from './utils.js';
|
|
30
|
+
// Prototype integrity (should be injected early)
|
|
31
|
+
export { createPrototypeIntegrityScript } from './prototype-integrity.js';
|
|
32
|
+
// 2024-2025 New modules
|
|
33
|
+
export { createCDPDetectionBypassScript } from './cdp-detection-bypass.js';
|
|
34
|
+
export { createStorageConsistencyScript } from './storage-consistency.js';
|
|
35
|
+
export { createTimingConsistencyScript } from './timing-consistency.js';
|
|
36
|
+
export { createKeyboardHumanizationScript, setupKeyboardHumanization, generateTypingDelays, createHumanTypingFunction } from './keyboard-humanization.js';
|
|
37
|
+
export { createScrollHumanizationScript, setupScrollHumanization, humanScroll, humanScrollToElement, generateScrollPath } from './scroll-humanization.js';
|
|
38
|
+
export { createDataDomeBypassScript } from './datadome-bypass.js';
|
|
39
|
+
export { createCoalescedEventsSpoofingScript } from './coalesced-events-spoofing.js';
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sCAAsC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAoB,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAuB,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAA0B,MAAM,YAAY,CAAC;AAEvF,6CAA6C;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,iDAAiD;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAE1E,wBAAwB;AACxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACH,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,8BAA8B,EAC9B,uBAAuB,EACvB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard Humanization Module
|
|
3
|
+
* Simulates realistic keyboard behavior for 2024-2025
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Variable keystroke timing (faster for common patterns)
|
|
7
|
+
* - Realistic key press/release timing gaps
|
|
8
|
+
* - Shift key timing consistency
|
|
9
|
+
* - Tab/Enter key natural delays
|
|
10
|
+
* - CDP-level typing enhancement
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Keyboard timing configuration
|
|
14
|
+
*/
|
|
15
|
+
interface KeyboardConfig {
|
|
16
|
+
/** Base delay between keystrokes in ms */
|
|
17
|
+
baseDelay: number;
|
|
18
|
+
/** Variance in delay (±ms) */
|
|
19
|
+
delayVariance: number;
|
|
20
|
+
/** Delay between key press and release in ms */
|
|
21
|
+
pressReleaseDelay: number;
|
|
22
|
+
/** Extra delay for special keys (Enter, Tab) */
|
|
23
|
+
specialKeyDelay: number;
|
|
24
|
+
/** Delay when using shift key */
|
|
25
|
+
shiftDelay: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generate human-like typing delays for a string
|
|
29
|
+
*/
|
|
30
|
+
export declare const generateTypingDelays: (text: string, config?: Partial<KeyboardConfig>) => number[];
|
|
31
|
+
/**
|
|
32
|
+
* Create a script that enhances keyboard events in the browser
|
|
33
|
+
*/
|
|
34
|
+
export declare const createKeyboardHumanizationScript: () => string;
|
|
35
|
+
/**
|
|
36
|
+
* CDP-level keyboard typing helper
|
|
37
|
+
* Returns an async function that types text with human-like delays
|
|
38
|
+
*/
|
|
39
|
+
export declare const createHumanTypingFunction: (client: unknown, config?: Partial<KeyboardConfig>) => Promise<(text: string) => Promise<void>>;
|
|
40
|
+
/**
|
|
41
|
+
* Setup keyboard humanization at CDP level
|
|
42
|
+
*/
|
|
43
|
+
export declare const setupKeyboardHumanization: (client: unknown) => Promise<void>;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=keyboard-humanization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-humanization.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/keyboard-humanization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,UAAU,cAAc;IACpB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACtB;AAqBD;;GAEG;AACH,eAAO,MAAM,oBAAoB,SACvB,MAAM,WACJ,OAAO,CAAC,cAAc,CAAC,KAChC,MAAM,EAiDR,CAAC;AA2BF;;GAEG;AACH,eAAO,MAAM,gCAAgC,QAAO,MAwGnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,OAAO,WACP,OAAO,CAAC,cAAc,CAAC,KAChC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CA+DzC,CAAC;AAOF;;GAEG;AACH,eAAO,MAAM,yBAAyB,WAAkB,OAAO,KAAG,OAAO,CAAC,IAAI,CAc7E,CAAC"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard Humanization Module
|
|
3
|
+
* Simulates realistic keyboard behavior for 2024-2025
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Variable keystroke timing (faster for common patterns)
|
|
7
|
+
* - Realistic key press/release timing gaps
|
|
8
|
+
* - Shift key timing consistency
|
|
9
|
+
* - Tab/Enter key natural delays
|
|
10
|
+
* - CDP-level typing enhancement
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
baseDelay: 80,
|
|
14
|
+
delayVariance: 40,
|
|
15
|
+
pressReleaseDelay: 30,
|
|
16
|
+
specialKeyDelay: 150,
|
|
17
|
+
shiftDelay: 50,
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Common word patterns that are typed faster
|
|
21
|
+
*/
|
|
22
|
+
const COMMON_PATTERNS = [
|
|
23
|
+
'the', 'and', 'ing', 'ion', 'tion', 'ent', 'ation', 'for',
|
|
24
|
+
'her', 'ter', 'hat', 'tha', 'ere', 'ate', 'his', 'con', 'res',
|
|
25
|
+
'ver', 'all', 'ess', 'not', 'ive', 'was', 'ect', 'rea', 'com',
|
|
26
|
+
'eve', 'per', 'int', 'est', 'sta', 'cti', 'ica', 'ist', 'ear',
|
|
27
|
+
'ain', 'one', 'our', 'iti', 'rat', 'ted', 'men', 'ome', 'man',
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Generate human-like typing delays for a string
|
|
31
|
+
*/
|
|
32
|
+
export const generateTypingDelays = (text, config = {}) => {
|
|
33
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
34
|
+
const delays = [];
|
|
35
|
+
for (let i = 0; i < text.length; i++) {
|
|
36
|
+
const char = text[i];
|
|
37
|
+
const prevChar = i > 0 ? text[i - 1] : '';
|
|
38
|
+
const nextChars = text.substring(i, i + 3).toLowerCase();
|
|
39
|
+
// Base delay with variance
|
|
40
|
+
let delay = cfg.baseDelay + (Math.random() - 0.5) * cfg.delayVariance * 2;
|
|
41
|
+
// Faster for common patterns
|
|
42
|
+
if (COMMON_PATTERNS.some(pattern => nextChars.startsWith(pattern))) {
|
|
43
|
+
delay *= 0.7;
|
|
44
|
+
}
|
|
45
|
+
// Slower for uppercase (shift key)
|
|
46
|
+
if (char >= 'A' && char <= 'Z') {
|
|
47
|
+
delay += cfg.shiftDelay;
|
|
48
|
+
}
|
|
49
|
+
// Slower for special characters
|
|
50
|
+
if (/[!@#$%^&*()_+{}|:"<>?~`\-=\[\]\\;',./]/.test(char)) {
|
|
51
|
+
delay += cfg.specialKeyDelay * 0.5;
|
|
52
|
+
}
|
|
53
|
+
// Pause after punctuation
|
|
54
|
+
if (/[.!?]/.test(prevChar)) {
|
|
55
|
+
delay += cfg.specialKeyDelay;
|
|
56
|
+
}
|
|
57
|
+
// Slight pause after spaces (word boundary)
|
|
58
|
+
if (prevChar === ' ') {
|
|
59
|
+
delay += cfg.specialKeyDelay * 0.3;
|
|
60
|
+
}
|
|
61
|
+
// Faster when same hand (adjacent keys)
|
|
62
|
+
if (areAdjacentKeys(prevChar, char)) {
|
|
63
|
+
delay *= 0.8;
|
|
64
|
+
}
|
|
65
|
+
// Add minimum delay
|
|
66
|
+
delay = Math.max(20, delay);
|
|
67
|
+
delays.push(Math.round(delay));
|
|
68
|
+
}
|
|
69
|
+
return delays;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Check if two keys are adjacent on a QWERTY keyboard
|
|
73
|
+
*/
|
|
74
|
+
const areAdjacentKeys = (char1, char2) => {
|
|
75
|
+
const rows = [
|
|
76
|
+
'qwertyuiop',
|
|
77
|
+
'asdfghjkl',
|
|
78
|
+
'zxcvbnm',
|
|
79
|
+
];
|
|
80
|
+
const c1 = char1.toLowerCase();
|
|
81
|
+
const c2 = char2.toLowerCase();
|
|
82
|
+
for (const row of rows) {
|
|
83
|
+
const idx1 = row.indexOf(c1);
|
|
84
|
+
const idx2 = row.indexOf(c2);
|
|
85
|
+
if (idx1 !== -1 && idx2 !== -1 && Math.abs(idx1 - idx2) === 1) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Create a script that enhances keyboard events in the browser
|
|
93
|
+
*/
|
|
94
|
+
export const createKeyboardHumanizationScript = () => {
|
|
95
|
+
return `
|
|
96
|
+
(() => {
|
|
97
|
+
'use strict';
|
|
98
|
+
|
|
99
|
+
// Keyboard Humanization for 2024-2025
|
|
100
|
+
const humanizeKeyboard = () => {
|
|
101
|
+
// Store original event constructors
|
|
102
|
+
const OriginalKeyboardEvent = KeyboardEvent;
|
|
103
|
+
|
|
104
|
+
// Track key timing for consistency
|
|
105
|
+
let lastKeyTime = 0;
|
|
106
|
+
let lastKeyCode = '';
|
|
107
|
+
|
|
108
|
+
// Generate consistent timing based on key combination
|
|
109
|
+
const getKeyTiming = (key, isShift = false, isPunctuation = false) => {
|
|
110
|
+
const baseDelay = 80;
|
|
111
|
+
let timing = baseDelay + (Math.random() - 0.5) * 40;
|
|
112
|
+
|
|
113
|
+
// Slower for shift combinations
|
|
114
|
+
if (isShift) {
|
|
115
|
+
timing += 50;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Slower for punctuation
|
|
119
|
+
if (isPunctuation) {
|
|
120
|
+
timing += 30;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Ensure minimum gap between keys
|
|
124
|
+
const now = performance.now();
|
|
125
|
+
if (now - lastKeyTime < 30) {
|
|
126
|
+
timing += 30 - (now - lastKeyTime);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
lastKeyTime = now;
|
|
130
|
+
lastKeyCode = key;
|
|
131
|
+
|
|
132
|
+
return Math.round(timing);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// Override KeyboardEvent to include realistic properties
|
|
136
|
+
window.KeyboardEvent = function(type, eventInitDict = {}) {
|
|
137
|
+
// Ensure realistic event properties
|
|
138
|
+
const enhancedInit = { ...eventInitDict };
|
|
139
|
+
|
|
140
|
+
// Add realistic timing properties if not set
|
|
141
|
+
if (!enhancedInit.repeat) {
|
|
142
|
+
enhancedInit.repeat = false;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Ensure proper location for modifier keys
|
|
146
|
+
if (['Shift', 'Control', 'Alt', 'Meta'].includes(enhancedInit.key)) {
|
|
147
|
+
if (!enhancedInit.location) {
|
|
148
|
+
enhancedInit.location = Math.random() > 0.7 ? 2 : 1; // Right or Left
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const event = new OriginalKeyboardEvent(type, enhancedInit);
|
|
153
|
+
|
|
154
|
+
return event;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// Note: Don't assign to prototype - it may be frozen in modern Chrome
|
|
158
|
+
// The Proxy wrapper handles prototype access if needed
|
|
159
|
+
|
|
160
|
+
// Override document.createEvent for legacy support
|
|
161
|
+
const originalCreateEvent = document.createEvent;
|
|
162
|
+
document.createEvent = function(eventType) {
|
|
163
|
+
const event = originalCreateEvent.call(this, eventType);
|
|
164
|
+
|
|
165
|
+
if (eventType.toLowerCase().includes('keyboard')) {
|
|
166
|
+
// Add realistic properties to keyboard events
|
|
167
|
+
const originalInitKeyboardEvent = event.initKeyboardEvent;
|
|
168
|
+
if (originalInitKeyboardEvent) {
|
|
169
|
+
event.initKeyboardEvent = function(...args) {
|
|
170
|
+
// Enhance the initialization
|
|
171
|
+
originalInitKeyboardEvent.apply(this, args);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return event;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
// Override InputEvent for modern input handling
|
|
180
|
+
if (typeof InputEvent !== 'undefined') {
|
|
181
|
+
const OriginalInputEvent = InputEvent;
|
|
182
|
+
|
|
183
|
+
window.InputEvent = function(type, eventInitDict = {}) {
|
|
184
|
+
// Ensure inputType is set properly
|
|
185
|
+
if (!eventInitDict.inputType && type === 'input') {
|
|
186
|
+
eventInitDict.inputType = 'insertText';
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return new OriginalInputEvent(type, eventInitDict);
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// Note: Don't assign to prototype - it may be frozen in modern Chrome
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
humanizeKeyboard();
|
|
197
|
+
})();`;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* CDP-level keyboard typing helper
|
|
201
|
+
* Returns an async function that types text with human-like delays
|
|
202
|
+
*/
|
|
203
|
+
export const createHumanTypingFunction = async (client, config = {}) => {
|
|
204
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
205
|
+
return async (text) => {
|
|
206
|
+
const delays = generateTypingDelays(text, cfg);
|
|
207
|
+
const inputClient = client.Input;
|
|
208
|
+
for (let i = 0; i < text.length; i++) {
|
|
209
|
+
const char = text[i];
|
|
210
|
+
const delay = delays[i];
|
|
211
|
+
const needsShift = char >= 'A' && char <= 'Z' || /[!@#$%^&*()_+{}|:"<>?~]/.test(char);
|
|
212
|
+
// Press shift if needed
|
|
213
|
+
if (needsShift) {
|
|
214
|
+
await inputClient.dispatchKeyEvent({
|
|
215
|
+
type: 'keyDown',
|
|
216
|
+
key: 'Shift',
|
|
217
|
+
code: 'ShiftLeft',
|
|
218
|
+
modifiers: 8,
|
|
219
|
+
});
|
|
220
|
+
await sleep(cfg.shiftDelay * (0.8 + Math.random() * 0.4));
|
|
221
|
+
}
|
|
222
|
+
// Press the key
|
|
223
|
+
await inputClient.dispatchKeyEvent({
|
|
224
|
+
type: 'keyDown',
|
|
225
|
+
key: char,
|
|
226
|
+
text: char,
|
|
227
|
+
});
|
|
228
|
+
// Wait for press-release delay
|
|
229
|
+
await sleep(cfg.pressReleaseDelay * (0.8 + Math.random() * 0.4));
|
|
230
|
+
// Release the key
|
|
231
|
+
await inputClient.dispatchKeyEvent({
|
|
232
|
+
type: 'keyUp',
|
|
233
|
+
key: char,
|
|
234
|
+
});
|
|
235
|
+
// Release shift if it was pressed
|
|
236
|
+
if (needsShift) {
|
|
237
|
+
await sleep(cfg.shiftDelay * 0.5 * (0.8 + Math.random() * 0.4));
|
|
238
|
+
await inputClient.dispatchKeyEvent({
|
|
239
|
+
type: 'keyUp',
|
|
240
|
+
key: 'Shift',
|
|
241
|
+
code: 'ShiftLeft',
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
// Wait before next key
|
|
245
|
+
if (i < text.length - 1) {
|
|
246
|
+
await sleep(delay);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* Helper sleep function
|
|
253
|
+
*/
|
|
254
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
255
|
+
/**
|
|
256
|
+
* Setup keyboard humanization at CDP level
|
|
257
|
+
*/
|
|
258
|
+
export const setupKeyboardHumanization = async (client) => {
|
|
259
|
+
// Inject the keyboard humanization script
|
|
260
|
+
// NOTE: Using Page.addScriptToEvaluateOnNewDocument instead of Runtime.evaluate to avoid CDP detection
|
|
261
|
+
const inputClient = client;
|
|
262
|
+
// NOTE: Using addScriptToEvaluateOnNewDocument instead of Runtime.evaluate
|
|
263
|
+
// Runtime.evaluate is a CDP detection vector
|
|
264
|
+
await inputClient.Page.addScriptToEvaluateOnNewDocument({
|
|
265
|
+
source: createKeyboardHumanizationScript()
|
|
266
|
+
});
|
|
267
|
+
};
|
|
268
|
+
//# sourceMappingURL=keyboard-humanization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-humanization.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/keyboard-humanization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-spoofing.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/locale-spoofing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,0BAA0B,QAAO,MAuS7C,CAAC"}
|