jumpy-lion 0.1.1 → 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 +316 -71
  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 -16
  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 +160 -13
  226. package/dist/page.d.ts.map +1 -1
  227. package/dist/page.js +1027 -42
  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,300 @@
1
+ /**
2
+ * Profile Population Utilities
3
+ * Functions to populate Chrome profile with realistic user data
4
+ *
5
+ * 2024-2025 Features:
6
+ * - Browsing history entries
7
+ * - Site permissions
8
+ * - Storage access patterns
9
+ * - localStorage pre-population
10
+ * - Returning visitor simulation
11
+ */
12
+ import fs from 'fs/promises';
13
+ import path from 'path';
14
+ /**
15
+ * Popular sites for realistic browsing history
16
+ */
17
+ const COMMON_SITES = [
18
+ { url: 'https://www.google.com/', title: 'Google', visitCount: 50 },
19
+ { url: 'https://www.youtube.com/', title: 'YouTube', visitCount: 30 },
20
+ { url: 'https://www.facebook.com/', title: 'Facebook', visitCount: 15 },
21
+ { url: 'https://www.amazon.com/', title: 'Amazon.com', visitCount: 20 },
22
+ { url: 'https://www.wikipedia.org/', title: 'Wikipedia', visitCount: 10 },
23
+ { url: 'https://www.reddit.com/', title: 'Reddit', visitCount: 25 },
24
+ { url: 'https://www.twitter.com/', title: 'Twitter', visitCount: 12 },
25
+ { url: 'https://www.netflix.com/', title: 'Netflix', visitCount: 8 },
26
+ { url: 'https://www.github.com/', title: 'GitHub', visitCount: 15 },
27
+ { url: 'https://mail.google.com/', title: 'Gmail', visitCount: 40 },
28
+ ];
29
+ /**
30
+ * Generate a random timestamp within the last N days
31
+ */
32
+ const getRandomPastTimestamp = (daysAgo) => {
33
+ const now = Date.now();
34
+ const pastTime = now - (Math.random() * daysAgo * 24 * 60 * 60 * 1000);
35
+ return Math.floor(pastTime);
36
+ };
37
+ /**
38
+ * Chrome timestamp format (microseconds since 1601)
39
+ */
40
+ const toChromeTimestamp = (unixMs) => {
41
+ // Chrome uses microseconds since January 1, 1601
42
+ const epochDiff = 11644473600000; // ms between 1601 and 1970
43
+ return String((unixMs + epochDiff) * 1000);
44
+ };
45
+ /**
46
+ * Generate Local State file content
47
+ */
48
+ export const generateLocalState = () => {
49
+ return {
50
+ "browser": {
51
+ "enabled_labs_experiments": [],
52
+ "last_known_google_url": "https://www.google.com/",
53
+ "last_prompted_google_url": "https://www.google.com/",
54
+ },
55
+ "data_use_measurement": {
56
+ "data_used": {
57
+ "foreground": 50000000,
58
+ "background": 10000000,
59
+ },
60
+ },
61
+ "profile": {
62
+ "avatar_index": 0,
63
+ "info_cache": {
64
+ "Default": {
65
+ "active_time": toChromeTimestamp(Date.now()),
66
+ "avatar_icon": "chrome://theme/IDR_PROFILE_AVATAR_0",
67
+ "background_apps": false,
68
+ "force_signin_profile_locked": false,
69
+ "gaia_given_name": "",
70
+ "gaia_id": "",
71
+ "gaia_name": "",
72
+ "hosted_domain": "",
73
+ "is_consented_primary_account": false,
74
+ "is_ephemeral": false,
75
+ "is_omitted_from_profile_list": false,
76
+ "is_signed_in_with_credential_provider": false,
77
+ "is_using_default_avatar": true,
78
+ "is_using_default_name": true,
79
+ "managed_user_id": "",
80
+ "metrics_bucket_index": 0,
81
+ "name": "Profile 1",
82
+ "shortcut_name": "",
83
+ "user_name": "",
84
+ },
85
+ },
86
+ "last_active_profiles": ["Default"],
87
+ "last_used": "Default",
88
+ "profiles_created": 1,
89
+ "profiles_order": ["Default"],
90
+ },
91
+ "shutdown": {
92
+ "num_processes": 1,
93
+ "num_processes_slow": 0,
94
+ },
95
+ "user_experience_metrics": {
96
+ "client_id": generateClientId(),
97
+ "low_entropy_source3": Math.floor(Math.random() * 8000),
98
+ "pseudo_low_entropy_source": Math.floor(Math.random() * 8000),
99
+ },
100
+ };
101
+ };
102
+ /**
103
+ * Generate a random client ID (similar to Chrome's format)
104
+ */
105
+ const generateClientId = () => {
106
+ const hexChars = '0123456789abcdef';
107
+ let id = '';
108
+ for (let i = 0; i < 32; i++) {
109
+ if (i === 8 || i === 12 || i === 16 || i === 20) {
110
+ id += '-';
111
+ }
112
+ id += hexChars[Math.floor(Math.random() * 16)];
113
+ }
114
+ return id;
115
+ };
116
+ /**
117
+ * Generate site engagement data
118
+ */
119
+ export const generateSiteEngagement = (sites = COMMON_SITES) => {
120
+ const engagement = {};
121
+ sites.forEach(site => {
122
+ const domain = new URL(site.url).hostname;
123
+ const score = Math.min(100, site.visitCount * 2 + Math.random() * 20);
124
+ engagement[domain] = {
125
+ last_engagement_time: toChromeTimestamp(getRandomPastTimestamp(7)),
126
+ last_shortcut_launch_time: "0",
127
+ points_added_today: Math.floor(Math.random() * 5),
128
+ raw_score: score,
129
+ };
130
+ });
131
+ return {
132
+ schema_version: 2,
133
+ sites: engagement,
134
+ };
135
+ };
136
+ /**
137
+ * Generate media engagement data
138
+ */
139
+ export const generateMediaEngagement = () => {
140
+ const mediaHosts = ['youtube.com', 'netflix.com', 'spotify.com'];
141
+ const engagement = {};
142
+ mediaHosts.forEach(host => {
143
+ engagement[host] = {
144
+ has_high_score: Math.random() > 0.5,
145
+ visits: Math.floor(Math.random() * 50) + 5,
146
+ media_playbacks: Math.floor(Math.random() * 30),
147
+ last_media_playback_time: toChromeTimestamp(getRandomPastTimestamp(14)),
148
+ };
149
+ });
150
+ return {
151
+ schema_version: 4,
152
+ sites: engagement,
153
+ };
154
+ };
155
+ /**
156
+ * Populate a Chrome profile with realistic user data
157
+ */
158
+ export const populateChromeProfile = async (profilePath, options = {}) => {
159
+ const { addHistory = true, addEngagement = true, addMediaEngagement = true, customSites = COMMON_SITES,
160
+ // historyDays is unused but kept for future extensions
161
+ } = options;
162
+ const defaultPath = path.join(profilePath, 'Default');
163
+ // Ensure Default directory exists
164
+ await fs.mkdir(defaultPath, { recursive: true });
165
+ // Generate and write Local State
166
+ const localStatePath = path.join(profilePath, 'Local State');
167
+ const localState = generateLocalState();
168
+ await fs.writeFile(localStatePath, JSON.stringify(localState, null, 2));
169
+ // Read existing Preferences or create new
170
+ const preferencesPath = path.join(defaultPath, 'Preferences');
171
+ let preferences = {};
172
+ try {
173
+ const existing = await fs.readFile(preferencesPath, 'utf-8');
174
+ preferences = JSON.parse(existing);
175
+ }
176
+ catch {
177
+ // File doesn't exist, start fresh
178
+ }
179
+ // Add site engagement data
180
+ if (addEngagement) {
181
+ preferences.site_engagement = generateSiteEngagement(customSites);
182
+ }
183
+ // Add media engagement data
184
+ if (addMediaEngagement) {
185
+ preferences.media_engagement = generateMediaEngagement();
186
+ }
187
+ // Add history indicators (not actual history, but signs of browsing)
188
+ if (addHistory) {
189
+ preferences.domain_diversity = {
190
+ last_reporting_timestamp: toChromeTimestamp(Date.now()),
191
+ };
192
+ preferences.session = {
193
+ restore_on_startup: 1, // Continue where you left off
194
+ startup_urls: [],
195
+ };
196
+ }
197
+ // Write updated Preferences
198
+ await fs.writeFile(preferencesPath, JSON.stringify(preferences, null, 2));
199
+ };
200
+ /**
201
+ * Generate localStorage data to inject after page load
202
+ * Returns a script that can be evaluated in the browser context
203
+ */
204
+ export const generateLocalStorageScript = (sites) => {
205
+ const sitesToPopulate = sites || ['google.com', 'youtube.com', 'facebook.com'];
206
+ const storageData = {};
207
+ // Common localStorage keys found on popular sites
208
+ sitesToPopulate.forEach(site => {
209
+ const domain = site.replace(/^https?:\/\//, '').replace(/^www\./, '');
210
+ // Generic keys that indicate returning visitor
211
+ storageData[`${domain}_visited`] = Date.now().toString();
212
+ storageData[`${domain}_consent`] = 'accepted';
213
+ });
214
+ // Add some generic keys that real browsers have
215
+ storageData['_ga_session'] = `1.${Date.now()}`;
216
+ storageData['_consent_shown'] = 'true';
217
+ storageData['cookie_notice_dismissed'] = 'true';
218
+ storageData['preferred_theme'] = 'light';
219
+ return `
220
+ (() => {
221
+ const data = ${JSON.stringify(storageData)};
222
+ Object.entries(data).forEach(([key, value]) => {
223
+ try {
224
+ if (!localStorage.getItem(key)) {
225
+ localStorage.setItem(key, value);
226
+ }
227
+ } catch (e) {
228
+ // Storage might be disabled
229
+ }
230
+ });
231
+ })();
232
+ `;
233
+ };
234
+ /**
235
+ * Generate session storage data for returning visitor simulation
236
+ */
237
+ export const generateSessionStorageScript = () => {
238
+ return `
239
+ (() => {
240
+ // Simulate returning visitor session data
241
+ const sessionData = {
242
+ 'user_session_start': Date.now().toString(),
243
+ 'page_views': '1',
244
+ 'referrer': document.referrer || '',
245
+ 'entry_page': window.location.pathname,
246
+ };
247
+
248
+ Object.entries(sessionData).forEach(([key, value]) => {
249
+ try {
250
+ if (!sessionStorage.getItem(key)) {
251
+ sessionStorage.setItem(key, value);
252
+ }
253
+ } catch (e) {
254
+ // Storage might be disabled
255
+ }
256
+ });
257
+
258
+ // Increment page views on subsequent navigations
259
+ const currentViews = parseInt(sessionStorage.getItem('page_views') || '0', 10);
260
+ sessionStorage.setItem('page_views', String(currentViews + 1));
261
+ })();
262
+ `;
263
+ };
264
+ export const generateReturningVisitorCookies = (domain) => {
265
+ const now = Date.now();
266
+ const oneYear = 365 * 24 * 60 * 60 * 1000;
267
+ return [
268
+ {
269
+ name: '_returning_visitor',
270
+ value: '1',
271
+ domain: domain,
272
+ path: '/',
273
+ secure: true,
274
+ httpOnly: false,
275
+ sameSite: 'Lax',
276
+ expires: Math.floor((now + oneYear) / 1000),
277
+ },
278
+ {
279
+ name: '_first_visit',
280
+ value: String(now - Math.floor(Math.random() * 30 * 24 * 60 * 60 * 1000)), // Random date in last 30 days
281
+ domain: domain,
282
+ path: '/',
283
+ secure: true,
284
+ httpOnly: false,
285
+ sameSite: 'Lax',
286
+ expires: Math.floor((now + oneYear) / 1000),
287
+ },
288
+ {
289
+ name: 'consent_given',
290
+ value: 'true',
291
+ domain: domain,
292
+ path: '/',
293
+ secure: true,
294
+ httpOnly: false,
295
+ sameSite: 'Lax',
296
+ expires: Math.floor((now + oneYear) / 1000),
297
+ },
298
+ ];
299
+ };
300
+ //# sourceMappingURL=populate-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate-profile.js","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/populate-profile.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export { DEFAULT_PROFILE } from "./chrome/default.js";
2
2
  export { createChromeProfile, modifyChromeProfile as modifyProfile } from "./chrome/create.js";
3
+ export { populateChromeProfile, generateLocalState, generateSiteEngagement, generateMediaEngagement, generateLocalStorageScript, generateSessionStorageScript, generateReturningVisitorCookies, type PopulateProfileOptions, type ProfileCookie, } from "./chrome/populate-profile.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser-profiles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser-profiles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG/F,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GACrB,MAAM,8BAA8B,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export { DEFAULT_PROFILE } from "./chrome/default.js";
2
2
  export { createChromeProfile, modifyChromeProfile as modifyProfile } from "./chrome/create.js";
3
+ // 2024-2025 Profile population utilities
4
+ export { populateChromeProfile, generateLocalState, generateSiteEngagement, generateMediaEngagement, generateLocalStorageScript, generateSessionStorageScript, generateReturningVisitorCookies, } from "./chrome/populate-profile.js";
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser-profiles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser-profiles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/F,yCAAyC;AACzC,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,GAGlC,MAAM,8BAA8B,CAAC"}
package/dist/crawler.d.ts CHANGED
@@ -1,23 +1,95 @@
1
1
  import type { Dictionary } from '@crawlee/types';
2
- import type CDP from 'chrome-remote-interface';
3
- import type { BrowserCrawlerOptions, BrowserCrawlingContext, BrowserHook, BrowserPoolOptions, BrowserRequestHandler, GetUserDataFromRequest, LoadedContext, RouterRoutes } from 'crawlee';
2
+ import type { BrowserCrawlerOptions, BrowserCrawlingContext, BrowserHook, BrowserRequestHandler, LaunchContext, LoadedContext, RouterRoutes, RouterHandler } from 'crawlee';
4
3
  import { BrowserCrawler, Configuration } from 'crawlee';
5
4
  import type CDPBrowserController from './browser-controller.js';
5
+ import CDPBrowserPlugin from './browser-plugin.js';
6
+ import { CdpLauncher, type LaunchReturn } from './launcher-wrap.js';
6
7
  import type CdpPage from './page.js';
7
8
  import type { GotoOptions } from './page.js';
8
- export interface CDPCrawlingContext<UserData extends Dictionary = Dictionary> extends BrowserCrawlingContext<typeof CDP, CdpPage, Response, CDPBrowserController, UserData> {
9
+ import type CDPCrawler from './index.js';
10
+ /**
11
+ * Humanization options for simulating realistic user behavior
12
+ * All options are disabled by default for performance
13
+ */
14
+ interface HumanizationOptions {
15
+ /** Enable mouse movement humanization. Default: false */
16
+ mouse?: boolean;
17
+ /** Enable keyboard humanization. Default: false */
18
+ keyboard?: boolean;
19
+ /** Enable scroll humanization. Default: false */
20
+ scroll?: boolean;
21
+ }
22
+ interface FingerprintGeneratorOptions {
23
+ /** Operating systems to generate fingerprints for (e.g., ["windows"], ["macos"], ["linux"]) */
24
+ operatingSystems?: string[];
25
+ /** Devices to generate fingerprints for (e.g., ["desktop"], ["mobile"]) */
26
+ devices?: string[];
27
+ /** Browsers to generate fingerprints for (e.g., ["chrome"], ["firefox"]) */
28
+ browsers?: string[];
29
+ /** Locales to generate fingerprints for (e.g., ["en-US"], ["it-IT"]) */
30
+ locales?: string[];
31
+ }
32
+ interface LaunchOptions {
33
+ headless?: boolean;
34
+ useExperimentalFingerprints?: boolean;
35
+ windowWidth?: number;
36
+ windowHeight?: number;
37
+ ignoreHttpsErrors?: boolean;
38
+ executablePath?: string;
39
+ browserType?: string;
40
+ useIncognitoPages?: boolean;
41
+ /** Whether to start the browser maximized and fullscreen. Default: true */
42
+ maximizeWindow?: boolean;
43
+ /** Options for fingerprint generation - passed from browserPoolOptions */
44
+ fingerprintGeneratorOptions?: FingerprintGeneratorOptions;
45
+ fingerprintOptions?: {
46
+ enableAdvancedStealth?: boolean;
47
+ bypassRuntimeEnable?: boolean;
48
+ spoofWebGL?: boolean;
49
+ spoofAudioContext?: boolean;
50
+ spoofClientRects?: boolean;
51
+ maskAutomationFlags?: boolean;
52
+ useFingerprintDefaults?: boolean;
53
+ platform?: 'Win32' | 'MacIntel' | 'Linux x86_64';
54
+ spoofFonts?: boolean;
55
+ spoofPerformance?: boolean;
56
+ spoofLocale?: boolean;
57
+ detectTimezone?: boolean;
58
+ bypassCDPDetection?: boolean;
59
+ spoofStorage?: boolean;
60
+ spoofTiming?: boolean;
61
+ enableDataDomeBypass?: boolean;
62
+ /** Humanization options (all disabled by default) */
63
+ humanization?: HumanizationOptions;
64
+ /** Enable debug logging in browser console. Default: true for debugging */
65
+ debug?: boolean;
66
+ };
67
+ }
68
+ export interface CDPPluginOptions {
69
+ browserPlugins: [CDPBrowserPlugin];
70
+ }
71
+ export type CDPGotoOptions = Parameters<CdpPage['goto']>[1];
72
+ export interface CDPCrawlingContext<UserData extends Dictionary = Dictionary> extends BrowserCrawlingContext<typeof CDPCrawler, CdpPage, Response, CDPBrowserController, UserData> {
73
+ }
74
+ export interface CDPLaunchContext extends Partial<Omit<LaunchContext<CdpLauncher, LaunchOptions, LaunchReturn, {}, CdpPage>, 'launchOptions'>> {
75
+ launchOptions?: LaunchOptions;
9
76
  }
10
77
  export interface CDPHook extends BrowserHook<CDPCrawlingContext, CDPGotoOptions> {
11
78
  }
12
79
  export interface CDPRequestHandler extends BrowserRequestHandler<LoadedContext<CDPCrawlingContext>> {
80
+ (ctx: CDPCrawlingContext): Promise<void> | void;
13
81
  }
14
- export type CDPGotoOptions = Parameters<CdpPage['goto']>[1];
15
- export default class Crawler extends BrowserCrawler<BrowserPoolOptions, // BrowserPoolOptions (can be customized further if needed)
16
- {}, // LaunchOptions
17
- CDPCrawlingContext> {
82
+ export interface CDPCrawlerOptions extends BrowserCrawlerOptions<CDPCrawlingContext, CDPPluginOptions> {
83
+ launchContext?: CDPLaunchContext;
84
+ requestHandler?: CDPRequestHandler;
85
+ }
86
+ export default class Crawler extends BrowserCrawler<CDPPluginOptions, LaunchOptions, CDPCrawlingContext> {
87
+ private readonly crawlerOptions;
18
88
  readonly config: Configuration;
19
- constructor(options?: BrowserCrawlerOptions, config?: Configuration);
89
+ constructor(crawlerOptions?: CDPCrawlerOptions, config?: Configuration);
20
90
  protected _navigationHandler(crawlingContext: CDPCrawlingContext, gotoOptions: GotoOptions): Promise<any>;
21
91
  }
22
- export declare function createCDPRouter<Context extends CDPCrawlingContext = CDPCrawlingContext, UserData extends Dictionary = GetUserDataFromRequest<Context['request']>>(routes?: RouterRoutes<Context, UserData>): import("crawlee").RouterHandler<Context>;
92
+ export type CDPRouter<Context extends CDPCrawlingContext = CDPCrawlingContext> = RouterHandler<Context>;
93
+ export declare function createCDPRouter<Context extends CDPCrawlingContext = CDPCrawlingContext>(routes?: RouterRoutes<Context, Dictionary>): CDPRouter<Context>;
94
+ export {};
23
95
  //# sourceMappingURL=crawler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crawler.d.ts","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1L,OAAO,EAAE,cAAc,EAAE,aAAa,EAAU,MAAM,SAAS,CAAC;AAEhE,OAAO,KAAK,oBAAoB,MAAM,yBAAyB,CAAC;AAGhE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,UAAU,GAAG,UAAU,CACxE,SAAQ,sBAAsB,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,CAAC;CAAI;AAErG,MAAM,WAAW,OAAQ,SAAQ,WAAW,CAAC,kBAAkB,EAAE,cAAc,CAAC;CAAI;AACpF,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAAI;AACvG,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAAc,CAC/C,kBAAkB,EAAG,2DAA2D;AAChF,EAAE,EAAG,gBAAgB;AACrB,kBAAkB,CACrB;aACsE,MAAM;gBAA7D,OAAO,GAAE,qBAA0B,EAAoB,MAAM,gBAAkC;cA2ClF,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAK3H;AAID,wBAAgB,eAAe,CAC3B,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,QAAQ,SAAS,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAC1E,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,4CAEzC"}
1
+ {"version":3,"file":"crawler.d.ts","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"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"}
package/dist/crawler.js CHANGED
@@ -3,10 +3,15 @@ import CDPBrowserPlugin from './browser-plugin.js';
3
3
  import { CdpLauncher } from './launcher-wrap.js';
4
4
  // Implement the Crawler class with proper typing
5
5
  export default class Crawler extends BrowserCrawler {
6
- constructor(options = {}, config = Configuration.getGlobalConfig()) {
7
- const { launchContext = {}, headless = false, ...browserCrawlerOptions } = options;
6
+ constructor(
7
+ // @ts-expect-error Fix types
8
+ crawlerOptions = {}, config = Configuration.getGlobalConfig()) {
9
+ const { launchContext = {}, headless = false, browserPoolOptions: poolOptions = {}, ...browserCrawlerOptions } = crawlerOptions;
8
10
  const browserPoolOptions = {
9
- ...options.browserPoolOptions,
11
+ ...poolOptions,
12
+ // Improve browser pool configuration to prevent hanging
13
+ maxOpenPagesPerBrowser: poolOptions.maxOpenPagesPerBrowser ?? 1,
14
+ operationTimeoutSecs: poolOptions.operationTimeoutSecs ?? 300,
10
15
  };
11
16
  if (launchContext.proxyUrl) {
12
17
  throw new Error('CDPCrawlerOptions.launchContext.proxyUrl is not allowed. Use CDPCrawlerOptions.proxyConfiguration instead.');
@@ -15,22 +20,33 @@ export default class Crawler extends BrowserCrawler {
15
20
  if (browserPoolOptions.browserPlugins) {
16
21
  throw new Error('browserPoolOptions.browserPlugins is disallowed. Use launchContext.launcher instead.');
17
22
  }
18
- // Set the browser plugin for CDP
19
- browserPoolOptions.browserPlugins = [
20
- new CDPBrowserPlugin(new CdpLauncher()), // Pass the correct plugin
21
- ];
22
23
  if (headless != null) {
23
24
  launchContext.launchOptions ?? (launchContext.launchOptions = {});
24
25
  launchContext.launchOptions.headless = headless;
25
26
  }
26
- // Set the browser plugin for CDP
27
+ // Pass fingerprintGeneratorOptions from browserPoolOptions to launchContext
28
+ // This ensures the browser controller can regenerate fingerprints with correct OS/locale settings
29
+ const fingerprintGeneratorOptions = poolOptions?.fingerprintOptions?.fingerprintGeneratorOptions;
30
+ if (fingerprintGeneratorOptions) {
31
+ launchContext.launchOptions ?? (launchContext.launchOptions = {});
32
+ launchContext.launchOptions.fingerprintGeneratorOptions = fingerprintGeneratorOptions;
33
+ }
34
+ // Update the plugin initialization with proper context
27
35
  browserPoolOptions.browserPlugins = [
28
- new CDPBrowserPlugin(new CdpLauncher(), launchContext), // Pass the correct plugin
36
+ new CDPBrowserPlugin(new CdpLauncher(), launchContext), // Temporary type assertion until we fix the underlying types
29
37
  ];
38
+ // if (launchContext.launchOptions?.useExperimentalFingerprints) {
39
+ // browserPoolOptions.useFingerprints = false;
40
+ // }
30
41
  // Pass the options and config to the parent class constructor
31
42
  // @TODO:
32
- // @ts-expect-error Fix types
33
43
  super({ ...browserCrawlerOptions, launchContext, browserPoolOptions }, config);
44
+ Object.defineProperty(this, "crawlerOptions", {
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true,
48
+ value: crawlerOptions
49
+ });
34
50
  Object.defineProperty(this, "config", {
35
51
  enumerable: true,
36
52
  configurable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWjD,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAIpC;IACG,YAAY,UAAiC,EAAE,EAAoB,SAAS,aAAa,CAAC,eAAe,EAAE;QACvG,MAAM,EACF,aAAa,GAAG,EAAE,EAClB,QAAQ,GAAG,KAAK,EAChB,GAAG,qBAAqB,EAC3B,GAAG,OAAO,CAAC;QAEZ,MAAM,kBAAkB,GAAG;YACvB,GAAG,OAAO,CAAC,kBAAkB;SAChC,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;QAClI,CAAC;QAED,yDAAyD;QACzD,IAAI,kBAAkB,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC5G,CAAC;QAED,iCAAiC;QACjC,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,0BAA0B;SACtE,CAAC;QAEF,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnB,aAAa,CAAC,aAAa,KAA3B,aAAa,CAAC,aAAa,GAAK,EAAE,EAAC;YACnC,aAAa,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAmB,CAAC;QAC/D,CAAC;QAED,iCAAiC;QACjC,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,0BAA0B;SACrF,CAAC;QAGF,8DAA8D;QAC9D,SAAS;QACT,6BAA6B;QAC7B,KAAK,CAAC,EAAE,GAAG,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;QAvClC;;;;mBAAkB,MAAM;WAAkC;IAwC3G,CAAC;IAED,wEAAwE;IACrD,KAAK,CAAC,kBAAkB,CAAC,eAAmC,EAAE,WAAwB;QACrG,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QAEjC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,yBAAyB;IACzF,CAAC;CACJ;AAID,MAAM,UAAU,eAAe,CAG7B,MAAwC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAU,MAAM,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AA6FpE,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAIpC;IACG;IACI,6BAA6B;IACZ,iBAAoC,EAAE,EACrC,SAAS,aAAa,CAAC,eAAe,EAAE;QAE1D,MAAM,EACF,aAAa,GAAG,EAAsB,EACtC,QAAQ,GAAG,KAAK,EAChB,kBAAkB,EAAE,WAAW,GAAG,EAAE,EACpC,GAAG,qBAAqB,EAC3B,GAAG,cAAc,CAAC;QAEnB,MAAM,kBAAkB,GAAG;YACvB,GAAG,WAAW;YACd,wDAAwD;YACxD,sBAAsB,EAAE,WAAW,CAAC,sBAAsB,IAAI,CAAC;YAC/D,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,IAAI,GAAG;SAChE,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;QAClI,CAAC;QAED,yDAAyD;QACzD,IAAI,kBAAkB,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnB,aAAa,CAAC,aAAa,KAA3B,aAAa,CAAC,aAAa,GAAK,EAAE,EAAC;YACnC,aAAa,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAmB,CAAC;QAC/D,CAAC;QAED,4EAA4E;QAC5E,kGAAkG;QAClG,MAAM,2BAA2B,GAAI,WAAmB,EAAE,kBAAkB,EAAE,2BAA2B,CAAC;QAC1G,IAAI,2BAA2B,EAAE,CAAC;YAC9B,aAAa,CAAC,aAAa,KAA3B,aAAa,CAAC,aAAa,GAAK,EAAE,EAAC;YAClC,aAAa,CAAC,aAAqB,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QACnG,CAAC;QAED,uDAAuD;QACvD,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,EAAE,aAAoB,CAAC,EAAE,6DAA6D;SAC/H,CAAC;QAEF,kEAAkE;QAClE,kDAAkD;QAClD,IAAI;QAEJ,8DAA8D;QAC9D,SAAS;QACT,KAAK,CAAC,EAAE,GAAG,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;QAlD/E;;;;mBAAiB,cAAc;WAAwB;QACvD;;;;mBAAkB,MAAM;WAAkC;IAkD9D,CAAC;IAED,wEAAwE;IACrD,KAAK,CAAC,kBAAkB,CAAC,eAAmC,EAAE,WAAwB;QACrG,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QAEjC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,yBAAyB;IACzF,CAAC;CACJ;AAMD,MAAM,UAAU,eAAe,CAE7B,MAA0C;IACxC,OAAO,MAAM,CAAC,MAAM,CAAU,MAAM,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,95 @@
1
+ {
2
+ "Donate": {
3
+ "message": "Donate"
4
+ },
5
+ "ExtensionDescription": {
6
+ "message": "All in one fingerprint protection - protect against Canvas, WebGL, Font, AudioContext fingerprinting in your browser."
7
+ },
8
+ "ExtensionName": {
9
+ "message": "All Fingerprint Defender"
10
+ },
11
+ "MoreOptions": {
12
+ "message": "More Options"
13
+ },
14
+ "RateUs": {
15
+ "message": "Rate us"
16
+ },
17
+ "ReloadExtension": {
18
+ "message": "Reload extension"
19
+ },
20
+ "MakeBy": {
21
+ "message": "Make by afixer.app"
22
+ },
23
+ "PreventFingerprintingOn": {
24
+ "message": "Prevent fingerprinting on"
25
+ },
26
+ "Refresh": {
27
+ "message": "Refresh"
28
+ },
29
+ "RefreshThisPage": {
30
+ "message": "Refresh this page to apply new options"
31
+ },
32
+ "DetectedAndObfuscated": {
33
+ "message": "Detected fingerprinting type"
34
+ },
35
+ "CanvasFingerprint": {
36
+ "message": "Canvas Fingerprint"
37
+ },
38
+ "NumberOfFingerprints": {
39
+ "message": "Number of prevented fingerprints"
40
+ },
41
+ "NumberOfHosts": {
42
+ "message": "Number of fingerprinting hosts"
43
+ },
44
+ "Host": {
45
+ "message": "Host"
46
+ },
47
+ "Count": {
48
+ "message": "Count"
49
+ },
50
+ "Audio": {
51
+ "message": "Audio"
52
+ },
53
+ "Canvas": {
54
+ "message": "Canvas"
55
+ },
56
+ "WebGL": {
57
+ "message": "WebGL"
58
+ },
59
+ "Font": {
60
+ "message": "Font"
61
+ },
62
+ "UpdatedAt": {
63
+ "message": "Updated at"
64
+ },
65
+ "Action": {
66
+ "message": "Action"
67
+ },
68
+ "Delete": {
69
+ "message": "Delete"
70
+ },
71
+ "Add": {
72
+ "message": "Add"
73
+ },
74
+ "Added": {
75
+ "message": "Added"
76
+ },
77
+ "WhiteList": {
78
+ "message": "White list"
79
+ },
80
+ "InWhiteList": {
81
+ "message": "In whitelist"
82
+ },
83
+ "AddToWhiteList": {
84
+ "message": "Add to whitelist"
85
+ },
86
+ "Total": {
87
+ "message": "Total"
88
+ },
89
+ "History": {
90
+ "message": "History"
91
+ },
92
+ "Last30Days": {
93
+ "message": "last 30 days"
94
+ }
95
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chunk-16ff15da.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-16ff15da.d.ts","sourceRoot":"","sources":["../../../../src/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ if(!(ignoredSites=["https://www.google.com/maps","https://accounts.google.com","www.figma.com","www.canva.com","designer.microsoft.com","create.vista.com","console.aws.amazon.com","www.coze.com"].some(e=>window.location.href.startsWith(e)||window.location.host.endsWith(e)))){document.documentElement.setAttribute("data-afd-extension-id",chrome.runtime.id);const e="disabled:"+window.location.host;chrome.storage.sync.get([e],function(t){t[e]&&(document.documentElement.setAttribute("data-afd-disabled","true"),window.dispatchEvent(new Event("afd-disabled")))}),window.addEventListener("chrome.runtime.sendMessage",function(t){const o=t.detail;chrome.runtime.sendMessage(o,function(){})})}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-16ff15da.js","sourceRoot":"","sources":["../../../../src/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js"],"names":[],"mappings":"AAAA,IAAG,CAAC,CAAC,YAAY,GAAC,CAAC,6BAA6B,EAAC,6BAA6B,EAAC,eAAe,EAAC,eAAe,EAAC,wBAAwB,EAAC,kBAAkB,EAAC,wBAAwB,EAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC;IAAA,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,uBAAuB,EAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,MAAM,CAAC,GAAC,WAAW,GAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,UAAS,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,mBAAmB,EAAC,MAAM,CAAC,EAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA,CAAA,CAAC,CAAC,EAAC,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,EAAC,UAAS,CAAC,IAAE,MAAM,CAAC,GAAC,CAAC,CAAC,MAAM,CAAC,CAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAC,cAAW,CAAC,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;AAAA,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chunk-1a1456ec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-1a1456ec.d.ts","sourceRoot":"","sources":["../../../../src/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js"],"names":[],"mappings":""}