jumpy-lion 0.0.41 → 0.0.42

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.
Files changed (119) hide show
  1. package/dist/browser-controller.d.ts.map +1 -1
  2. package/dist/browser-controller.js +102 -16
  3. package/dist/browser-controller.js.map +1 -1
  4. package/dist/browser-plugin.d.ts +20 -1
  5. package/dist/browser-plugin.d.ts.map +1 -1
  6. package/dist/browser-plugin.js +21 -1
  7. package/dist/browser-plugin.js.map +1 -1
  8. package/dist/browser-process/browser.d.ts +22 -1
  9. package/dist/browser-process/browser.d.ts.map +1 -1
  10. package/dist/browser-process/browser.js +77 -5
  11. package/dist/browser-process/browser.js.map +1 -1
  12. package/dist/browser-profiles/chrome/default.d.ts +116 -0
  13. package/dist/browser-profiles/chrome/default.d.ts.map +1 -1
  14. package/dist/browser-profiles/chrome/default.js +118 -1
  15. package/dist/browser-profiles/chrome/default.js.map +1 -1
  16. package/dist/browser-profiles/chrome/populate-profile.d.ts +76 -0
  17. package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -0
  18. package/dist/browser-profiles/chrome/populate-profile.js +300 -0
  19. package/dist/browser-profiles/chrome/populate-profile.js.map +1 -0
  20. package/dist/browser-profiles/index.d.ts +1 -0
  21. package/dist/browser-profiles/index.d.ts.map +1 -1
  22. package/dist/browser-profiles/index.js +2 -0
  23. package/dist/browser-profiles/index.js.map +1 -1
  24. package/dist/crawler.d.ts +32 -1
  25. package/dist/crawler.d.ts.map +1 -1
  26. package/dist/crawler.js +7 -0
  27. package/dist/crawler.js.map +1 -1
  28. package/dist/fingerprinting/custom-fingerprint-injector.d.ts +87 -0
  29. package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +1 -0
  30. package/dist/fingerprinting/custom-fingerprint-injector.js +342 -0
  31. package/dist/fingerprinting/custom-fingerprint-injector.js.map +1 -0
  32. package/dist/fingerprinting/fingerprint-injector.d.ts +40 -2
  33. package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
  34. package/dist/fingerprinting/fingerprint-injector.js +449 -44
  35. package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
  36. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts.map +1 -1
  37. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js +11 -1
  38. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js.map +1 -1
  39. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts.map +1 -1
  40. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js +11 -1
  41. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js.map +1 -1
  42. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts +14 -0
  43. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts.map +1 -0
  44. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js +497 -0
  45. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js.map +1 -0
  46. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts.map +1 -1
  47. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js +11 -1
  48. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js.map +1 -1
  49. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +14 -0
  50. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -0
  51. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +536 -0
  52. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -0
  53. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts.map +1 -1
  54. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js +11 -1
  55. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js.map +1 -1
  56. package/dist/fingerprinting/fingerprint-overrides/index.d.ts +16 -1
  57. package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
  58. package/dist/fingerprinting/fingerprint-overrides/index.js +19 -1
  59. package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
  60. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +45 -0
  61. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts.map +1 -0
  62. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +291 -0
  63. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -0
  64. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts.map +1 -1
  65. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +54 -22
  66. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js.map +1 -1
  67. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts.map +1 -1
  68. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js +4 -5
  69. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js.map +1 -1
  70. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts.map +1 -1
  71. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js +11 -1
  72. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js.map +1 -1
  73. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts +13 -0
  74. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -1
  75. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +413 -70
  76. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -1
  77. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts +10 -3
  78. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts.map +1 -1
  79. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js +132 -73
  80. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js.map +1 -1
  81. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +55 -0
  82. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts.map +1 -0
  83. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +380 -0
  84. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -0
  85. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts +8 -0
  86. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -1
  87. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +417 -71
  88. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -1
  89. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts +13 -0
  90. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts.map +1 -0
  91. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js +368 -0
  92. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js.map +1 -0
  93. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts +13 -0
  94. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts.map +1 -0
  95. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js +438 -0
  96. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js.map +1 -0
  97. package/dist/fingerprinting/fingerprint-overrides/utils.d.ts +12 -0
  98. package/dist/fingerprinting/fingerprint-overrides/utils.d.ts.map +1 -0
  99. package/dist/fingerprinting/fingerprint-overrides/utils.js +315 -0
  100. package/dist/fingerprinting/fingerprint-overrides/utils.js.map +1 -0
  101. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -1
  102. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +13 -1
  103. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -1
  104. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts.map +1 -1
  105. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js +11 -1
  106. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js.map +1 -1
  107. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts.map +1 -1
  108. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +11 -1
  109. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -1
  110. package/dist/page.d.ts +12 -0
  111. package/dist/page.d.ts.map +1 -1
  112. package/dist/page.js +35 -3
  113. package/dist/page.js.map +1 -1
  114. package/dist/tsconfig.build.tsbuildinfo +1 -1
  115. package/package.json +4 -4
  116. package/dist/fingerprinting/canvas-fingerprint.d.ts +0 -4
  117. package/dist/fingerprinting/canvas-fingerprint.d.ts.map +0 -1
  118. package/dist/fingerprinting/canvas-fingerprint.js +0 -60
  119. package/dist/fingerprinting/canvas-fingerprint.js.map +0 -1
