jumpy-lion 0.0.33 → 0.0.34
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 +2 -2
- package/dist/browser-controller.d.ts.map +1 -1
- package/dist/browser-controller.js +34 -5
- package/dist/browser-controller.js.map +1 -1
- package/dist/browser-plugin.d.ts +21 -0
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +10 -4
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/browser.d.ts +15 -0
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +6 -3
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/crawler.d.ts +15 -0
- package/dist/crawler.d.ts.map +1 -1
- package/dist/crawler.js.map +1 -1
- 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 +6 -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 +179 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js.map +1 -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.js +95 -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 +255 -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 +87 -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 +13 -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 +109 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.js.map +1 -0
- package/dist/fingerprinting/fingerprint-injector.d.ts +85 -1
- package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.js +188 -90
- package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
- 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 +87 -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 +95 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.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 +96 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.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 +219 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts +19 -0
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/index.js +19 -0
- package/dist/fingerprinting/fingerprint-overrides/index.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 +262 -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 +103 -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 +228 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts +20 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +227 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js +84 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +440 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +95 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.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 +167 -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 +205 -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 +96 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/page.d.ts +1 -0
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +42 -1
- package/dist/page.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mouse Movement Humanization
|
|
3
|
+
* Generates bezier curve movements instead of straight lines
|
|
4
|
+
* Includes automatic human-like interactions after page load
|
|
5
|
+
*/
|
|
6
|
+
export const setupMouseMovementHumanization = async (client) => {
|
|
7
|
+
// Override CDP Input domain to add human-like variations
|
|
8
|
+
await client.send('Runtime.evaluate', {
|
|
9
|
+
expression: `
|
|
10
|
+
(() => {
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
// Store original mouse position
|
|
14
|
+
let lastX = 0;
|
|
15
|
+
let lastY = 0;
|
|
16
|
+
|
|
17
|
+
// Add bezier curve movement simulation
|
|
18
|
+
window.__humanizeMouseMovement = (fromX, fromY, toX, toY) => {
|
|
19
|
+
const steps = 20 + Math.floor(Math.random() * 10);
|
|
20
|
+
const points = [];
|
|
21
|
+
|
|
22
|
+
// Generate control points for bezier curve
|
|
23
|
+
const cp1x = fromX + (toX - fromX) * 0.25 + (Math.random() - 0.5) * 50;
|
|
24
|
+
const cp1y = fromY + (toY - fromY) * 0.25 + (Math.random() - 0.5) * 50;
|
|
25
|
+
const cp2x = fromX + (toX - fromX) * 0.75 + (Math.random() - 0.5) * 50;
|
|
26
|
+
const cp2y = fromY + (toY - fromY) * 0.75 + (Math.random() - 0.5) * 50;
|
|
27
|
+
|
|
28
|
+
// Calculate bezier curve points
|
|
29
|
+
for (let i = 0; i <= steps; i++) {
|
|
30
|
+
const t = i / steps;
|
|
31
|
+
const t2 = t * t;
|
|
32
|
+
const t3 = t2 * t;
|
|
33
|
+
const mt = 1 - t;
|
|
34
|
+
const mt2 = mt * mt;
|
|
35
|
+
const mt3 = mt2 * mt;
|
|
36
|
+
|
|
37
|
+
const x = mt3 * fromX + 3 * mt2 * t * cp1x + 3 * mt * t2 * cp2x + t3 * toX;
|
|
38
|
+
const y = mt3 * fromY + 3 * mt2 * t * cp1y + 3 * mt * t2 * cp2y + t3 * toY;
|
|
39
|
+
|
|
40
|
+
points.push({ x: Math.round(x), y: Math.round(y) });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return points;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Add automatic human-like behavior after page load
|
|
47
|
+
const simulateHumanBehavior = () => {
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
// Random mouse movement
|
|
50
|
+
const startX = 100 + Math.random() * 200;
|
|
51
|
+
const startY = 100 + Math.random() * 200;
|
|
52
|
+
const endX = 300 + Math.random() * 400;
|
|
53
|
+
const endY = 200 + Math.random() * 300;
|
|
54
|
+
|
|
55
|
+
// Simulate mouse movement event
|
|
56
|
+
const moveEvent = new MouseEvent('mousemove', {
|
|
57
|
+
clientX: startX,
|
|
58
|
+
clientY: startY,
|
|
59
|
+
bubbles: true,
|
|
60
|
+
cancelable: true
|
|
61
|
+
});
|
|
62
|
+
document.dispatchEvent(moveEvent);
|
|
63
|
+
|
|
64
|
+
// Small scroll to simulate user reading
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
const scrollAmount = 100 + Math.random() * 200;
|
|
67
|
+
window.scrollBy(0, scrollAmount);
|
|
68
|
+
|
|
69
|
+
// Set storage continuity marker
|
|
70
|
+
try {
|
|
71
|
+
const visitHash = btoa(window.location.hostname + Date.now()).substring(0, 16);
|
|
72
|
+
localStorage.setItem('g2_visit', visitHash);
|
|
73
|
+
sessionStorage.setItem('cdp_human_interaction', Date.now().toString());
|
|
74
|
+
} catch (e) {
|
|
75
|
+
// Storage might be disabled
|
|
76
|
+
}
|
|
77
|
+
}, 500 + Math.random() * 1000);
|
|
78
|
+
|
|
79
|
+
}, 1000 + Math.random() * 2000); // 1-3 seconds after load
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// Trigger human behavior on DOMContentLoaded
|
|
83
|
+
if (document.readyState === 'loading') {
|
|
84
|
+
document.addEventListener('DOMContentLoaded', simulateHumanBehavior);
|
|
85
|
+
} else {
|
|
86
|
+
simulateHumanBehavior();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Also add storage continuity for returning visitors
|
|
90
|
+
window.addEventListener('beforeunload', () => {
|
|
91
|
+
try {
|
|
92
|
+
const currentVisit = localStorage.getItem('g2_visit');
|
|
93
|
+
if (currentVisit) {
|
|
94
|
+
localStorage.setItem('g2_last_visit', currentVisit);
|
|
95
|
+
}
|
|
96
|
+
} catch (e) {
|
|
97
|
+
// Storage might be disabled
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
})();`,
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=mouse-humanization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse-humanization.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/mouse-humanization.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EAAE,MAAW,EAAiB,EAAE;IAC/E,yDAAyD;IACzD,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;QAClC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2Fd;KACD,CAAC,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-spoofing.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/performance-spoofing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,+BAA+B,QAAO,MA8NlD,CAAC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Spoofing
|
|
3
|
+
* Adjusts timing and memory characteristics to match Windows systems
|
|
4
|
+
*/
|
|
5
|
+
export const createPerformanceSpoofingScript = () => {
|
|
6
|
+
return `
|
|
7
|
+
(() => {
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
// Performance Spoofing for 2025 - Windows-like characteristics
|
|
11
|
+
const spoofPerformance = () => {
|
|
12
|
+
// Store original methods
|
|
13
|
+
const originalNow = performance.now;
|
|
14
|
+
const originalGetEntries = performance.getEntries;
|
|
15
|
+
const originalGetEntriesByType = performance.getEntriesByType;
|
|
16
|
+
const originalGetEntriesByName = performance.getEntriesByName;
|
|
17
|
+
|
|
18
|
+
// Platform-specific timing characteristics
|
|
19
|
+
const platform = navigator.platform || 'Win32';
|
|
20
|
+
let timingOffset = 0;
|
|
21
|
+
let baseTime = originalNow.call(performance);
|
|
22
|
+
|
|
23
|
+
// Windows tends to have slightly different timing precision
|
|
24
|
+
const timingConfig = {
|
|
25
|
+
'Win32': {
|
|
26
|
+
precision: 0.1, // Windows has 0.1ms precision in many cases
|
|
27
|
+
jitter: 0.05, // Small random variation
|
|
28
|
+
baseOffset: 0 // No offset needed
|
|
29
|
+
},
|
|
30
|
+
'MacIntel': {
|
|
31
|
+
precision: 0.1,
|
|
32
|
+
jitter: 0.03,
|
|
33
|
+
baseOffset: 1.2
|
|
34
|
+
},
|
|
35
|
+
'Linux x86_64': {
|
|
36
|
+
precision: 0.001,
|
|
37
|
+
jitter: 0.02,
|
|
38
|
+
baseOffset: 0.8
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const config = timingConfig[platform] || timingConfig['Win32'];
|
|
43
|
+
|
|
44
|
+
// Spoof performance.now() with Windows-like characteristics
|
|
45
|
+
performance.now = function() {
|
|
46
|
+
const realTime = originalNow.call(performance) - baseTime;
|
|
47
|
+
const adjustedTime = realTime * (1 + config.baseOffset / 100);
|
|
48
|
+
|
|
49
|
+
// Add Windows-like timing jitter and precision
|
|
50
|
+
const jitter = (Math.random() - 0.5) * config.jitter;
|
|
51
|
+
const timeWithJitter = adjustedTime + jitter;
|
|
52
|
+
|
|
53
|
+
// Round to Windows-like precision
|
|
54
|
+
const rounded = Math.round(timeWithJitter / config.precision) * config.precision;
|
|
55
|
+
|
|
56
|
+
return baseTime + rounded;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// Spoof memory information to look like Windows
|
|
60
|
+
if (performance.memory) {
|
|
61
|
+
// Windows Chrome typically reports different memory values
|
|
62
|
+
const memoryConfig = {
|
|
63
|
+
'Win32': {
|
|
64
|
+
usedJSHeapSize: { min: 25000000, variance: 15000000 },
|
|
65
|
+
totalJSHeapSize: { min: 45000000, variance: 25000000 },
|
|
66
|
+
jsHeapSizeLimit: 2172649472 // Typical Windows limit
|
|
67
|
+
},
|
|
68
|
+
'MacIntel': {
|
|
69
|
+
usedJSHeapSize: { min: 20000000, variance: 12000000 },
|
|
70
|
+
totalJSHeapSize: { min: 40000000, variance: 20000000 },
|
|
71
|
+
jsHeapSizeLimit: 4294705152 // Mac typically has higher limits
|
|
72
|
+
},
|
|
73
|
+
'Linux x86_64': {
|
|
74
|
+
usedJSHeapSize: { min: 18000000, variance: 10000000 },
|
|
75
|
+
totalJSHeapSize: { min: 35000000, variance: 18000000 },
|
|
76
|
+
jsHeapSizeLimit: 2147483648 // Linux varies more
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const memConfig = memoryConfig[platform] || memoryConfig['Win32'];
|
|
81
|
+
|
|
82
|
+
// Generate consistent but realistic memory values
|
|
83
|
+
const seed = navigator.userAgent.length + (navigator.platform || '').length;
|
|
84
|
+
const pseudoRandom = (seed * 9301 + 49297) % 233280 / 233280;
|
|
85
|
+
|
|
86
|
+
const fakeMemory = {
|
|
87
|
+
usedJSHeapSize: Math.floor(memConfig.usedJSHeapSize.min +
|
|
88
|
+
pseudoRandom * memConfig.usedJSHeapSize.variance),
|
|
89
|
+
totalJSHeapSize: Math.floor(memConfig.totalJSHeapSize.min +
|
|
90
|
+
pseudoRandom * memConfig.totalJSHeapSize.variance),
|
|
91
|
+
jsHeapSizeLimit: memConfig.jsHeapSizeLimit
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// Ensure logical consistency
|
|
95
|
+
if (fakeMemory.usedJSHeapSize > fakeMemory.totalJSHeapSize) {
|
|
96
|
+
fakeMemory.totalJSHeapSize = fakeMemory.usedJSHeapSize + 5000000;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Object.defineProperty(performance, 'memory', {
|
|
100
|
+
value: fakeMemory,
|
|
101
|
+
writable: false,
|
|
102
|
+
configurable: true
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Spoof navigation timing to appear more like Windows
|
|
107
|
+
if (performance.navigation) {
|
|
108
|
+
Object.defineProperty(performance.navigation, 'type', {
|
|
109
|
+
value: 0, // TYPE_NAVIGATE - most common on Windows
|
|
110
|
+
writable: false
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
Object.defineProperty(performance.navigation, 'redirectCount', {
|
|
114
|
+
value: 0,
|
|
115
|
+
writable: false
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Spoof timing entries to have Windows-like characteristics
|
|
120
|
+
performance.getEntries = function() {
|
|
121
|
+
const entries = originalGetEntries.call(this);
|
|
122
|
+
return entries.map(entry => spoofTimingEntry(entry));
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
performance.getEntriesByType = function(type) {
|
|
126
|
+
const entries = originalGetEntriesByType.call(this, type);
|
|
127
|
+
return entries.map(entry => spoofTimingEntry(entry));
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
performance.getEntriesByName = function(name, type) {
|
|
131
|
+
const entries = originalGetEntriesByName.call(this, name, type);
|
|
132
|
+
return entries.map(entry => spoofTimingEntry(entry));
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
function spoofTimingEntry(entry) {
|
|
136
|
+
if (!entry) return entry;
|
|
137
|
+
|
|
138
|
+
// Create a copy of the entry with adjusted timings
|
|
139
|
+
const spoofedEntry = Object.assign({}, entry);
|
|
140
|
+
|
|
141
|
+
// Adjust timing values to be more Windows-like
|
|
142
|
+
const timingProps = [
|
|
143
|
+
'startTime', 'duration', 'fetchStart', 'domainLookupStart',
|
|
144
|
+
'domainLookupEnd', 'connectStart', 'connectEnd', 'requestStart',
|
|
145
|
+
'responseStart', 'responseEnd', 'domLoading', 'domInteractive',
|
|
146
|
+
'domContentLoadedEventStart', 'domContentLoadedEventEnd',
|
|
147
|
+
'domComplete', 'loadEventStart', 'loadEventEnd'
|
|
148
|
+
];
|
|
149
|
+
|
|
150
|
+
timingProps.forEach(prop => {
|
|
151
|
+
if (typeof spoofedEntry[prop] === 'number' && spoofedEntry[prop] > 0) {
|
|
152
|
+
// Apply Windows-like timing adjustments
|
|
153
|
+
const adjustment = 1 + (config.baseOffset / 100) +
|
|
154
|
+
(Math.random() - 0.5) * config.jitter / 10;
|
|
155
|
+
spoofedEntry[prop] = Math.round(spoofedEntry[prop] * adjustment / config.precision) * config.precision;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
return spoofedEntry;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Spoof requestIdleCallback timing (if available)
|
|
163
|
+
if ('requestIdleCallback' in window) {
|
|
164
|
+
const originalRequestIdleCallback = window.requestIdleCallback;
|
|
165
|
+
window.requestIdleCallback = function(callback, options) {
|
|
166
|
+
// Windows systems typically have different idle characteristics
|
|
167
|
+
const windowsOptions = Object.assign({}, options, {
|
|
168
|
+
timeout: options?.timeout ? Math.min(options.timeout, 5000) : 5000
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
return originalRequestIdleCallback.call(this, function(deadline) {
|
|
172
|
+
// Modify deadline to appear more Windows-like
|
|
173
|
+
const modifiedDeadline = {
|
|
174
|
+
didTimeout: deadline.didTimeout,
|
|
175
|
+
timeRemaining: function() {
|
|
176
|
+
const remaining = deadline.timeRemaining();
|
|
177
|
+
// Windows tends to report slightly less remaining time
|
|
178
|
+
return Math.max(0, remaining * 0.95 - Math.random() * 2);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
return callback.call(this, modifiedDeadline);
|
|
183
|
+
}, windowsOptions);
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Spoof scheduler API (if available)
|
|
188
|
+
if ('scheduler' in window && window.scheduler) {
|
|
189
|
+
const originalPostTask = window.scheduler.postTask;
|
|
190
|
+
if (originalPostTask) {
|
|
191
|
+
window.scheduler.postTask = function(callback, options) {
|
|
192
|
+
// Windows scheduling tends to be slightly different
|
|
193
|
+
const windowsOptions = Object.assign({}, options);
|
|
194
|
+
if (windowsOptions.delay) {
|
|
195
|
+
windowsOptions.delay = Math.max(0, windowsOptions.delay - Math.random() * 2);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return originalPostTask.call(this, callback, windowsOptions);
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Spoof performance observer timing
|
|
204
|
+
if ('PerformanceObserver' in window) {
|
|
205
|
+
const OriginalPerformanceObserver = PerformanceObserver;
|
|
206
|
+
window.PerformanceObserver = class extends OriginalPerformanceObserver {
|
|
207
|
+
constructor(callback) {
|
|
208
|
+
super(function(list, observer) {
|
|
209
|
+
const entries = list.getEntries().map(entry => spoofTimingEntry(entry));
|
|
210
|
+
const modifiedList = {
|
|
211
|
+
getEntries: () => entries,
|
|
212
|
+
getEntriesByType: (type) => entries.filter(e => e.entryType === type),
|
|
213
|
+
getEntriesByName: (name, type) => entries.filter(e =>
|
|
214
|
+
e.name === name && (!type || e.entryType === type)
|
|
215
|
+
)
|
|
216
|
+
};
|
|
217
|
+
return callback.call(this, modifiedList, observer);
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
spoofPerformance();
|
|
225
|
+
})();
|
|
226
|
+
`;
|
|
227
|
+
};
|
|
228
|
+
//# sourceMappingURL=performance-spoofing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-spoofing.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/performance-spoofing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAW,EAAE;IACxD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4NV,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform Consistency Script
|
|
3
|
+
* Ensures all browser properties match the specified platform (1:1 fingerprinting)
|
|
4
|
+
*/
|
|
5
|
+
export interface PlatformConfig {
|
|
6
|
+
platform?: string;
|
|
7
|
+
devicePixelRatio?: number;
|
|
8
|
+
screenDepth?: number;
|
|
9
|
+
colorDepth?: number;
|
|
10
|
+
hardwareConcurrency?: number;
|
|
11
|
+
maxTouchPoints?: number;
|
|
12
|
+
vendor?: string;
|
|
13
|
+
vendorSub?: string;
|
|
14
|
+
productSub?: string;
|
|
15
|
+
language?: string;
|
|
16
|
+
languages?: string[];
|
|
17
|
+
oscpu?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const createPlatformConsistencyScript: (platform: string, fingerprintData?: PlatformConfig) => string;
|
|
20
|
+
//# sourceMappingURL=platform-consistency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-consistency.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/platform-consistency.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,+BAA+B,aAAc,MAAM,oBAAoB,cAAc,KAAG,MAgOpG,CAAC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform Consistency Script
|
|
3
|
+
* Ensures all browser properties match the specified platform (1:1 fingerprinting)
|
|
4
|
+
*/
|
|
5
|
+
export const createPlatformConsistencyScript = (platform, fingerprintData) => {
|
|
6
|
+
// Platform-specific configurations for 1:1 consistency
|
|
7
|
+
const platformConfigs = {
|
|
8
|
+
'Win32': {
|
|
9
|
+
devicePixelRatio: 1.0,
|
|
10
|
+
screenDepth: 24,
|
|
11
|
+
colorDepth: 24,
|
|
12
|
+
hardwareConcurrency: 8,
|
|
13
|
+
maxTouchPoints: 0,
|
|
14
|
+
platform: 'Win32',
|
|
15
|
+
oscpu: 'Windows NT 10.0; Win64; x64',
|
|
16
|
+
vendor: '',
|
|
17
|
+
vendorSub: '',
|
|
18
|
+
productSub: '20030107',
|
|
19
|
+
cookieEnabled: true,
|
|
20
|
+
onLine: true,
|
|
21
|
+
language: 'en-US',
|
|
22
|
+
languages: ['en-US', 'en'],
|
|
23
|
+
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
24
|
+
appVersion: '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
25
|
+
appName: 'Netscape',
|
|
26
|
+
appCodeName: 'Mozilla',
|
|
27
|
+
product: 'Gecko',
|
|
28
|
+
plugins: [
|
|
29
|
+
{ name: 'Chrome PDF Plugin', filename: 'internal-pdf-viewer', description: 'Portable Document Format' },
|
|
30
|
+
{ name: 'Chrome PDF Viewer', filename: 'mhjfbmdgcfjbbpaeojofohoefgiehjai', description: 'Portable Document Format' },
|
|
31
|
+
{ name: 'Native Client', filename: 'internal-nacl-plugin', description: 'Native Client Executable' },
|
|
32
|
+
{ name: 'Microsoft Edge PDF Plugin', filename: 'edge-pdf-viewer', description: 'Microsoft Edge PDF Viewer' },
|
|
33
|
+
{ name: 'Widevine Content Decryption Module', filename: 'widevinecdmadapter', description: 'Enables Widevine licenses for playback of HTML audio/video content' },
|
|
34
|
+
],
|
|
35
|
+
mimeTypes: [
|
|
36
|
+
{ type: 'application/pdf', suffixes: 'pdf', description: 'Portable Document Format' },
|
|
37
|
+
{ type: 'application/x-nacl', suffixes: '', description: 'Native Client Executable' },
|
|
38
|
+
{ type: 'application/x-pnacl', suffixes: '', description: 'Portable Native Client Executable' },
|
|
39
|
+
{ type: 'application/x-ppapi-widevine-cdm', suffixes: '', description: 'Widevine Content Decryption Module' },
|
|
40
|
+
],
|
|
41
|
+
// Windows-specific connection properties
|
|
42
|
+
connection: {
|
|
43
|
+
downlink: 10,
|
|
44
|
+
effectiveType: '4g',
|
|
45
|
+
onchange: null,
|
|
46
|
+
rtt: 50,
|
|
47
|
+
saveData: false,
|
|
48
|
+
type: 'ethernet',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
'MacIntel': {
|
|
52
|
+
devicePixelRatio: 2.0,
|
|
53
|
+
screenDepth: 30,
|
|
54
|
+
colorDepth: 30,
|
|
55
|
+
hardwareConcurrency: 8,
|
|
56
|
+
maxTouchPoints: 0,
|
|
57
|
+
platform: 'MacIntel',
|
|
58
|
+
oscpu: undefined,
|
|
59
|
+
vendor: 'Google Inc.',
|
|
60
|
+
vendorSub: '',
|
|
61
|
+
productSub: '20030107',
|
|
62
|
+
cookieEnabled: true,
|
|
63
|
+
onLine: true,
|
|
64
|
+
language: 'en-US',
|
|
65
|
+
languages: ['en-US', 'en'],
|
|
66
|
+
plugins: [
|
|
67
|
+
{ name: 'Chrome PDF Plugin', filename: 'internal-pdf-viewer' },
|
|
68
|
+
{ name: 'Chrome PDF Viewer', filename: 'mhjfbmdgcfjbbpaeojofohoefgiehjai' },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
'Linux x86_64': {
|
|
72
|
+
devicePixelRatio: 1.0,
|
|
73
|
+
screenDepth: 24,
|
|
74
|
+
colorDepth: 24,
|
|
75
|
+
hardwareConcurrency: 8,
|
|
76
|
+
maxTouchPoints: 0,
|
|
77
|
+
platform: 'Linux x86_64',
|
|
78
|
+
oscpu: 'Linux x86_64',
|
|
79
|
+
vendor: 'Google Inc.',
|
|
80
|
+
vendorSub: '',
|
|
81
|
+
productSub: '20030107',
|
|
82
|
+
cookieEnabled: true,
|
|
83
|
+
onLine: true,
|
|
84
|
+
language: 'en-US',
|
|
85
|
+
languages: ['en-US', 'en'],
|
|
86
|
+
plugins: [
|
|
87
|
+
{ name: 'Chrome PDF Plugin', filename: 'internal-pdf-viewer' },
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
const defaultConfig = platformConfigs[platform] || platformConfigs['Linux x86_64'];
|
|
92
|
+
// Merge fingerprint data with defaults if provided
|
|
93
|
+
const config = fingerprintData ? {
|
|
94
|
+
...defaultConfig,
|
|
95
|
+
...fingerprintData,
|
|
96
|
+
// Ensure platform consistency
|
|
97
|
+
platform: fingerprintData.platform || platform,
|
|
98
|
+
} : defaultConfig;
|
|
99
|
+
return `
|
|
100
|
+
(() => {
|
|
101
|
+
'use strict';
|
|
102
|
+
|
|
103
|
+
// Platform Consistency for ${platform}
|
|
104
|
+
const config = ${JSON.stringify(config)};
|
|
105
|
+
|
|
106
|
+
// Override navigator properties for platform consistency
|
|
107
|
+
Object.defineProperty(navigator, 'platform', { get: () => config.platform, configurable: false });
|
|
108
|
+
Object.defineProperty(navigator, 'vendor', { get: () => config.vendor, configurable: false });
|
|
109
|
+
Object.defineProperty(navigator, 'vendorSub', { get: () => config.vendorSub, configurable: false });
|
|
110
|
+
Object.defineProperty(navigator, 'productSub', { get: () => config.productSub, configurable: false });
|
|
111
|
+
Object.defineProperty(navigator, 'hardwareConcurrency', { get: () => config.hardwareConcurrency, configurable: false });
|
|
112
|
+
Object.defineProperty(navigator, 'maxTouchPoints', { get: () => config.maxTouchPoints, configurable: false });
|
|
113
|
+
Object.defineProperty(navigator, 'cookieEnabled', { get: () => config.cookieEnabled, configurable: false });
|
|
114
|
+
Object.defineProperty(navigator, 'onLine', { get: () => config.onLine, configurable: false });
|
|
115
|
+
Object.defineProperty(navigator, 'language', { get: () => config.language, configurable: false });
|
|
116
|
+
Object.defineProperty(navigator, 'languages', { get: () => config.languages, configurable: false });
|
|
117
|
+
|
|
118
|
+
// Additional navigator properties for Windows consistency
|
|
119
|
+
if (config.userAgent) {
|
|
120
|
+
Object.defineProperty(navigator, 'userAgent', { get: () => config.userAgent, configurable: false });
|
|
121
|
+
}
|
|
122
|
+
if (config.appVersion) {
|
|
123
|
+
Object.defineProperty(navigator, 'appVersion', { get: () => config.appVersion, configurable: false });
|
|
124
|
+
}
|
|
125
|
+
if (config.appName) {
|
|
126
|
+
Object.defineProperty(navigator, 'appName', { get: () => config.appName, configurable: false });
|
|
127
|
+
}
|
|
128
|
+
if (config.appCodeName) {
|
|
129
|
+
Object.defineProperty(navigator, 'appCodeName', { get: () => config.appCodeName, configurable: false });
|
|
130
|
+
}
|
|
131
|
+
if (config.product) {
|
|
132
|
+
Object.defineProperty(navigator, 'product', { get: () => config.product, configurable: false });
|
|
133
|
+
}
|
|
134
|
+
if (config.oscpu !== undefined) {
|
|
135
|
+
Object.defineProperty(navigator, 'oscpu', { get: () => config.oscpu, configurable: false });
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Override navigator.plugins for Windows consistency
|
|
139
|
+
if (config.plugins) {
|
|
140
|
+
Object.defineProperty(navigator, 'plugins', {
|
|
141
|
+
get: () => {
|
|
142
|
+
const arr = Object.create(PluginArray.prototype);
|
|
143
|
+
config.plugins.forEach((p, i) => {
|
|
144
|
+
const plugin = Object.create(Plugin.prototype);
|
|
145
|
+
plugin.name = p.name;
|
|
146
|
+
plugin.filename = p.filename;
|
|
147
|
+
plugin.description = p.description;
|
|
148
|
+
plugin.length = 1;
|
|
149
|
+
plugin[0] = config.mimeTypes?.[i] || { type: 'application/pdf', suffixes: 'pdf', description: 'Portable Document Format' };
|
|
150
|
+
arr[i] = plugin;
|
|
151
|
+
arr[p.name] = plugin;
|
|
152
|
+
});
|
|
153
|
+
arr.length = config.plugins.length;
|
|
154
|
+
arr.item = (index) => arr[index] || null;
|
|
155
|
+
arr.namedItem = (name) => arr[name] || null;
|
|
156
|
+
arr.refresh = () => {};
|
|
157
|
+
return arr;
|
|
158
|
+
},
|
|
159
|
+
configurable: false,
|
|
160
|
+
enumerable: true
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Override navigator.mimeTypes for Windows consistency
|
|
165
|
+
if (config.mimeTypes) {
|
|
166
|
+
Object.defineProperty(navigator, 'mimeTypes', {
|
|
167
|
+
get: () => {
|
|
168
|
+
const arr = Object.create(MimeTypeArray.prototype);
|
|
169
|
+
config.mimeTypes.forEach((m, i) => {
|
|
170
|
+
const mimeType = Object.create(MimeType.prototype);
|
|
171
|
+
mimeType.type = m.type;
|
|
172
|
+
mimeType.suffixes = m.suffixes;
|
|
173
|
+
mimeType.description = m.description;
|
|
174
|
+
mimeType.enabledPlugin = config.plugins?.[0] || null;
|
|
175
|
+
arr[i] = mimeType;
|
|
176
|
+
arr[m.type] = mimeType;
|
|
177
|
+
});
|
|
178
|
+
arr.length = config.mimeTypes.length;
|
|
179
|
+
arr.item = (index) => arr[index] || null;
|
|
180
|
+
arr.namedItem = (name) => arr[name] || null;
|
|
181
|
+
return arr;
|
|
182
|
+
},
|
|
183
|
+
configurable: false,
|
|
184
|
+
enumerable: true
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Override navigator.connection for Windows consistency
|
|
189
|
+
if (config.connection && navigator.connection) {
|
|
190
|
+
Object.keys(config.connection).forEach(key => {
|
|
191
|
+
Object.defineProperty(navigator.connection, key, {
|
|
192
|
+
value: config.connection[key],
|
|
193
|
+
writable: false,
|
|
194
|
+
configurable: true
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Override screen properties
|
|
200
|
+
Object.defineProperty(window, 'devicePixelRatio', { get: () => config.devicePixelRatio, configurable: false });
|
|
201
|
+
Object.defineProperty(screen, 'colorDepth', { get: () => config.colorDepth, configurable: false });
|
|
202
|
+
Object.defineProperty(screen, 'pixelDepth', { get: () => config.screenDepth || config.colorDepth, configurable: false });
|
|
203
|
+
|
|
204
|
+
// Ensure WebGL returns platform-appropriate values
|
|
205
|
+
const getParameterProto = WebGLRenderingContext.prototype.getParameter;
|
|
206
|
+
WebGLRenderingContext.prototype.getParameter = function(param) {
|
|
207
|
+
if (param === 0x9245 || param === 0x9246) { // UNMASKED_VENDOR_WEBGL / UNMASKED_RENDERER_WEBGL
|
|
208
|
+
// Return platform-appropriate GPU with corrected ANGLE token count
|
|
209
|
+
if (config.platform === 'Win32') {
|
|
210
|
+
return param === 0x9245
|
|
211
|
+
? 'NVIDIA Corporation'
|
|
212
|
+
: 'ANGLE (NVIDIA, NVIDIA GeForce GTX 1660 Ti Direct3D 11.0)'; // Fixed: fewer tokens
|
|
213
|
+
} else if (config.platform === 'MacIntel') {
|
|
214
|
+
return param === 0x9245 ? 'Apple Inc.' : 'ANGLE (Apple, Apple M1 Pro, OpenGL 4.1)';
|
|
215
|
+
} else {
|
|
216
|
+
return param === 0x9245 ? 'Intel' : 'ANGLE (Intel, Mesa Intel(R) UHD Graphics 630, OpenGL 4.6)';
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return getParameterProto.apply(this, arguments);
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
if (typeof WebGL2RenderingContext !== 'undefined') {
|
|
223
|
+
WebGL2RenderingContext.prototype.getParameter = WebGLRenderingContext.prototype.getParameter;
|
|
224
|
+
}
|
|
225
|
+
})();`;
|
|
226
|
+
};
|
|
227
|
+
//# sourceMappingURL=platform-consistency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-consistency.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/platform-consistency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-enable-bypass.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/runtime-enable-bypass.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,wBAAwB,WAAkB,GAAG,KAAG,OAAO,CAAC,IAAI,CA8ExE,CAAC"}
|