jumpy-lion 0.0.33 → 0.0.34

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 (120) hide show
  1. package/dist/browser-controller.d.ts +2 -2
  2. package/dist/browser-controller.d.ts.map +1 -1
  3. package/dist/browser-controller.js +34 -5
  4. package/dist/browser-controller.js.map +1 -1
  5. package/dist/browser-plugin.d.ts +21 -0
  6. package/dist/browser-plugin.d.ts.map +1 -1
  7. package/dist/browser-plugin.js +10 -4
  8. package/dist/browser-plugin.js.map +1 -1
  9. package/dist/browser-process/browser.d.ts +15 -0
  10. package/dist/browser-process/browser.d.ts.map +1 -1
  11. package/dist/browser-process/browser.js +6 -3
  12. package/dist/browser-process/browser.js.map +1 -1
  13. package/dist/crawler.d.ts +15 -0
  14. package/dist/crawler.d.ts.map +1 -1
  15. package/dist/crawler.js.map +1 -1
  16. package/dist/fingerprinting/anti-webgpu/background.d.ts +2 -0
  17. package/dist/fingerprinting/anti-webgpu/background.d.ts.map +1 -0
  18. package/dist/fingerprinting/anti-webgpu/background.js +6 -0
  19. package/dist/fingerprinting/anti-webgpu/background.js.map +1 -0
  20. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts +2 -0
  21. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.d.ts.map +1 -0
  22. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js +50 -0
  23. package/dist/fingerprinting/anti-webgpu/data/content_script/inject.js.map +1 -0
  24. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts +2 -0
  25. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.d.ts.map +1 -0
  26. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js +179 -0
  27. package/dist/fingerprinting/anti-webgpu/data/content_script/page_context/inject.js.map +1 -0
  28. package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts +2 -0
  29. package/dist/fingerprinting/anti-webgpu/data/popup/popup.d.ts.map +1 -0
  30. package/dist/fingerprinting/anti-webgpu/data/popup/popup.js +95 -0
  31. package/dist/fingerprinting/anti-webgpu/data/popup/popup.js.map +1 -0
  32. package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts +2 -0
  33. package/dist/fingerprinting/anti-webgpu/lib/chrome.d.ts.map +1 -0
  34. package/dist/fingerprinting/anti-webgpu/lib/chrome.js +255 -0
  35. package/dist/fingerprinting/anti-webgpu/lib/chrome.js.map +1 -0
  36. package/dist/fingerprinting/anti-webgpu/lib/common.d.ts +2 -0
  37. package/dist/fingerprinting/anti-webgpu/lib/common.d.ts.map +1 -0
  38. package/dist/fingerprinting/anti-webgpu/lib/common.js +87 -0
  39. package/dist/fingerprinting/anti-webgpu/lib/common.js.map +1 -0
  40. package/dist/fingerprinting/anti-webgpu/lib/config.d.ts +2 -0
  41. package/dist/fingerprinting/anti-webgpu/lib/config.d.ts.map +1 -0
  42. package/dist/fingerprinting/anti-webgpu/lib/config.js +13 -0
  43. package/dist/fingerprinting/anti-webgpu/lib/config.js.map +1 -0
  44. package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts +2 -0
  45. package/dist/fingerprinting/anti-webgpu/lib/runtime.d.ts.map +1 -0
  46. package/dist/fingerprinting/anti-webgpu/lib/runtime.js +109 -0
  47. package/dist/fingerprinting/anti-webgpu/lib/runtime.js.map +1 -0
  48. package/dist/fingerprinting/fingerprint-injector.d.ts +85 -1
  49. package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
  50. package/dist/fingerprinting/fingerprint-injector.js +188 -90
  51. package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
  52. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts +6 -0
  53. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts.map +1 -0
  54. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js +87 -0
  55. package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js.map +1 -0
  56. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts +6 -0
  57. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.d.ts.map +1 -0
  58. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js +95 -0
  59. package/dist/fingerprinting/fingerprint-overrides/canvas-protection.js.map +1 -0
  60. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts +6 -0
  61. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.d.ts.map +1 -0
  62. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js +96 -0
  63. package/dist/fingerprinting/fingerprint-overrides/client-rect-spoofing.js.map +1 -0
  64. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts +7 -0
  65. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.d.ts.map +1 -0
  66. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js +219 -0
  67. package/dist/fingerprinting/fingerprint-overrides/font-spoofing.js.map +1 -0
  68. package/dist/fingerprinting/fingerprint-overrides/index.d.ts +19 -0
  69. package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -0
  70. package/dist/fingerprinting/fingerprint-overrides/index.js +19 -0
  71. package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -0
  72. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts +6 -0
  73. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts.map +1 -0
  74. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +262 -0
  75. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js.map +1 -0
  76. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts +7 -0
  77. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts.map +1 -0
  78. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js +103 -0
  79. package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js.map +1 -0
  80. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts +6 -0
  81. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.d.ts.map +1 -0
  82. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js +228 -0
  83. package/dist/fingerprinting/fingerprint-overrides/performance-spoofing.js.map +1 -0
  84. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts +20 -0
  85. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -0
  86. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +227 -0
  87. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -0
  88. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts +6 -0
  89. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.d.ts.map +1 -0
  90. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js +84 -0
  91. package/dist/fingerprinting/fingerprint-overrides/runtime-enable-bypass.js.map +1 -0
  92. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts +6 -0
  93. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -0
  94. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +440 -0
  95. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -0
  96. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +6 -0
  97. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -0
  98. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +95 -0
  99. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -0
  100. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts +12 -0
  101. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -0
  102. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +167 -0
  103. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -0
  104. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts +6 -0
  105. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts.map +1 -0
  106. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js +205 -0
  107. package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js.map +1 -0
  108. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts +6 -0
  109. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts.map +1 -0
  110. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +96 -0
  111. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -0
  112. package/dist/index.d.ts +3 -2
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js.map +1 -1
  115. package/dist/page.d.ts +1 -0
  116. package/dist/page.d.ts.map +1 -1
  117. package/dist/page.js +42 -1
  118. package/dist/page.js.map +1 -1
  119. package/dist/tsconfig.build.tsbuildinfo +1 -1
  120. package/package.json +5 -3