@@ -1,6 +1,14 @@
1
1
  /**
2
2
  * Platform Consistency Script
3
3
  * Ensures all browser properties match the specified platform (1:1 fingerprinting)
4
+ *
5
+ * 2024-2025 Enhancements:
6
+ * - Screen orientation API consistency
7
+ * - screen.availLeft/availTop for Windows
8
+ * - visualViewport properties consistency
9
+ * - window.outerWidth/outerHeight ratios
10
+ * - window.screenX/screenY typical values
11
+ * - matchMedia() platform-appropriate results
4
12
  */
5
13
  export const createPlatformConsistencyScript = (platform, fingerprintData) => {
6
14
  // Platform-specific configurations for 1:1 consistency
@@ -103,103 +111,129 @@ export const createPlatformConsistencyScript = (platform, fingerprintData) => {
103
111
  // Platform Consistency for ${platform}
104
112
  const config = ${JSON.stringify(config)};
105
113
 
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 });
114
+ // Helper to safely define property with guards
115
+ const safeDefineProperty = (obj, prop, getter) => {
116
+ try {
117
+ const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
118
+ if (descriptor && descriptor.configurable === false) {
119
+ return false; // Property already defined as non-configurable
120
+ }
121
+ Object.defineProperty(obj, prop, {
122
+ get: getter,
123
+ configurable: true, // Allow other scripts to modify if needed
124
+ enumerable: true
125
+ });
126
+ return true;
127
+ } catch (e) {
128
+ return false;
129
+ }
130
+ };
131
+
132
+ // Override navigator properties for platform consistency (with guards)
133
+ safeDefineProperty(navigator, 'platform', () => config.platform);
134
+ safeDefineProperty(navigator, 'vendor', () => config.vendor);
135
+ safeDefineProperty(navigator, 'vendorSub', () => config.vendorSub);
136
+ safeDefineProperty(navigator, 'productSub', () => config.productSub);
137
+ safeDefineProperty(navigator, 'hardwareConcurrency', () => config.hardwareConcurrency);
138
+ safeDefineProperty(navigator, 'maxTouchPoints', () => config.maxTouchPoints);
139
+ safeDefineProperty(navigator, 'cookieEnabled', () => config.cookieEnabled);
140
+ safeDefineProperty(navigator, 'onLine', () => config.onLine);
141
+ safeDefineProperty(navigator, 'language', () => config.language);
142
+ safeDefineProperty(navigator, 'languages', () => config.languages);
117
143
 
118
144
  // Additional navigator properties for Windows consistency
119
145
  if (config.userAgent) {
120
- Object.defineProperty(navigator, 'userAgent', { get: () => config.userAgent, configurable: false });
146
+ safeDefineProperty(navigator, 'userAgent', () => config.userAgent);
121
147
  }
122
148
  if (config.appVersion) {
123
- Object.defineProperty(navigator, 'appVersion', { get: () => config.appVersion, configurable: false });
149
+ safeDefineProperty(navigator, 'appVersion', () => config.appVersion);
124
150
  }
