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.
- package/dist/browser-controller.d.ts +22 -3
- package/dist/browser-controller.d.ts.map +1 -1
- package/dist/browser-controller.js +316 -71
- package/dist/browser-controller.js.map +1 -1
- package/dist/browser-plugin.d.ts +56 -7
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +268 -56
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/browser.d.ts +39 -0
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +125 -16
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/browser-process/process.d.ts +9 -0
- package/dist/browser-process/process.d.ts.map +1 -1
- package/dist/browser-process/process.js +100 -6
- package/dist/browser-process/process.js.map +1 -1
- package/dist/browser-profiles/chrome/default.d.ts +116 -0
- package/dist/browser-profiles/chrome/default.d.ts.map +1 -1
- package/dist/browser-profiles/chrome/default.js +118 -1
- package/dist/browser-profiles/chrome/default.js.map +1 -1
- package/dist/browser-profiles/chrome/populate-profile.d.ts +76 -0
- package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -0
- package/dist/browser-profiles/chrome/populate-profile.js +300 -0
- package/dist/browser-profiles/chrome/populate-profile.js.map +1 -0
- package/dist/browser-profiles/index.d.ts +1 -0
- package/dist/browser-profiles/index.d.ts.map +1 -1
- package/dist/browser-profiles/index.js +2 -0
- package/dist/browser-profiles/index.js.map +1 -1
- package/dist/crawler.d.ts +81 -9
- package/dist/crawler.d.ts.map +1 -1
- package/dist/crawler.js +26 -10
- package/dist/crawler.js.map +1 -1
- package/dist/fingerprinting/all-fingerprint-defender/_locales/en/messages.json +95 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts +83 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts +2 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js.map +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/debounce-09920c81.css +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/options-fe2fb5aa.css +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/assets/popup-1886d2ef.css +1 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-128.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-16.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-24.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-32-disabled.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-32.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/img/icon-48.png +0 -0
- package/dist/fingerprinting/all-fingerprint-defender/manifest.json +83 -0
- package/dist/fingerprinting/all-fingerprint-defender/options.html +17 -0
- package/dist/fingerprinting/all-fingerprint-defender/popup.html +23 -0
- package/dist/fingerprinting/anti-webgpu/background.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/background.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/background.js +4 -0
- package/dist/fingerprinting/anti-webgpu/background.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js +50 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js +172 -0
- package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/128.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/16.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/32.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/48.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/icons/64.png +0 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.css +88 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.html +58 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.js +96 -0
- package/dist/fingerprinting/anti-webgpu/data/popup/popup.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.js +249 -0
- package/dist/fingerprinting/anti-webgpu/lib/chrome.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.js +86 -0
- package/dist/fingerprinting/anti-webgpu/lib/common.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.js +14 -0
- package/dist/fingerprinting/anti-webgpu/lib/config.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts +2 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts.map +1 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.js +107 -0
- package/dist/fingerprinting/anti-webgpu/lib/runtime.js.map +1 -0
- package/dist/fingerprinting/anti-webgpu/manifest.json +58 -0
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts +87 -0
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +1 -0
- package/dist/fingerprinting/custom-fingerprint-injector.js +342 -0
- package/dist/fingerprinting/custom-fingerprint-injector.js.map +1 -0
- package/dist/fingerprinting/fingerprint-injector.d.ts +157 -0
- package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-injector.js +632 -0
- package/dist/fingerprinting/fingerprint-injector.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js +119 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js +149 -0
- package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts +14 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js +763 -0
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js +195 -0
- package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts +10 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js +195 -0
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +28 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +1181 -0
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts +7 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js +171 -0
- package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts +36 -0
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/index.js +40 -0
- package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +45 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +268 -0
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +301 -0
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts +7 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js +58 -0
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js +249 -0
- package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts +33 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +618 -0
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js +356 -0
- package/dist/fingerprinting/fingerprint-overrides/prototype-integrity.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts +18 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js +171 -0
- package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +55 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +244 -0
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts +14 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +925 -0
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js +346 -0
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts +13 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js +264 -0
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +27 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +213 -0
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.d.ts +12 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.js +517 -0
- package/dist/fingerprinting/fingerprint-overrides/utils.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts +12 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +215 -0
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js +202 -0
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts +6 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +188 -0
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/launcher-wrap.d.ts +2 -2
- package/dist/launcher-wrap.d.ts.map +1 -1
- package/dist/launcher-wrap.js.map +1 -1
- package/dist/page.d.ts +160 -13
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +1027 -42
- package/dist/page.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- 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
|
|
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
|
-
|
|
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
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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(
|
|
89
|
+
constructor(crawlerOptions?: CDPCrawlerOptions, config?: Configuration);
|
|
20
90
|
protected _navigationHandler(crawlingContext: CDPCrawlingContext, gotoOptions: GotoOptions): Promise<any>;
|
|
21
91
|
}
|
|
22
|
-
export
|
|
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
|
package/dist/crawler.d.ts.map
CHANGED
|
@@ -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,
|
|
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(
|
|
7
|
-
|
|
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
|
-
...
|
|
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
|
-
//
|
|
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), //
|
|
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,
|
package/dist/crawler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"chunk-1a1456ec.d.ts","sourceRoot":"","sources":["../../../../src/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js"],"names":[],"mappings":""}
|