@@ -0,0 +1,87 @@
1
+ var core = {
2
+ "start": function () {
3
+ core.load();
4
+ },
5
+ "install": function () {
6
+ core.load();
7
+ },
8
+ "load": function () {
9
+ app.contextmenu.create({
10
+ "type": "normal",
11
+ "id": "test.page",
12
+ "contexts": ["browser_action"],
13
+ "title": "What is my Fingerprint?"
14
+ }, app.error);
15
+ /* */
16
+ app.contextmenu.create({
17
+ "type": "checkbox",
18
+ "id": "notification.checkbox",
19
+ "contexts": ["browser_action"],
20
+ "checked": config.notification.show,
21
+ "title": "Show Desktop Notifications"
22
+ }, app.error);
23
+ },
24
+ "action": {
25
+ "contextmenu": function (e) {
26
+ if (e.menuItemId === "test.page") {
27
+ app.tab.open(config.test.page);
28
+ }
29
+ else {
30
+ config.notification.show = !config.notification.show;
31
+ }
32
+ },
33
+ "storage": function (changes, namespace) {
34
+ if ("notification" in changes) {
35
+ app.contextmenu.update("notification.checkbox", {
36
+ "checked": config.notification.show,
37
+ }, app.error);
38
+ }
39
+ },
40
+ "page": {
41
+ "fingerprint": function (e) {
42
+ const message = "\nA fingerprinting attempt is detected!\nYour browser is reporting a fake value.";
43
+ /* */
44
+ if (config.notification.show) {
45
+ if (config.notification.timeout)
46
+ clearTimeout(config.notification.timeout);
47
+ config.notification.timeout = setTimeout(function () {
48
+ app.notifications.create({
49
+ "type": "basic",
50
+ "title": app.name(),
51
+ "message": e.host + message
52
+ });
53
+ }, 1000);
54
+ }
55
+ }
56
+ },
57
+ "popup": {
58
+ "fingerprint": function () {
59
+ app.tab.open(config.test.page);
60
+ },
61
+ "load": function () {
62
+ app.popup.send("storage", {
63
+ "notifications": config.notification.show
64
+ });
65
+ },
66
+ "notifications": function () {
67
+ config.notification.show = !config.notification.show;
68
+ /* */
69
+ app.popup.send("storage", {
70
+ "notifications": config.notification.show
71
+ });
72
+ }
73
+ }
74
+ }
75
+ };
76
+ app.contextmenu.on.clicked(core.action.contextmenu);
77
+ app.page.receive("fingerprint", core.action.page.fingerprint);
78
+ app.popup.receive("load", core.action.popup.load);
79
+ app.popup.receive("fingerprint", core.action.popup.fingerprint);
80
+ app.popup.receive("notifications", core.action.popup.notifications);
81
+ app.popup.receive("support", function () { app.tab.open(app.homepage()); });
82
+ app.popup.receive("donation", function () { app.tab.open(app.homepage() + "?reason=support"); });
83
+ app.on.startup(core.start);
84
+ app.on.installed(core.install);
85
+ app.on.storage(core.action.storage);
86
+ export {};
87
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/fingerprinting/anti-webgpu/lib/common.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/fingerprinting/anti-webgpu/lib/config.js"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ var config = {};
2
+ config.test = { "page": "https://webbrowsertools.com/webgpu-fingerprint/" };
3
+ config.welcome = {
4
+ set lastupdate(val) { app.storage.write("lastupdate", val); },
5
+ get lastupdate() { return app.storage.read("lastupdate") !== undefined ? app.storage.read("lastupdate") : 0; }
6
+ };
7
+ config.notification = {
8
+ "timeout": null,
9
+ set show(val) { app.storage.write("notification", val); },
10
+ get show() { return app.storage.read("notification") !== undefined ? app.storage.read("notification") : false; }
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/fingerprinting/anti-webgpu/lib/config.js"],"names":[],"mappings":"AAAA,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,MAAM,CAAC,IAAI,GAAG,EAAC,MAAM,EAAE,iDAAiD,EAAC,CAAC;AAE1E,MAAM,CAAC,OAAO,GAAG;IACf,IAAI,UAAU,CAAE,GAAG,IAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA,CAAA,CAAC;IAC3D,IAAI,UAAU,KAAK,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,CAAC;CAC7G,CAAC;AAEF,MAAM,CAAC,YAAY,GAAG;IACpB,SAAS,EAAE,IAAI;IACf,IAAI,IAAI,CAAE,GAAG,IAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA,CAAA,CAAC;IACvD,IAAI,IAAI,KAAK,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA,CAAA,CAAC;CAC/G,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/fingerprinting/anti-webgpu/lib/runtime.js"],"names":[],"mappings":""}
@@ -0,0 +1,109 @@
1
+ app.version = function () { return chrome.runtime.getManifest().version; };
2
+ app.homepage = function () { return chrome.runtime.getManifest().homepage_url; };
3
+ if (!navigator.webdriver) {
4
+ app.on.uninstalled(app.homepage() + "?v=" + app.version() + "&type=uninstall");
5
+ app.on.installed(function (e) {
6
+ app.on.management(function (result) {
7
+ if (result.installType === "normal") {
8
+ app.tab.query.index(function (index) {
9
+ let previous = e.previousVersion !== undefined && e.previousVersion !== app.version();
10
+ let doupdate = previous && parseInt((Date.now() - config.welcome.lastupdate) / (24 * 3600 * 1000)) > 45;
11
+ if (e.reason === "install" || (e.reason === "update" && doupdate)) {
12
+ let parameter = (e.previousVersion ? "&p=" + e.previousVersion : '') + "&type=" + e.reason;
13
+ let url = app.homepage() + "?v=" + app.version() + parameter;
14
+ app.tab.open(url, index, e.reason === "install");
15
+ config.welcome.lastupdate = Date.now();
16
+ }
17
+ });
18
+ }
19
+ });
20
+ });
21
+ }
22
+ app.on.message(function (request, sender) {
23
+ if (request) {
24
+ if (request.path === "popup-to-background") {
25
+ for (let id in app.popup.message) {
26
+ if (app.popup.message[id]) {
27
+ if ((typeof app.popup.message[id]) === "function") {
28
+ if (id === request.method) {
29
+ app.popup.message[id](request.data);
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ /* */
36
+ if (request.path === "page-to-background") {
37
+ for (let id in app.page.message) {
38
+ if (app.page.message[id]) {
39
+ if ((typeof app.page.message[id]) === "function") {
40
+ if (id === request.method) {
41
+ let a = request.data || {};
42
+ if (sender) {
43
+ a.frameId = sender.frameId;
44
+ /* */
45
+ if (sender.tab) {
46
+ if (a.tabId === undefined)
47
+ a.tabId = sender.tab.id;
48
+ if (a.title === undefined)
49
+ a.title = sender.tab.title ? sender.tab.title : '';
50
+ if (a.top === undefined)
51
+ a.top = sender.tab.url ? sender.tab.url : (sender.url ? sender.url : '');
52
+ }
53
+ }
54
+ /* */
55
+ app.page.message[id](a);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ });
63
+ app.on.connect(function (port) {
64
+ if (port) {
65
+ if (port.name) {
66
+ if (port.name in app) {
67
+ app[port.name].port = port;
68
+ }
69
+ }
70
+ /* */
71
+ port.onDisconnect.addListener(function (e) {
72
+ app.storage.load(function () {
73
+ if (e) {
74
+ if (e.name) {
75
+ if (e.name in app) {
76
+ app[e.name].port = null;
77
+ }
78
+ }
79
+ }
80
+ });
81
+ });
82
+ /* */
83
+ port.onMessage.addListener(function (e) {
84
+ app.storage.load(function () {
85
+ if (e) {
86
+ if (e.path) {
87
+ if (e.port) {
88
+ if (e.port in app) {
89
+ if (e.path === (e.port + "-to-background")) {
90
+ for (let id in app[e.port].message) {
91
+ if (app[e.port].message[id]) {
92
+ if ((typeof app[e.port].message[id]) === "function") {
93
+ if (id === e.method) {
94
+ app[e.port].message[id](e.data);
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ });
105
+ });
106
+ }
107
+ });
108
+ export {};
109
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/fingerprinting/anti-webgpu/lib/runtime.js"],"names":[],"mappings":"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"}
@@ -1,3 +1,65 @@
1
+ /**
2
+ * Enhanced CDP Fingerprint Injector for 2025
3
+ *
4
+ * This module provides advanced fingerprint spoofing and anti-detection capabilities
5
+ * specifically designed to bypass hardcore fingerprinting techniques used in 2025.
6
+ *
7
+ * Key Features:
8
+ *
9
+ * 1. **WebGPU Fingerprinting Protection**:
10
+ * - Spoofs GPU adapter information and capabilities
11
+ * - Fakes GPU uptime to appear as if the GPU has been running for 24-72 hours
12
+ * - Intercepts timestamp queries to prevent timing-based detection
13
+ *
14
+ * 2. **Platform Consistency (1:1 Fingerprinting)**:
15
+ * - Ensures all browser properties match the specified platform (Win32, MacIntel, Linux)
16
+ * - Synchronizes navigator properties, screen metrics, and WebGL/WebGPU values
17
+ * - Platform-specific GPU configurations for realistic fingerprints
18
+ *
19
+ * 3. **Runtime.enable Bypass**:
20
+ * - Prevents CDP detection through console.log(Error) technique
21
+ * - Intercepts and blocks Runtime.enable calls
22
+ * - Modifies Error stack traces to hide automation
23
+ *
24
+ * 4. **Advanced Canvas Protection**:
25
+ * - Adds controlled noise to canvas operations
26
+ * - Protects against both 2D and WebGL canvas fingerprinting
27
+ * - Includes font measurement variations
28
+ *
29
+ * 5. **WebRTC IP Leak Prevention**:
30
+ * - Filters STUN servers to prevent IP leaks
31
+ * - Provides fake but consistent device IDs
32
+ * - Modifies ICE candidates and statistics
33
+ *
34
+ * 6. **Audio Context Spoofing**:
35
+ * - Adds noise to audio processing to prevent fingerprinting
36
+ * - Works with both AudioContext and OfflineAudioContext
37
+ *
38
+ * 7. **Client Rect Variations**:
39
+ * - Adds small variations to getBoundingClientRect results
40
+ * - Makes automation harder to detect through DOM measurements
41
+ *
42
+ * 8. **Mouse Movement Humanization**:
43
+ * - Generates bezier curve movements instead of straight lines
44
+ * - Adds random variations to mouse paths
45
+ *
46
+ * Usage:
47
+ * ```typescript
48
+ * await CdpFingerprintInjector.injectFingerprint(page, fingerprint, {
49
+ * enableAdvancedStealth: true,
50
+ * bypassRuntimeEnable: true,
51
+ * platform: 'Win32', // Spoof as Windows for better evasion on Apify Linux
52
+ * spoofWebGL: true,
53
+ * spoofAudioContext: true,
54
+ * spoofClientRects: true,
55
+ * humanizeInteractions: true,
56
+ * spoofFonts: true, // New: Hide Linux-specific fonts
57
+ * spoofPerformance: true, // New: Windows-like timing characteristics
58
+ * spoofLocale: true, // New: Consistent Windows locale formatting
59
+ * useFingerprintDefaults: true // Use fingerprint-generator Windows values
60
+ * });
61
+ * ```
62
+ */
1
63
  import type { BrowserFingerprintWithHeaders } from 'fingerprint-generator';
2
64
  import type CdpPage from "../page.js";
3
65
  interface Viewport {
@@ -12,18 +74,40 @@ interface AttachOptions {
12
74
  proxyUrl?: string;
13
75
  detectTimezone?: boolean;
14
76
  viewport?: Viewport;
77
+ enableAdvancedStealth?: boolean;
78
+ bypassRuntimeEnable?: boolean;
79
+ humanizeInteractions?: boolean;
80
+ spoofWebGL?: boolean;
81
+ spoofAudioContext?: boolean;
82
+ spoofClientRects?: boolean;
83
+ maskAutomationFlags?: boolean;
84
+ platform?: 'Win32' | 'MacIntel' | 'Linux x86_64';
85
+ spoofFonts?: boolean;
86
+ spoofPerformance?: boolean;
87
+ spoofLocale?: boolean;
88
+ useExperimentalFingerprints?: boolean;
89
+ useFingerprintDefaults?: boolean;
15
90
  }
16
91
  export declare class CdpFingerprintInjector {
17
92
  private injector;
18
93
  private page;
19
94
  constructor(page: CdpPage);
95
+ /**
96
+ * Get recommended settings for Apify platform
97
+ * These settings are optimized for running headful Chrome on Apify (Linux)
98
+ * but spoofed to appear as Windows for better anti-bot evasion
99
+ */
100
+ static getApifyRecommendedSettings(): AttachOptions;
20
101
  static injectFingerprint(page: CdpPage, fingerprint: BrowserFingerprintWithHeaders, options?: AttachOptions): Promise<void>;
21
102
  private setViewport;
22
103
  private setExtraHTTPHeaders;
23
104
  private getTimezoneFromIp;
24
105
  private setTimezoneOverride;
25
- private createStealthScript;
26
106
  private injectStealthProtections;
107
+ /**
108
+ * Extract relevant data from fingerprint for overrides
109
+ */
110
+ private extractFingerprintData;
27
111
  attachToPage(browserFingerprintWithHeaders: BrowserFingerprintWithHeaders, options?: AttachOptions): Promise<void>;
28
112
  }
29
113
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint-injector.d.ts","sourceRoot":"","sources":["../../src/fingerprinting/fingerprint-injector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAI3E,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAEtC,UAAU,QAAQ;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,aAAa;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAMD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,IAAI,CAAU;gBAEV,IAAI,EAAE,OAAO;WAKZ,iBAAiB,CAC1B,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,6BAA6B,EAC1C,OAAO,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC;YAKF,WAAW;YAaX,mBAAmB;YAInB,iBAAiB;YAcjB,mBAAmB;IAMjC,OAAO,CAAC,mBAAmB;YAuFb,wBAAwB;IAKzB,YAAY,CACrB,6BAA6B,EAAE,6BAA6B,EAC5D,OAAO,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC;CAqCnB"}
1
+ {"version":3,"file":"fingerprint-injector.d.ts","sourceRoot":"","sources":["../../src/fingerprinting/fingerprint-injector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAGH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAI3E,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAoBtC,UAAU,QAAQ;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,aAAa;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;IAEjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC;AAMD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,IAAI,CAAU;gBAEV,IAAI,EAAE,OAAO;IAKzB;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,IAAI,aAAa;WAwBtC,iBAAiB,CAC1B,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,6BAA6B,EAC1C,OAAO,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC;YAKF,WAAW;YAaX,mBAAmB;YAInB,iBAAiB;YAcjB,mBAAmB;YAMnB,wBAAwB;IAKtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqCjB,YAAY,CACrB,6BAA6B,EAAE,6BAA6B,EAC5D,OAAO,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC;CAyHnB"}