125
151
  if (config.appName) {
126
- Object.defineProperty(navigator, 'appName', { get: () => config.appName, configurable: false });
152
+ safeDefineProperty(navigator, 'appName', () => config.appName);
127
153
  }
128
154
  if (config.appCodeName) {
129
- Object.defineProperty(navigator, 'appCodeName', { get: () => config.appCodeName, configurable: false });
155
+ safeDefineProperty(navigator, 'appCodeName', () => config.appCodeName);
130
156
  }
131
157
  if (config.product) {
132
- Object.defineProperty(navigator, 'product', { get: () => config.product, configurable: false });
158
+ safeDefineProperty(navigator, 'product', () => config.product);
133
159
  }
134
160
  if (config.oscpu !== undefined) {
135
- Object.defineProperty(navigator, 'oscpu', { get: () => config.oscpu, configurable: false });
161
+ safeDefineProperty(navigator, 'oscpu', () => config.oscpu);
136
162
  }
137
163
 
138
- // Override navigator.plugins for Windows consistency
164
+ // Override navigator.plugins for Windows consistency (with guards)
139
165
  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
- });
166
+ const pluginsGetter = () => {
167
+ const arr = Object.create(PluginArray.prototype);
168
+ config.plugins.forEach((p, i) => {
169
+ const plugin = Object.create(Plugin.prototype);
170
+ // Use Object.defineProperty for read-only properties
171
+ Object.defineProperty(plugin, 'name', { value: p.name, writable: false, enumerable: true });
172
+ Object.defineProperty(plugin, 'filename', { value: p.filename, writable: false, enumerable: true });
173
+ Object.defineProperty(plugin, 'description', { value: p.description, writable: false, enumerable: true });
174
+ Object.defineProperty(plugin, 'length', { value: 1, writable: false, enumerable: true });
175
+ plugin[0] = config.mimeTypes?.[i] || { type: 'application/pdf', suffixes: 'pdf', description: 'Portable Document Format' };
176
+ arr[i] = plugin;
177
+ arr[p.name] = plugin;
178
+ });
179
+ // Use Object.defineProperty for length (PluginArray.prototype.length is read-only)
180
+ Object.defineProperty(arr, 'length', { value: config.plugins.length, writable: false, enumerable: true });
181
+ Object.defineProperty(arr, 'item', { value: (index) => arr[index] || null, writable: false, enumerable: false });
182
+ Object.defineProperty(arr, 'namedItem', { value: (name) => arr[name] || null, writable: false, enumerable: false });
183
+ Object.defineProperty(arr, 'refresh', { value: () => {}, writable: false, enumerable: false });
184
+ return arr;
185
+ };
186
+ safeDefineProperty(navigator, 'plugins', pluginsGetter);
162
187
  }
163
188
 
164
- // Override navigator.mimeTypes for Windows consistency
189
+ // Override navigator.mimeTypes for Windows consistency (with guards)
165
190
  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
- });
191
+ const mimeTypesGetter = () => {
192
+ const arr = Object.create(MimeTypeArray.prototype);
193
+ config.mimeTypes.forEach((m, i) => {
194
+ const mimeType = Object.create(MimeType.prototype);
195
+ // Use Object.defineProperty for read-only properties
196
+ Object.defineProperty(mimeType, 'type', { value: m.type, writable: false, enumerable: true });
197
+ Object.defineProperty(mimeType, 'suffixes', { value: m.suffixes, writable: false, enumerable: true });
198
+ Object.defineProperty(mimeType, 'description', { value: m.description, writable: false, enumerable: true });
199
+ Object.defineProperty(mimeType, 'enabledPlugin', { value: config.plugins?.[0] || null, writable: false, enumerable: true });
200
+ arr[i] = mimeType;
201
+ arr[m.type] = mimeType;
202
+ });
203
+ // Use Object.defineProperty for length (MimeTypeArray.prototype.length is read-only)
204
+ Object.defineProperty(arr, 'length', { value: config.mimeTypes.length, writable: false, enumerable: true });
205
+ Object.defineProperty(arr, 'item', { value: (index) => arr[index] || null, writable: false, enumerable: false });
206
+ Object.defineProperty(arr, 'namedItem', { value: (name) => arr[name] || null, writable: false, enumerable: false });
207
+ return arr;
208
+ };
209
+ safeDefineProperty(navigator, 'mimeTypes', mimeTypesGetter);
186
210
  }
