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.
Files changed (230) hide show
  1. package/dist/browser-controller.d.ts +22 -3
  2. package/dist/browser-controller.d.ts.map +1 -1
  3. package/dist/browser-controller.js +319 -28
  4. package/dist/browser-controller.js.map +1 -1
  5. package/dist/browser-plugin.d.ts +56 -7
  6. package/dist/browser-plugin.d.ts.map +1 -1
  7. package/dist/browser-plugin.js +268 -56
  8. package/dist/browser-plugin.js.map +1 -1
  9. package/dist/browser-process/browser.d.ts +39 -0
  10. package/dist/browser-process/browser.d.ts.map +1 -1
  11. package/dist/browser-process/browser.js +125 -18
  12. package/dist/browser-process/browser.js.map +1 -1
  13. package/dist/browser-process/process.d.ts +9 -0
  14. package/dist/browser-process/process.d.ts.map +1 -1
  15. package/dist/browser-process/process.js +100 -6
  16. package/dist/browser-process/process.js.map +1 -1
  17. package/dist/browser-profiles/chrome/default.d.ts +116 -0
  18. package/dist/browser-profiles/chrome/default.d.ts.map +1 -1
  19. package/dist/browser-profiles/chrome/default.js +118 -1
  20. package/dist/browser-profiles/chrome/default.js.map +1 -1
  21. package/dist/browser-profiles/chrome/populate-profile.d.ts +76 -0
  22. package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -0
  23. package/dist/browser-profiles/chrome/populate-profile.js +300 -0
  24. package/dist/browser-profiles/chrome/populate-profile.js.map +1 -0
  25. package/dist/browser-profiles/index.d.ts +1 -0
  26. package/dist/browser-profiles/index.d.ts.map +1 -1
  27. package/dist/browser-profiles/index.js +2 -0
  28. package/dist/browser-profiles/index.js.map +1 -1
  29. package/dist/crawler.d.ts +81 -9
  30. package/dist/crawler.d.ts.map +1 -1
  31. package/dist/crawler.js +26 -10
  32. package/dist/crawler.js.map +1 -1
  33. package/dist/fingerprinting/all-fingerprint-defender/_locales/en/messages.json +95 -0
  34. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts +2 -0
  35. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts.map +1 -0
  36. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js +1 -0
  37. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js.map +1 -0
  38. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts +2 -0
  39. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts.map +1 -0
  40. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js +1 -0
  41. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js.map +1 -0
  42. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts +83 -0
  43. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts.map +1 -0
  44. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js +1 -0
  45. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js.map +1 -0
  46. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts +2 -0
  47. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts.map +1 -0
  48. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js +1 -0
  49. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js.map +1 -0
  50. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts +2 -0
  51. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts.map +1 -0
  52. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js +1 -0
  53. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js.map +1 -0
  54. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts +2 -0
  55. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts.map +1 -0
  56. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js +1 -0
  57. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js.map +1 -0
  58. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts +2 -0
  59. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts.map +1 -0
  60. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js +1 -0
  61. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js.map +1 -0
  62. package/dist/fingerprinting/all-fingerprint-defender/assets/debounce-09920c81.css +1 -0
  63. package/dist/fingerprinting/all-fingerprint-defender/assets/options-fe2fb5aa.css +1 -0
  64. package/dist/fingerprinting/all-fingerprint-defender/assets/popup-1886d2ef.css +1 -0
  65. package/dist/fingerprinting/all-fingerprint-defender/img/icon-128.png +0 -0
  66. package/dist/fingerprinting/all-fingerprint-defender/img/icon-16.png +0 -0
  67. package/dist/fingerprinting/all-fingerprint-defender/img/icon-24.png +0 -0
  68. package/dist/fingerprinting/all-fingerprint-defender/img/icon-32-disabled.png +0 -0
  69. package/dist/fingerprinting/all-fingerprint-defender/img/icon-32.png +0 -0
  70. package/dist/fingerprinting/all-fingerprint-defender/img/icon-48.png +0 -0
  71. package/dist/fingerprinting/all-fingerprint-defender/manifest.json +83 -0
  72. package/dist/fingerprinting/all-fingerprint-defender/options.html +17 -0
  73. package/dist/fingerprinting/all-fingerprint-defender/popup.html +23 -0
  74. package/dist/fingerprinting/anti-webgpu/background.d.ts +2 -0
  75. package/dist/fingerprinting/anti-webgpu/background.d.ts.map +1 -0
  76. package/dist/fingerprinting/anti-webgpu/background.js +4 -0
  77. package/dist/fingerprinting/anti-webgpu/background.js.map +1 -0
  78. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts +2 -0
  79. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts.map +1 -0
  80. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js +50 -0
  81. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js.map +1 -0
  82. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts +2 -0
  83. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts.map +1 -0
  84. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js +172 -0
  85. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js.map +1 -0
  86. package/dist/fingerprinting/anti-webgpu/data/icons/128.png +0 -0
  87. package/dist/fingerprinting/anti-webgpu/data/icons/16.png +0 -0
  88. package/dist/fingerprinting/anti-webgpu/data/icons/32.png +0 -0
  89. package/dist/fingerprinting/anti-webgpu/data/icons/48.png +0 -0
  90. package/dist/fingerprinting/anti-webgpu/data/icons/64.png +0 -0
  91. package/dist/fingerprinting/anti-webgpu/data/popup/popup.css +88 -0
  92. package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts +2 -0
  93. package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts.map +1 -0
  94. package/dist/fingerprinting/anti-webgpu/data/popup/popup.html +58 -0
  95. package/dist/fingerprinting/anti-webgpu/data/popup/popup.js +96 -0
  96. package/dist/fingerprinting/anti-webgpu/data/popup/popup.js.map +1 -0
  97. package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts +2 -0
  98. package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts.map +1 -0
  99. package/dist/fingerprinting/anti-webgpu/lib/chrome.js +249 -0
  100. package/dist/fingerprinting/anti-webgpu/lib/chrome.js.map +1 -0
  101. package/dist/fingerprinting/anti-webgpu/lib/common.d.ts +2 -0
  102. package/dist/fingerprinting/anti-webgpu/lib/common.d.ts.map +1 -0
  103. package/dist/fingerprinting/anti-webgpu/lib/common.js +86 -0
  104. package/dist/fingerprinting/anti-webgpu/lib/common.js.map +1 -0
  105. package/dist/fingerprinting/anti-webgpu/lib/config.d.ts +2 -0
  106. package/dist/fingerprinting/anti-webgpu/lib/config.d.ts.map +1 -0
  107. package/dist/fingerprinting/anti-webgpu/lib/config.js +14 -0
  108. package/dist/fingerprinting/anti-webgpu/lib/config.js.map +1 -0
  109. package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts +2 -0
  110. package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts.map +1 -0
  111. package/dist/fingerprinting/anti-webgpu/lib/runtime.js +107 -0
  112. package/dist/fingerprinting/anti-webgpu/lib/runtime.js.map +1 -0
  113. package/dist/fingerprinting/anti-webgpu/manifest.json +58 -0
  114. package/dist/fingerprinting/custom-fingerprint-injector.d.ts +87 -0
  115. package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +1 -0
  116. package/dist/fingerprinting/custom-fingerprint-injector.js +342 -0
  117. package/dist/fingerprinting/custom-fingerprint-injector.js.map +1 -0
  118. package/dist/fingerprinting/fingerprint-injector.d.ts +157 -0
  119. package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -0
  120. package/dist/fingerprinting/fingerprint-injector.js +632 -0
  121. package/dist/fingerprinting/fingerprint-injector.js.map +1 -0
  122. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts +6 -0
  123. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts.map +1 -0
  124. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js +119 -0
  125. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js.map +1 -0
  126. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts +6 -0
  127. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts.map +1 -0
  128. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js +149 -0
  129. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js.map +1 -0
  130. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts +14 -0
  131. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts.map +1 -0
  132. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js +763 -0
  133. package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js.map +1 -0
  134. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts +6 -0
  135. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts.map +1 -0
  136. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js +195 -0
  137. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js.map +1 -0
  138. package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts +10 -0
  139. package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts.map +1 -0
  140. package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js +195 -0
  141. package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js.map +1 -0
  142. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +28 -0
  143. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -0
  144. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +1181 -0
  145. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -0
  146. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts +7 -0
  147. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts.map +1 -0
  148. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js +171 -0
  149. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js.map +1 -0
  150. package/dist/fingerprinting/fingerprint-overrides/index.d.ts +36 -0
  151. package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -0
  152. package/dist/fingerprinting/fingerprint-overrides/index.js +40 -0
  153. package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -0
  154. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +45 -0
  155. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts.map +1 -0
  156. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +268 -0
  157. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -0
  158. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts +6 -0
  159. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts.map +1 -0
  160. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +301 -0
  161. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js.map +1 -0
  162. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts +7 -0
  163. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts.map +1 -0
  164. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js +58 -0
  165. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js.map +1 -0
  166. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts +6 -0
  167. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts.map +1 -0
  168. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js +249 -0
  169. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js.map +1 -0
  170. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts +33 -0
  171. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -0
  172. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +618 -0
  173. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -0
  174. package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts +13 -0
  175. package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts.map +1 -0
  176. package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js +356 -0
  177. package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js.map +1 -0
  178. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts +18 -0
  179. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts.map +1 -0
  180. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js +171 -0
  181. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js.map +1 -0
  182. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +55 -0
  183. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts.map +1 -0
  184. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +244 -0
  185. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -0
  186. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts +14 -0
  187. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -0
  188. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +925 -0
  189. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -0
  190. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts +13 -0
  191. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts.map +1 -0
  192. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js +346 -0
  193. package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js.map +1 -0
  194. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts +13 -0
  195. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts.map +1 -0
  196. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js +264 -0
  197. package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js.map +1 -0
  198. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +27 -0
  199. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -0
  200. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +213 -0
  201. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -0
  202. package/dist/fingerprinting/fingerprint-overrides/utils.d.ts +12 -0
  203. package/dist/fingerprinting/fingerprint-overrides/utils.d.ts.map +1 -0
  204. package/dist/fingerprinting/fingerprint-overrides/utils.js +517 -0
  205. package/dist/fingerprinting/fingerprint-overrides/utils.js.map +1 -0
  206. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts +12 -0
  207. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -0
  208. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +215 -0
  209. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -0
  210. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts +6 -0
  211. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts.map +1 -0
  212. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js +202 -0
  213. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js.map +1 -0
  214. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts +6 -0
  215. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts.map +1 -0
  216. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +188 -0
  217. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -0
  218. package/dist/index.d.ts +4 -0
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +2 -0
  221. package/dist/index.js.map +1 -1
  222. package/dist/launcher-wrap.d.ts +2 -2
  223. package/dist/launcher-wrap.d.ts.map +1 -1
  224. package/dist/launcher-wrap.js.map +1 -1
  225. package/dist/page.d.ts +161 -7
  226. package/dist/page.d.ts.map +1 -1
  227. package/dist/page.js +1034 -23
  228. package/dist/page.js.map +1 -1
  229. package/dist/tsconfig.build.tsbuildinfo +1 -1
  230. package/package.json +8 -4
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Scroll Humanization Module
3
+ * Simulates realistic scroll behavior for 2024-2025
4
+ *
5
+ * Features:
6
+ * - Natural scroll momentum physics
7
+ * - Reading-speed based scroll patterns
8
+ * - Scroll pause at content sections
9
+ * - Touch-like vs mouse wheel differentiation
10
+ * - CDP-level scroll enhancement
11
+ */
12
+ const DEFAULT_SCROLL_CONFIG = {
13
+ baseScrollAmount: 100,
14
+ scrollVariance: 30,
15
+ deceleration: 0.95,
16
+ minVelocity: 5,
17
+ readingPauseProbability: 0.15,
18
+ readingPauseDuration: [500, 2000],
19
+ eventDelay: 16, // ~60fps
20
+ };
21
+ /**
22
+ * Generate human-like scroll positions using momentum physics
23
+ */
24
+ export const generateScrollPath = (startY, targetY, config = {}) => {
25
+ const cfg = { ...DEFAULT_SCROLL_CONFIG, ...config };
26
+ const path = [];
27
+ const direction = targetY > startY ? 1 : -1;
28
+ const totalDistance = Math.abs(targetY - startY);
29
+ // Initial velocity based on distance
30
+ let velocity = Math.min(cfg.baseScrollAmount * 2, totalDistance / 10);
31
+ let currentY = startY;
32
+ while (Math.abs(targetY - currentY) > cfg.minVelocity) {
33
+ // Apply deceleration as we approach target
34
+ const remainingDistance = Math.abs(targetY - currentY);
35
+ const decelerationFactor = remainingDistance < 200 ?
36
+ cfg.deceleration * 0.8 : cfg.deceleration;
37
+ velocity *= decelerationFactor;
38
+ // Add variance to make it look natural
39
+ const variance = (Math.random() - 0.5) * cfg.scrollVariance;
40
+ const scrollAmount = (velocity + variance) * direction;
41
+ currentY += scrollAmount;
42
+ // Clamp to target
43
+ if (direction > 0) {
44
+ currentY = Math.min(currentY, targetY);
45
+ }
46
+ else {
47
+ currentY = Math.max(currentY, targetY);
48
+ }
49
+ // Add slight variation to timing
50
+ const delay = cfg.eventDelay + (Math.random() - 0.5) * 8;
51
+ path.push({ y: Math.round(currentY), delay: Math.round(delay) });
52
+ // Occasionally pause as if reading
53
+ if (Math.random() < cfg.readingPauseProbability && path.length > 3) {
54
+ const pauseDuration = cfg.readingPauseDuration[0] +
55
+ Math.random() * (cfg.readingPauseDuration[1] - cfg.readingPauseDuration[0]);
56
+ path.push({ y: Math.round(currentY), delay: Math.round(pauseDuration) });
57
+ // Reset velocity after pause (user starts scrolling again)
58
+ velocity = cfg.baseScrollAmount;
59
+ }
60
+ // Ensure we don't get stuck in an infinite loop
61
+ if (velocity < cfg.minVelocity) {
62
+ break;
63
+ }
64
+ }
65
+ // Final position
66
+ path.push({ y: targetY, delay: cfg.eventDelay });
67
+ return path;
68
+ };
69
+ /**
70
+ * Create a script that enhances scroll events in the browser
71
+ */
72
+ export const createScrollHumanizationScript = () => {
73
+ return `
74
+ (() => {
75
+ 'use strict';
76
+
77
+ // Scroll Humanization for 2024-2025
78
+ const humanizeScroll = () => {
79
+ // Track scroll state
80
+ let scrollVelocity = 0;
81
+
82
+ // Store original wheel event constructor
83
+ const OriginalWheelEvent = WheelEvent;
84
+
85
+ // Override WheelEvent to add realistic properties
86
+ window.WheelEvent = function(type, eventInitDict = {}) {
87
+ const enhancedInit = { ...eventInitDict };
88
+
89
+ // Add realistic delta values if not set
90
+ if (enhancedInit.deltaY === undefined) {
91
+ enhancedInit.deltaY = 100 + (Math.random() - 0.5) * 30;
92
+ }
93
+
94
+ // Add variance to existing delta
95
+ if (typeof enhancedInit.deltaY === 'number') {
96
+ enhancedInit.deltaY += (Math.random() - 0.5) * 10;
97
+ }
98
+
99
+ // Ensure proper delta mode (0 = pixels, 1 = lines, 2 = pages)
100
+ if (enhancedInit.deltaMode === undefined) {
101
+ enhancedInit.deltaMode = 0; // Pixels is most common
102
+ }
103
+
104
+ return new OriginalWheelEvent(type, enhancedInit);
105
+ };
106
+
107
+ // Note: Don't assign to prototype - it may be frozen in modern Chrome
108
+ // The Proxy wrapper handles prototype access via get trap if needed
109
+
110
+ // Enhanced scroll behavior tracking
111
+ const trackScrollBehavior = () => {
112
+ const originalScrollTo = window.scrollTo;
113
+ const originalScrollBy = window.scrollBy;
114
+ const originalScrollIntoView = Element.prototype.scrollIntoView;
115
+
116
+ // Override scrollTo - pass through to original
117
+ // The humanization happens at the wheel event level
118
+ window.scrollTo = function(options) {
119
+ return originalScrollTo.apply(this, arguments);
120
+ };
121
+
122
+ // Override scrollBy - pass through to original
123
+ // Variance removed: it broke precise programmatic scrolling
124
+ // (e.g., _scrollElementIntoView in page.ts needs exact positioning)
125
+ window.scrollBy = function(options) {
126
+ return originalScrollBy.apply(this, arguments);
127
+ };
128
+
129
+ // Override scrollIntoView - pass through to original
130
+ Element.prototype.scrollIntoView = function(options) {
131
+ return originalScrollIntoView.call(this, options);
132
+ };
133
+ };
134
+
135
+ // Track and enhance touch scroll events
136
+ const enhanceTouchScroll = () => {
137
+ let touchStartY = 0;
138
+ let touchStartTime = 0;
139
+
140
+ window.addEventListener('touchstart', (event) => {
141
+ if (event.touches.length === 1) {
142
+ touchStartY = event.touches[0].clientY;
143
+ touchStartTime = performance.now();
144
+ }
145
+ }, { passive: true });
146
+
147
+ window.addEventListener('touchend', (event) => {
148
+ const touchDuration = performance.now() - touchStartTime;
149
+ const touchEndY = event.changedTouches[0]?.clientY || touchStartY;
150
+ const distance = touchStartY - touchEndY;
151
+
152
+ // Calculate velocity for momentum
153
+ if (touchDuration > 0) {
154
+ scrollVelocity = distance / touchDuration;
155
+ }
156
+ }, { passive: true });
157
+ };
158
+
159
+ // Initialize scroll humanization
160
+ trackScrollBehavior();
161
+ enhanceTouchScroll();
162
+ };
163
+
164
+ // Don't catch errors - let them bubble up so we can see them
165
+ humanizeScroll();
166
+ })();`;
167
+ };
168
+ /**
169
+ * Helper sleep function
170
+ */
171
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
172
+ /**
173
+ * CDP-level human-like scroll function
174
+ */
175
+ export const humanScroll = async (client, targetY, config = {}) => {
176
+ const inputClient = client;
177
+ // Use Page.getLayoutMetrics instead of Runtime.evaluate to avoid
178
+ // activating the Runtime domain (detection vector #1)
179
+ const metrics = await inputClient.Page.getLayoutMetrics();
180
+ const startY = metrics.layoutViewport.pageY;
181
+ const viewport = {
182
+ width: metrics.layoutViewport.clientWidth,
183
+ height: metrics.layoutViewport.clientHeight,
184
+ };
185
+ // Generate scroll path
186
+ const path = generateScrollPath(startY, targetY, config);
187
+ // Position mouse in center of viewport
188
+ const mouseX = viewport.width / 2;
189
+ const mouseY = viewport.height / 2;
190
+ // Execute scroll path
191
+ let lastY = startY;
192
+ for (const point of path) {
193
+ const deltaY = point.y - lastY;
194
+ if (deltaY !== 0) {
195
+ // Dispatch wheel event
196
+ await inputClient.Input.dispatchMouseEvent({
197
+ type: 'mouseWheel',
198
+ x: mouseX,
199
+ y: mouseY,
200
+ deltaX: 0,
201
+ deltaY: deltaY,
202
+ });
203
+ }
204
+ lastY = point.y;
205
+ // Wait for delay
206
+ await sleep(point.delay);
207
+ }
208
+ };
209
+ /**
210
+ * Scroll to element with human-like behavior
211
+ */
212
+ export const humanScrollToElement = async (client, selector, config = {}) => {
213
+ const cdpClient = client;
214
+ // Use DOM domain to find element position (avoids Runtime.evaluate)
215
+ await cdpClient.DOM.enable();
216
+ const { root } = await cdpClient.DOM.getDocument();
217
+ const { nodeId } = await cdpClient.DOM.querySelector({ nodeId: root.nodeId, selector });
218
+ if (!nodeId) {
219
+ throw new Error(`Element not found: ${selector}`);
220
+ }
221
+ const { model } = await cdpClient.DOM.getBoxModel({ nodeId });
222
+ // content quad: [x1,y1, x2,y2, x3,y3, x4,y4] - these are page coordinates
223
+ const elementTop = model.content[1];
224
+ const elementBottom = model.content[5];
225
+ const elementHeight = elementBottom - elementTop;
226
+ // Get viewport dimensions
227
+ const metrics = await cdpClient.Page.getLayoutMetrics();
228
+ const viewportHeight = metrics.layoutViewport.clientHeight;
229
+ // Calculate target scroll position (element centered in viewport)
230
+ const targetY = elementTop - (viewportHeight / 2) + (elementHeight / 2);
231
+ await humanScroll(client, Math.max(0, targetY), config);
232
+ };
233
+ /**
234
+ * Setup scroll humanization at CDP level
235
+ */
236
+ export const setupScrollHumanization = async (client) => {
237
+ const runtimeClient = client;
238
+ // NOTE: Using addScriptToEvaluateOnNewDocument instead of Runtime.evaluate
239
+ // Runtime.evaluate is a CDP detection vector
240
+ await runtimeClient.Page.addScriptToEvaluateOnNewDocument({
241
+ source: createScrollHumanizationScript()
242
+ });
243
+ };
244
+ //# sourceMappingURL=scroll-humanization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-humanization.js","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/scroll-humanization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Base stealth script for hiding automation indicators
3
+ * Includes error stack hiding, console patching, and automation flags removal
4
+ *
5
+ * 2024-2025 Enhancements:
6
+ * - deviceMemory spoofing
7
+ * - pdfViewerEnabled consistency
8
+ * - Notification.permission handling
9
+ * - Bluetooth/USB/Serial API masking
10
+ * - Speech synthesis voice spoofing
11
+ * - Credentials API consistency
12
+ */
13
+ export declare const createStealthScript: () => string;
14
+ //# sourceMappingURL=stealth-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stealth-script.d.ts","sourceRoot":"","sources":["../../../src/fingerprinting/fingerprint-overrides/stealth-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,mBAAmB,QAAO,MA+4BtC,CAAC"}