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,3 +1,14 @@
1
+ /**
2
+ * Default Chrome Profile Configuration
3
+ *
4
+ * 2024-2025 Enhancements:
5
+ * - Realistic browsing history indicators
6
+ * - Autofill data structure
7
+ * - Extension preferences
8
+ * - Media engagement scores
9
+ * - Site engagement data
10
+ * - Download history indicators
11
+ */
1
12
  export declare const DEFAULT_PROFILE: {
2
13
  distribution: {
3
14
  import_bookmarks: boolean;
@@ -164,12 +175,117 @@ export declare const DEFAULT_PROFILE: {
164
175
  theme: {
165
176
  use_system: boolean;
166
177
  };
178
+ alerts: {
179
+ initialized: boolean;
180
+ };
181
+ last_chrome_version: string;
167
182
  };
168
183
  autofill: {
169
184
  enabled: boolean;
185
+ credit_card_enabled: boolean;
186
+ profile_enabled: boolean;
170
187
  };
171
188
  intl: {
172
189
  accept_languages: string;
173
190
  };
191
+ media_engagement: {
192
+ schema_version: number;
193
+ };
194
+ site_engagement: {
195
+ schema_version: number;
196
+ last_engagement_time: string;
197
+ };
198
+ download: {
199
+ default_directory: string;
200
+ directory_upgrade: boolean;
201
+ extensions_to_open: string;
202
+ prompt_for_download: boolean;
203
+ };
204
+ printing: {
205
+ print_preview_sticky_settings: {
206
+ version: number;
207
+ color: number;
208
+ duplex: number;
209
+ headerFooterEnabled: boolean;
210
+ marginsType: number;
211
+ mediaSize: {
212
+ height_microns: number;
213
+ width_microns: number;
214
+ custom_display_name: string;
215
+ };
216
+ scaling: number;
217
+ scalingType: number;
218
+ };
219
+ };
220
+ translate: {
221
+ enabled: boolean;
222
+ };
223
+ translate_site_blacklist_with_time: {};
224
+ password_manager: {
225
+ password_manager_enabled: boolean;
226
+ credentials_enable_service: boolean;
227
+ password_leak_detection: {
228
+ password_leak_detection_enabled: boolean;
229
+ };
230
+ };
231
+ spellcheck: {
232
+ dictionaries: string[];
233
+ use_spelling_service: boolean;
234
+ };
235
+ net: {
236
+ network_prediction_options: number;
237
+ };
238
+ omnibox: {
239
+ prevent_url_elisions: boolean;
240
+ };
241
+ ntp: {
242
+ num_personal_suggestions: number;
243
+ shortcut_count: number;
244
+ };
245
+ payments: {
246
+ can_make_payment_enabled: boolean;
247
+ };
248
+ default_apps: {
249
+ install_state: number;
250
+ };
251
+ media_router: {
252
+ media_router_enabled: boolean;
253
+ };
254
+ homepage: string;
255
+ homepage_is_newtabpage: boolean;
256
+ custom_links: {
257
+ initialized: boolean;
258
+ list: never[];
259
+ };
260
+ prefs: {
261
+ privacy_sandbox_m1: {
262
+ consent_decision_made: boolean;
263
+ eea_notice_acknowledged: boolean;
264
+ };
265
+ };
266
+ devtools: {
267
+ preferences: {
268
+ "Inspector.drawerSplitViewState": string;
269
+ currentDockState: string;
270
+ "panel-selectedTab": string;
271
+ };
272
+ };
273
+ apps: {
274
+ shortcuts_have_been_created: boolean;
275
+ };
276
+ domain_diversity: {
277
+ last_reporting_timestamp: string;
278
+ };
279
+ local_state_hash: {
280
+ metrics: {
281
+ uninstall_metrics_page_enabled: boolean;
282
+ };
283
+ };
284
+ optimization_guide: {
285
+ store_file_paths_to_delete: never[];
286
+ };
287
+ unified_consent: {
288
+ url_keyed_anonymized_data_collection_enabled: boolean;
289
+ };
174
290
  };
175
291
  //# sourceMappingURL=default.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/default.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6K3B,CAAA"}
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuR3B,CAAA"}
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Default Chrome Profile Configuration
3
+ *
4
+ * 2024-2025 Enhancements:
5
+ * - Realistic browsing history indicators
6
+ * - Autofill data structure
7
+ * - Extension preferences
8
+ * - Media engagement scores
9
+ * - Site engagement data
10
+ * - Download history indicators
11
+ */
1
12
  export const DEFAULT_PROFILE = {
2
13
  "distribution": {
3
14
  "import_bookmarks": false,
@@ -164,12 +175,118 @@ export const DEFAULT_PROFILE = {
164
175
  "theme": {
165
176
  "use_system": true,
166
177
  },
178
+ "alerts": {
179
+ "initialized": true,
180
+ },
181
+ "last_chrome_version": "125.0.6422.142",
167
182
  },
168
183
  "autofill": {
169
- "enabled": false,
184
+ "enabled": true,
185
+ "credit_card_enabled": true,
186
+ "profile_enabled": true,
170
187
  },
171
188
  "intl": {
172
189
  "accept_languages": "en-US,en",
173
190
  },
191
+ // 2024-2025: Enhanced profile data for realistic browser appearance
192
+ "media_engagement": {
193
+ "schema_version": 4,
194
+ },
195
+ "site_engagement": {
196
+ "schema_version": 2,
197
+ "last_engagement_time": "13371756771073388",
198
+ },
199
+ "download": {
200
+ "default_directory": "",
201
+ "directory_upgrade": true,
202
+ "extensions_to_open": "",
203
+ "prompt_for_download": false,
204
+ },
205
+ "printing": {
206
+ "print_preview_sticky_settings": {
207
+ "version": 2,
208
+ "color": 1,
209
+ "duplex": 0,
210
+ "headerFooterEnabled": true,
211
+ "marginsType": 0,
212
+ "mediaSize": {
213
+ "height_microns": 279400,
214
+ "width_microns": 215900,
215
+ "custom_display_name": "Letter",
216
+ },
217
+ "scaling": 100,
218
+ "scalingType": 0,
219
+ },
220
+ },
221
+ "translate": {
222
+ "enabled": false,
223
+ },
224
+ "translate_site_blacklist_with_time": {},
225
+ "password_manager": {
226
+ "password_manager_enabled": true,
227
+ "credentials_enable_service": true,
228
+ "password_leak_detection": {
229
+ "password_leak_detection_enabled": true,
230
+ },
231
+ },
232
+ "spellcheck": {
233
+ "dictionaries": ["en-US"],
234
+ "use_spelling_service": false,
235
+ },
236
+ "net": {
237
+ "network_prediction_options": 2,
238
+ },
239
+ "omnibox": {
240
+ "prevent_url_elisions": false,
241
+ },
242
+ "ntp": {
243
+ "num_personal_suggestions": 1,
244
+ "shortcut_count": 8,
245
+ },
246
+ "payments": {
247
+ "can_make_payment_enabled": true,
248
+ },
249
+ "default_apps": {
250
+ "install_state": 3,
251
+ },
252
+ "media_router": {
253
+ "media_router_enabled": true,
254
+ },
255
+ "homepage": "https://www.google.com/",
256
+ "homepage_is_newtabpage": true,
257
+ "custom_links": {
258
+ "initialized": true,
259
+ "list": [],
260
+ },
261
+ "prefs": {
262
+ "privacy_sandbox_m1": {
263
+ "consent_decision_made": true,
264
+ "eea_notice_acknowledged": true,
265
+ },
266
+ },
267
+ "devtools": {
268
+ "preferences": {
269
+ "Inspector.drawerSplitViewState": "{\"horizontal\":{\"size\":0,\"showMode\":\"OnlyMain\"}}",
270
+ "currentDockState": "\"right\"",
271
+ "panel-selectedTab": "\"console\"",
272
+ },
273
+ },
274
+ "apps": {
275
+ "shortcuts_have_been_created": true,
276
+ },
277
+ "domain_diversity": {
278
+ "last_reporting_timestamp": "13371756771073388",
279
+ },
280
+ "local_state_hash": {
281
+ "metrics": {
282
+ "uninstall_metrics_page_enabled": true,
283
+ },
284
+ },
285
+ "optimization_guide": {
286
+ "store_file_paths_to_delete": [],
287
+ },
288
+ "unified_consent": {
289
+ "url_keyed_anonymized_data_collection_enabled": false,
290
+ },
174
291
  };
175
292
  //# sourceMappingURL=default.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/default.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/default.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
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
+ /**
13
+ * Popular sites for realistic browsing history
14
+ */
15
+ declare const COMMON_SITES: {
16
+ url: string;
17
+ title: string;
18
+ visitCount: number;
19
+ }[];
20
+ /**
21
+ * Generate Local State file content
22
+ */
23
+ export declare const generateLocalState: () => object;
24
+ /**
25
+ * Generate site engagement data
26
+ */
27
+ export declare const generateSiteEngagement: (sites?: typeof COMMON_SITES) => object;
28
+ /**
29
+ * Generate media engagement data
30
+ */
31
+ export declare const generateMediaEngagement: () => object;
32
+ /**
33
+ * Options for populating a profile
34
+ */
35
+ export interface PopulateProfileOptions {
36
+ /** Add browsing history indicators */
37
+ addHistory?: boolean;
38
+ /** Add site engagement data */
39
+ addEngagement?: boolean;
40
+ /** Add media engagement data */
41
+ addMediaEngagement?: boolean;
42
+ /** Custom sites for history/engagement */
43
+ customSites?: typeof COMMON_SITES;
44
+ /** Days of history to simulate */
45
+ historyDays?: number;
46
+ }
47
+ /**
48
+ * Populate a Chrome profile with realistic user data
49
+ */
50
+ export declare const populateChromeProfile: (profilePath: string, options?: PopulateProfileOptions) => Promise<void>;
51
+ /**
52
+ * Generate localStorage data to inject after page load
53
+ * Returns a script that can be evaluated in the browser context
54
+ */
55
+ export declare const generateLocalStorageScript: (sites?: string[]) => string;
56
+ /**
57
+ * Generate session storage data for returning visitor simulation
58
+ */
59
+ export declare const generateSessionStorageScript: () => string;
60
+ /**
61
+ * Generate cookies to set via CDP
62
+ * Returns an array of cookie objects compatible with CDP Network.setCookie
63
+ */
64
+ export interface ProfileCookie {
65
+ name: string;
66
+ value: string;
67
+ domain: string;
68
+ path: string;
69
+ secure: boolean;
70
+ httpOnly: boolean;
71
+ sameSite: 'Strict' | 'Lax' | 'None';
72
+ expires?: number;
73
+ }
74
+ export declare const generateReturningVisitorCookies: (domain: string) => ProfileCookie[];
75
+ export {};
76
+ //# sourceMappingURL=populate-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate-profile.d.ts","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/populate-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;GAEG;AACH,QAAA,MAAM,YAAY;;;;GAWjB,CAAC;AAoBF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAqDrC,CAAC;AAiBF;;GAEG;AACH,eAAO,MAAM,sBAAsB,WAAW,OAAO,YAAY,KAAkB,MAmBlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,MAiB1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC;IAClC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,gBACjB,MAAM,YACV,sBAAsB,KAChC,OAAO,CAAC,IAAI,CAsDd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAAY,MAAM,EAAE,KAAG,MAkC7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,MA0B/C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,+BAA+B,WAAY,MAAM,KAAG,aAAa,EAoC7E,CAAC"}
@@ -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