187
211
 
188
212
  // Override navigator.connection for Windows consistency
213
+ // Note: Some connection properties (like downlink, rtt) are non-configurable in Chrome
189
214
  if (config.connection && navigator.connection) {
190
215
  Object.keys(config.connection).forEach(key => {
191
- Object.defineProperty(navigator.connection, key, {
192
- value: config.connection[key],
193
- writable: false,
194
- configurable: true
195
- });
216
+ try {
217
+ const descriptor = Object.getOwnPropertyDescriptor(navigator.connection, key);
218
+ if (descriptor && descriptor.configurable === false) {
219
+ // Property is non-configurable, skip it
220
+ return;
221
+ }
222
+ Object.defineProperty(navigator.connection, key, {
223
+ value: config.connection[key],
224
+ writable: false,
225
+ configurable: true
226
+ });
227
+ } catch (e) {
228
+ // Silently ignore non-configurable properties
229
+ }
196
230
  });
197
231
  }
198
232
 
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 });
233
+ // Override screen properties (with guards)
234
+ safeDefineProperty(window, 'devicePixelRatio', () => config.devicePixelRatio);
235
+ safeDefineProperty(screen, 'colorDepth', () => config.colorDepth);
236
+ safeDefineProperty(screen, 'pixelDepth', () => config.screenDepth || config.colorDepth);
203
237
 
204
238
  // Ensure WebGL returns platform-appropriate values
205
239
  const getParameterProto = WebGLRenderingContext.prototype.getParameter;
@@ -222,6 +256,315 @@ export const createPlatformConsistencyScript = (platform, fingerprintData) => {
222
256
  if (typeof WebGL2RenderingContext !== 'undefined') {
223
257
  WebGL2RenderingContext.prototype.getParameter = WebGLRenderingContext.prototype.getParameter;
224
258
  }
259
+
260
+ // ========== 2024-2025 Enhanced Platform Consistency ==========
261
+
262
+ // Screen Orientation API Consistency
263
+ const spoofScreenOrientation = () => {
264
+ if (screen.orientation) {
265
+ Object.defineProperty(screen.orientation, 'type', {
266
+ get: () => 'landscape-primary',
267
+ configurable: true,
268
+ enumerable: true
269
+ });
270
+
271
+ Object.defineProperty(screen.orientation, 'angle', {
272
+ get: () => 0,
273
+ configurable: true,
274
+ enumerable: true
275
+ });
276
+ }
277
+ };
278
+
279
+ // Screen availLeft/availTop for Windows (taskbar consideration)
280
+ const spoofScreenAvailability = () => {
281
+ const screenConfig = {
282
+ 'Win32': {
283
+ availLeft: 0,
284
+ availTop: 0,
285
+ availWidth: screen.width || 1920,
286
+ availHeight: (screen.height || 1080) - 40 // Windows taskbar ~40px
287
+ },
288
+ 'MacIntel': {
289
+ availLeft: 0,
290
+ availTop: 25, // macOS menu bar
291
+ availWidth: screen.width || 1920,
292
+ availHeight: (screen.height || 1080) - 25
293
+ },
294
+ 'Linux x86_64': {
295
+ availLeft: 0,
296
+ availTop: 0,
297
+ availWidth: screen.width || 1920,
298
+ availHeight: (screen.height || 1080) - 30 // GNOME panel
299
+ }
300
+ };
301
+
302
+ const screenVals = screenConfig[config.platform] || screenConfig['Win32'];
303
+
304
+ Object.defineProperty(screen, 'availLeft', {
305
+ get: () => screenVals.availLeft,
306
+ configurable: true,
307
+ enumerable: true
308
+ });
309
+
310
+ Object.defineProperty(screen, 'availTop', {
311
+ get: () => screenVals.availTop,
312
+ configurable: true,
313
+ enumerable: true
314
+ });
315
+
316
+ Object.defineProperty(screen, 'availWidth', {
317
+ get: () => screenVals.availWidth,
318
+ configurable: true,
319
+ enumerable: true
320
+ });
321
+
322
+ Object.defineProperty(screen, 'availHeight', {
323
+ get: () => screenVals.availHeight,
324
+ configurable: true,
325
+ enumerable: true
326
+ });
327
+ };
328
+
329
+ // Visual Viewport consistency
330
+ const spoofVisualViewport = () => {
331
+ if (window.visualViewport) {
332
+ const originalViewport = window.visualViewport;
333
+
334
+ // Ensure consistent values
335
+ Object.defineProperty(originalViewport, 'scale', {
336
+ get: () => 1,
337
+ configurable: true
338
+ });
339
+
340
+ Object.defineProperty(originalViewport, 'offsetLeft', {
341
+ get: () => 0,
342
+ configurable: true
343
+ });
344
+
345
+ Object.defineProperty(originalViewport, 'offsetTop', {
346
+ get: () => 0,
347
+ configurable: true
348
+ });
349
+
350
+ Object.defineProperty(originalViewport, 'pageLeft', {
351
+ get: () => window.scrollX || 0,
352
+ configurable: true
353
+ });
354
+
355
+ Object.defineProperty(originalViewport, 'pageTop', {
356
+ get: () => window.scrollY || 0,
357
+ configurable: true
358
+ });
359
+ }
360
+ };
361
+
362
+ // Window outer dimensions (browser chrome size)
363
+ const spoofWindowDimensions = () => {
364
+ const outerConfig = {
365
+ 'Win32': {
366
+ outerWidthOffset: 16, // Windows chrome borders
367
+ outerHeightOffset: 92 // Title bar + tabs + bookmarks
368
+ },
369
+ 'MacIntel': {
370
+ outerWidthOffset: 0, // macOS has no side borders
371
+ outerHeightOffset: 87 // Title bar + tabs
372
+ },
373
+ 'Linux x86_64': {
374
+ outerWidthOffset: 2, // Minimal borders
375
+ outerHeightOffset: 85 // GNOME decorations
376
+ }
377
+ };
378
+
379
+ const dimConfig = outerConfig[config.platform] || outerConfig['Win32'];
380
+
381
+ Object.defineProperty(window, 'outerWidth', {
382
+ get: () => window.innerWidth + dimConfig.outerWidthOffset,
383
+ configurable: true,
384
+ enumerable: true
385
+ });
386
+
387
+ Object.defineProperty(window, 'outerHeight', {
388
+ get: () => window.innerHeight + dimConfig.outerHeightOffset,
389
+ configurable: true,
390
+ enumerable: true
391
+ });
392
+ };
393
+
394
+ // Window screen position
395
+ const spoofWindowPosition = () => {
396
+ const posConfig = {
397
+ 'Win32': { screenX: 0, screenY: 0 },
398
+ 'MacIntel': { screenX: 0, screenY: 25 }, // Below menu bar
399
+ 'Linux x86_64': { screenX: 0, screenY: 0 }
400
+ };
401
+
402
+ const pos = posConfig[config.platform] || posConfig['Win32'];
403
+
404
+ Object.defineProperty(window, 'screenX', {
405
+ get: () => pos.screenX,
406
+ configurable: true,
407
+ enumerable: true
408
+ });
409
+
410
+ Object.defineProperty(window, 'screenY', {
411
+ get: () => pos.screenY,
412
+ configurable: true,
413
+ enumerable: true
414
+ });
415
+
416
+ Object.defineProperty(window, 'screenLeft', {
417
+ get: () => pos.screenX,
418
+ configurable: true,
419
+ enumerable: true
420
+ });
421
+
422
+ Object.defineProperty(window, 'screenTop', {
423
+ get: () => pos.screenY,
424
+ configurable: true,
425
+ enumerable: true
426
+ });
427
+ };
428
+
429
+ // matchMedia platform-specific behavior
430
+ const spoofMatchMedia = () => {
431
+ const originalMatchMedia = window.matchMedia;
432
+
433
+ window.matchMedia = function(query) {
434
+ const result = originalMatchMedia.call(this, query);
435
+
436
+ // Platform-specific media query handling
437
+ if (query.includes('prefers-color-scheme')) {
438
+ // Default to light mode (most common)
439
+ const isDark = query.includes('dark');
440
+ return new Proxy(result, {
441
+ get(target, prop) {
442
+ if (prop === 'matches') {
443
+ return !isDark; // Most users use light mode
444
+ }
445
+ return target[prop];
446
+ }
447
+ });
448
+ }
449
+
450
+ if (query.includes('prefers-reduced-motion')) {
451
+ // Most users don't have reduced motion
452
+ return new Proxy(result, {
453
+ get(target, prop) {
454
+ if (prop === 'matches') {
455
+ return false;
456
+ }
457
+ return target[prop];
458
+ }
459
+ });
460
+ }
461
+
462
+ if (query.includes('prefers-contrast')) {
463
+ // Most users use default contrast
464
+ return new Proxy(result, {
465
+ get(target, prop) {
466
+ if (prop === 'matches') {
467
+ return query.includes('no-preference');
468
+ }
469
+ return target[prop];
470
+ }
471
+ });
472
+ }
473
+
474
+ if (query.includes('pointer')) {
475
+ // Desktop platforms have fine pointer (mouse)
476
+ const hasFinePointer = config.platform !== 'Android' && config.maxTouchPoints === 0;
477
+ return new Proxy(result, {
478
+ get(target, prop) {
479
+ if (prop === 'matches') {
480
+ if (query.includes('fine')) return hasFinePointer;
481
+ if (query.includes('coarse')) return !hasFinePointer;
482
+ if (query.includes('none')) return false;
483
+ }
484
+ return target[prop];
485
+ }
486
+ });
487
+ }
488
+
489
+ if (query.includes('hover')) {
490
+ // Desktop platforms support hover
491
+ return new Proxy(result, {
492
+ get(target, prop) {
493
+ if (prop === 'matches') {
494
+ return query.includes('hover') && !query.includes('none');
495
+ }
496
+ return target[prop];
497
+ }
498
+ });
499
+ }
500
+
501
+ return result;
502
+ };
503
+ };
504
+
505
+ // ScreenDetails API (multi-monitor detection)
506
+ const spoofScreenDetails = () => {
507
+ if ('getScreenDetails' in window) {
508
+ window.getScreenDetails = function() {
509
+ return Promise.resolve({
510
+ screens: [{
511
+ availHeight: screen.availHeight,
512
+ availWidth: screen.availWidth,
513
+ availLeft: 0,
514
+ availTop: 0,
515
+ colorDepth: config.colorDepth || 24,
516
+ devicePixelRatio: config.devicePixelRatio || 1,
517
+ height: screen.height,
518
+ width: screen.width,
519
+ isExtended: false,
520
+ isPrimary: true,
521
+ label: 'Primary Display',
522
+ left: 0,
523
+ orientation: screen.orientation || { angle: 0, type: 'landscape-primary' },
524
+ pixelDepth: config.screenDepth || 24,
525
+ top: 0
526
+ }],
527
+ currentScreen: null,
528
+ onscreenschange: null,
529
+ oncurrentscreenchange: null,
530
+ addEventListener: () => {},
531
+ removeEventListener: () => {}
532
+ });
533
+ };
534
+ }
535
+ };
536
+
537
+ // Initialize all enhanced spoofing
538
+ const DEBUG_PREFIX = '[CDP-FP-DEBUG]';
539
+ const ERROR_PREFIX = '[CDP-FP-ERROR]';
540
+
541
+ console.log(DEBUG_PREFIX, 'Starting platform consistency overrides for:', config.platform);
542
+
543
+ const applyConsistency = (name, fn) => {
544
+ try {
545
+ fn();
546
+ console.log(DEBUG_PREFIX, \`✓ Applied \${name}\`);
547
+ return true;
548
+ } catch (e) {
549
+ console.error(ERROR_PREFIX, \`✗ Failed to apply \${name}:\`, e);
550
+ throw e; // Rethrow to make errors visible
551
+ }
552
+ };
553
+
554
+ try {
555
+ applyConsistency('Screen Orientation', spoofScreenOrientation);
556
+ applyConsistency('Screen Availability', spoofScreenAvailability);
557
+ applyConsistency('Visual Viewport', spoofVisualViewport);
558
+ applyConsistency('Window Dimensions', spoofWindowDimensions);
559
+ applyConsistency('Window Position', spoofWindowPosition);
560
+ applyConsistency('Match Media', spoofMatchMedia);
561
+ applyConsistency('Screen Details API', spoofScreenDetails);
562
+
563
+ console.log(DEBUG_PREFIX, \`✓ Platform consistency complete for \${config.platform}\`);
564
+ } catch (e) {
565
+ console.error(ERROR_PREFIX, '✗ Failed to apply platform consistency:', e);
566
+ throw e; // Rethrow to make errors visible
567
+ }
225
568
  })();`;
226
569
  };
227
570
  //# sourceMappingURL=platform-consistency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-consistency.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/platform-consistency.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,QAAgB,EAAE,eAAgC,EAAU,EAAE;IAC1G,uDAAuD;IACvD,MAAM,eAAe,GAAG;QACpB,OAAO,EAAE;YACL,gBAAgB,EAAE,GAAG;YACrB,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,EAAE;YACd,mBAAmB,EAAE,CAAC;YACtB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,6BAA6B;YACpC,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,UAAU;YACtB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1B,SAAS,EAAE,iHAAiH;YAC5H,UAAU,EAAE,yGAAyG;YACrH,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACvG,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kCAAkC,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACpH,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACpG,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBAC5G,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,WAAW,EAAE,oEAAoE,EAAE;aACpK;YACD,SAAS,EAAE;gBACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACrF,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACrF,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBAC/F,EAAE,IAAI,EAAE,kCAAkC,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE;aAChH;YACD,yCAAyC;YACzC,UAAU,EAAE;gBACR,QAAQ,EAAE,EAAE;gBACZ,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,IAAI;gBACd,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,UAAU;aACnB;SACJ;QACD,UAAU,EAAE;YACR,gBAAgB,EAAE,GAAG;YACrB,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,EAAE;YACd,mBAAmB,EAAE,CAAC;YACtB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,aAAa;YACrB,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,UAAU;YACtB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1B,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;gBAC9D,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kCAAkC,EAAE;aAC9E;SACJ;QACD,cAAc,EAAE;YACZ,gBAAgB,EAAE,GAAG;YACrB,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,EAAE;YACd,mBAAmB,EAAE,CAAC;YACtB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,cAAc;YACxB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,aAAa;YACrB,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,UAAU;YACtB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1B,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;aACjE;SACJ;KACJ,CAAC;IAEF,MAAM,aAAa,GAAG,eAAe,CAAC,QAAwC,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;IAEnH,mDAAmD;IACnD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;QAC7B,GAAG,aAAa;QAChB,GAAG,eAAe;QAClB,8BAA8B;QAC9B,QAAQ,EAAE,eAAe,CAAC,QAAQ,IAAI,QAAQ;KACjD,CAAC,CAAC,CAAC,aAAa,CAAC;IAElB,OAAO;;;;kCAIuB,QAAQ;qBACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyHrC,CAAC;AACP,CAAC,CAAC"}
1
+ {"version":3,"file":"platform-consistency.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/platform-consistency.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  /**
2
- * Runtime.enable Bypass
3
- * Prevents CDP detection through console.log(Error) technique
2
+ * Runtime.enable Bypass Script
3
+ * Prevents CDP detection through console.log(Error) technique and stack trace analysis.
4
+ *
5
+ * IMPORTANT: This is now a SCRIPT to be injected via addScriptToEvaluateOnNewDocument,
6
+ * NOT via Runtime.evaluate (which would defeat the purpose since Runtime.evaluate IS detectable!)
4
7
  */
5
- export declare const setupRuntimeEnableBypass: (client: any) => Promise<void>;
8
+ /**
9
+ * Creates the runtime enable bypass script that should be bundled with other stealth scripts.
10
+ * This script runs BEFORE page JavaScript and patches Error/console to hide CDP markers.
11
+ */
12
+ export declare const createRuntimeEnableBypassScript: () => string;
6
13
  //# sourceMappingURL=runtime-enable-bypass.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"runtime-enable-bypass.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/runtime-enable-bypass.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,+BAA+B,QAAO,MAkIlD,CAAC"}