jumpy-lion 0.0.22 → 0.0.24

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 (60) hide show
  1. package/dist/browser-controller.d.ts.map +1 -1
  2. package/dist/browser-controller.js +62 -32
  3. package/dist/browser-controller.js.map +1 -1
  4. package/dist/browser-plugin.d.ts +3 -1
  5. package/dist/browser-plugin.d.ts.map +1 -1
  6. package/dist/browser-plugin.js +36 -9
  7. package/dist/browser-plugin.js.map +1 -1
  8. package/dist/browser-process/browser.d.ts +1 -0
  9. package/dist/browser-process/browser.d.ts.map +1 -1
  10. package/dist/browser-process/browser.js +7 -2
  11. package/dist/browser-process/browser.js.map +1 -1
  12. package/dist/crawler.d.ts +32 -9
  13. package/dist/crawler.d.ts.map +1 -1
  14. package/dist/crawler.js +16 -6
  15. package/dist/crawler.js.map +1 -1
  16. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts +2 -0
  17. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.d.ts.map +1 -0
  18. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js +7 -0
  19. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js.map +1 -0
  20. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts +2 -0
  21. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.d.ts.map +1 -0
  22. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js +18 -0
  23. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js.map +1 -0
  24. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts +83 -0
  25. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.d.ts.map +1 -0
  26. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js +1258 -0
  27. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js.map +1 -0
  28. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts +2 -0
  29. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.d.ts.map +1 -0
  30. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js +76 -0
  31. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js.map +1 -0
  32. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts +2 -0
  33. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.d.ts.map +1 -0
  34. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js +15 -0
  35. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js.map +1 -0
  36. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts +2 -0
  37. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.d.ts.map +1 -0
  38. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js +77 -0
  39. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js.map +1 -0
  40. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts +2 -0
  41. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.d.ts.map +1 -0
  42. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js +19 -0
  43. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js.map +1 -0
  44. package/dist/fingerprinting/canvas-fingerprint.d.ts +3 -1
  45. package/dist/fingerprinting/canvas-fingerprint.d.ts.map +1 -1
  46. package/dist/fingerprinting/canvas-fingerprint.js +56 -58
  47. package/dist/fingerprinting/canvas-fingerprint.js.map +1 -1
  48. package/dist/fingerprinting/fingerprint-injector.d.ts +0 -1
  49. package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
  50. package/dist/fingerprinting/fingerprint-injector.js +2 -5
  51. package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
  52. package/dist/launcher-wrap.d.ts +2 -2
  53. package/dist/launcher-wrap.d.ts.map +1 -1
  54. package/dist/launcher-wrap.js.map +1 -1
  55. package/dist/page.d.ts +12 -1
  56. package/dist/page.d.ts.map +1 -1
  57. package/dist/page.js +224 -4
  58. package/dist/page.js.map +1 -1
  59. package/dist/tsconfig.build.tsbuildinfo +1 -1
  60. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"browser-controller.d.ts","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAc,MAAM,SAAS,CAAC;AAIxD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,iBAAiB,CAC/D,WAAW,EAAE,6CAA6C;AAC1D,OAAO,EAAE,gBAAgB;AACzB,YAAY,EAAE,4BAA4B;AAC1C,EAAE,EAAE,0DAA0D;AAC9D,aAAa,CAChB;IACG,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,qBAAqB,CAAS;IAEhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAWjC;;;OAGG;YACW,iBAAiB;IAuC/B;;;OAGG;cACa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBvC;;;OAGG;cACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtC;;;OAGG;cACa,QAAQ,CAAC,UAAU,SAAI,GAAG,OAAO,CAAC,aAAa,CAAC;YAiDlD,yBAAyB;IAuBvC;;;OAGG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlF;;;OAGG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ1D,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI5G"}
1
+ {"version":3,"file":"browser-controller.d.ts","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAc,MAAM,SAAS,CAAC;AAIxD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,iBAAiB,CAC/D,WAAW,EAAE,6CAA6C;AAC1D,OAAO,EAAE,gBAAgB;AACzB,YAAY,EAAE,4BAA4B;AAC1C,EAAE,EAAE,0DAA0D;AAC9D,aAAa,CAChB;IACG,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,qBAAqB,CAAS;IAEhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCjC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAajC;;;OAGG;YACW,iBAAiB;IAuC/B;;;OAGG;cACa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBvC;;;OAGG;cACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtC;;;OAGG;cACa,QAAQ,CAAC,UAAU,SAAI,GAAG,OAAO,CAAC,aAAa,CAAC;YA+DlD,yBAAyB;IAuBvC;;;OAGG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlF;;;OAGG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ1D,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI5G"}
@@ -26,17 +26,31 @@ export default class CDPBrowserController extends BrowserController {
26
26
  }); // Flag to track disconnect listener
27
27
  }
28
28
  async initialize() {
29
- try {
30
- this.client = await CDP({ port: this.launchContext.debuggingPort });
31
- const { Network, Page } = this.client;
32
- await Network.enable();
33
- await Page.enable();
34
- // Access the internal WebSocket and add event listeners for disconnects
35
- this._attachDisconnectListener();
36
- }
37
- catch (error) {
38
- log.error('Failed to initialize CDP client', error);
39
- throw error;
29
+ const maxInitAttempts = 3;
30
+ let attempt = 0;
31
+ while (attempt < maxInitAttempts) {
32
+ try {
33
+ this.client = await CDP({
34
+ port: this.launchContext.debuggingPort,
35
+ local: true,
36
+ });
37
+ const { Network, Page } = this.client;
38
+ await Promise.all([
39
+ Network.enable(),
40
+ Page.enable(),
41
+ ]);
42
+ this._attachDisconnectListener();
43
+ return;
44
+ }
45
+ catch (error) {
46
+ attempt++;
47
+ log.error(`Failed to initialize CDP client (attempt ${attempt}/${maxInitAttempts})`, error);
48
+ if (attempt === maxInitAttempts) {
49
+ throw error;
50
+ }
51
+ // Wait before retrying
52
+ await utils.sleep(2000 * attempt);
53
+ }
40
54
  }
41
55
  }
42
56
  /**
@@ -48,7 +62,9 @@ export default class CDPBrowserController extends BrowserController {
48
62
  return;
49
63
  this.client.on('disconnect', () => {
50
64
  log.error('WebSocket disconnected, attempting to reconnect...');
51
- this._attemptReconnect();
65
+ void this._attemptReconnect().catch((error) => {
66
+ log.error('Failed to reconnect after multiple attempts. Browser has been closed.', error);
67
+ });
52
68
  });
53
69
  this.hasDisconnectListener = true; // Mark that we have a disconnect listener attached
54
70
  }
@@ -61,30 +77,31 @@ export default class CDPBrowserController extends BrowserController {
61
77
  while (this.reconnectAttempts < maxAttempts) {
62
78
  try {
63
79
  log.info(`Reconnect attempt ${this.reconnectAttempts + 1} of ${maxAttempts}`);
64
- this.client = await CDP({ port: this.launchContext.debuggingPort });
80
+ // Connect to browser target directly
81
+ this.client = await CDP({
82
+ port: this.launchContext.debuggingPort,
83
+ target: 'browser', // This connects to the root target without creating new ones
84
+ local: true,
85
+ });
65
86
  const { Network, Page } = this.client;
66
- await Network.enable();
67
- await Page.enable();
68
- // Reset reconnect attempts on success
87
+ await Promise.all([
88
+ Network.enable(),
89
+ Page.enable(),
90
+ ]);
69
91
  this.reconnectAttempts = 0;
70
92
  log.info('Reconnected to browser successfully.');
71
- // Reattach the disconnect listener after a successful reconnection
72
- this.hasDisconnectListener = false; // Reset flag to allow attaching again
93
+ this.hasDisconnectListener = false;
73
94
  this._attachDisconnectListener();
74
- return; // Successfully reconnected
95
+ return;
75
96
  }
76
97
  catch (error) {
77
98
  this.reconnectAttempts++;
78
99
  log.error(`Reconnect attempt ${this.reconnectAttempts} failed.`, error);
79
100
  if (this.reconnectAttempts === maxAttempts) {
80
- log.error('Max reconnect attempts reached. Closing the browser.');
81
- await this._close(); // Close the browser if reconnecting fails
82
- // Gracefully handle the error without throwing to avoid crashing the process
83
- log.error('Failed to reconnect after multiple attempts. Browser has been closed.');
101
+ log.error('Max reconnect attempts reached.');
84
102
  return;
85
103
  }
86
- // Wait before the next reconnection attempt
87
- await utils.sleep(delayMs);
104
+ await utils.sleep(delayMs / 2);
88
105
  }
89
106
  }
90
107
  }
@@ -140,20 +157,29 @@ export default class CDPBrowserController extends BrowserController {
140
157
  if (!this.client) {
141
158
  await this.initialize();
142
159
  }
160
+ // Check if client is still connected
161
+ // @ts-expect-error Accessing internal WebSocket
162
+ if (this.client._ws?.readyState !== 1) { // WebSocket.OPEN = 1
163
+ log.info('Browser connection lost, reinitializing...');
164
+ await this.initialize();
165
+ }
143
166
  const { Target } = this.client;
144
167
  // Create a new page target
145
168
  const { targetId } = await Target.createTarget({ url: 'about:blank' });
146
169
  const session = await CDP({ target: targetId, port: this.launchContext.debuggingPort });
147
- // Enable necessary domains
148
- await session.Network.enable();
149
- await session.Page.enable();
170
+ // Enable only essential domains
171
+ await Promise.all([
172
+ session.Network.enable(),
173
+ session.Page.enable(),
174
+ session.DOM.enable(),
175
+ ]);
150
176
  // Activate the target
151
177
  // @TODO: This is quite messy and should be improved
152
178
  const { targetInfos } = await Target.getTargets();
153
179
  const pages = targetInfos.filter((target) => target.type === 'page' && !target.url.includes('chrome://'));
154
180
  await Target.activateTarget({ targetId: pages[pages.length - 1].targetId });
155
- // Create and return the new page
156
- const page = new CdpPage(session);
181
+ // Create and return the new page using the static create method
182
+ const page = await CdpPage.create(session);
157
183
  page.once(PAGE_CLOSED, () => {
158
184
  this.activePages -= 1;
159
185
  });
@@ -165,10 +191,14 @@ export default class CDPBrowserController extends BrowserController {
165
191
  log.error(`Failed to create new page. Attempt ${retries} of ${maxRetries}`, error);
166
192
  if (retries === maxRetries) {
167
193
  log.error('Max retries reached. Closing the browser.');
168
- await this._close(); // Close the browser if new page cannot be opened
194
+ try {
195
+ await this._close();
196
+ }
197
+ catch (closeError) {
198
+ log.error('Could not close browser client or process', { error: closeError });
199
+ }
169
200
  throw new Error('Failed to create a new page after multiple attempts.');
170
201
  }
171
- // Optional delay before retrying
172
202
  await utils.sleep(1000 * retries);
173
203
  }
174
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser-controller.js","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-controller.js","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,14 @@ type Library = CdpLauncher;
7
7
  type LaunchResult = LaunchReturn;
8
8
  interface NewPageOptions {
9
9
  }
10
- interface LaunchBrowserOptions {
10
+ export interface LaunchBrowserOptions {
11
11
  browserType: "chrome" | "firefox";
12
12
  useIncognitoPages: boolean;
13
13
  proxyUrl?: string;
14
14
  ignoreHttpsErrors: boolean;
15
15
  headless?: boolean;
16
16
  executablePath?: string;
17
+ useExperimentalFingerprints?: boolean;
17
18
  }
18
19
  export default class CDPBrowserPlugin extends BrowserPlugin<Library, LaunchBrowserOptions, LaunchResult, NewPageOptions, NewPageResult> {
19
20
  /**
@@ -61,6 +62,7 @@ export default class CDPBrowserPlugin extends BrowserPlugin<Library, LaunchBrows
61
62
  * @private
62
63
  */
63
64
  private _connectWithRetry;
65
+ private _isPortAvailable;
64
66
  }
65
67
  export {};
66
68
  //# sourceMappingURL=browser-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-plugin.d.ts","sourceRoot":"","sources":["../src/browser-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAO,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMjD,KAAK,OAAO,GAAG,WAAW,CAAC;AAC3B,KAAK,YAAY,GAAG,YAAY,CAAC;AACjC,UAAU,cAAc;CAAI;AAC5B,UAAU,oBAAoB;IAC1B,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAa,CACvD,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,aAAa,CAChB;IACG;OACG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzD;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC7B,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,GACzG,OAAO;IAKV;;;;OAIG;cACa,OAAO,CACnB,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,GACzG,OAAO,CAAC,YAAY,CAAC;IAwCxB;;;;OAIG;IAGH,SAAS,CAAC,iBAAiB,IAAI,oBAAoB;IAMnD;;;;OAIG;YACW,cAAc;IA4B5B;;;;OAIG;YACW,YAAY;IAmB1B;;;;OAIG;YACW,aAAa;IAuB3B;;;;OAIG;YACW,iBAAiB;CAuBlC"}
1
+ {"version":3,"file":"browser-plugin.d.ts","sourceRoot":"","sources":["../src/browser-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAO,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,KAAK,OAAO,GAAG,WAAW,CAAC;AAC3B,KAAK,YAAY,GAAG,YAAY,CAAC;AACjC,UAAU,cAAc;CAAI;AAC5B,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAa,CACvD,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,aAAa,CAChB;IACG;OACG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzD;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC7B,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,GACzG,OAAO;IAKV;;;;OAIG;cACa,OAAO,CACnB,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,GACzG,OAAO,CAAC,YAAY,CAAC;IA4CxB;;;;OAIG;IAGH,SAAS,CAAC,iBAAiB,IAAI,oBAAoB;IAMnD;;;;OAIG;YACW,cAAc;IA4B5B;;;;OAIG;YACW,YAAY;IAmB1B;;;;OAIG;YACW,aAAa;IAuB3B;;;;OAIG;YACW,iBAAiB;YAwCjB,gBAAgB;CAWjC"}
@@ -1,9 +1,9 @@
1
1
  import net from 'net';
2
2
  import { BrowserPlugin, log } from 'crawlee';
3
3
  import CDPBrowserController from './browser-controller.js';
4
+ import { launchChromeBrowserWithNewProfile } from './browser-process/browser.js';
4
5
  import { CdpLauncher } from './launcher-wrap.js';
5
6
  import { anonymizeProxySugar } from './proxy/anonymize-proxy.js';
6
- import { launchChromeBrowserWithNewProfile } from './browser-process/browser.js';
7
7
  export default class CDPBrowserPlugin extends BrowserPlugin {
8
8
  /**
9
9
  */
@@ -25,6 +25,11 @@ export default class CDPBrowserPlugin extends BrowserPlugin {
25
25
  * @private
26
26
  */
27
27
  async _launch(launchContext) {
28
+ const debuggingPort = await this._findFreePort(9233);
29
+ // Add port availability check
30
+ if (!(await this._isPortAvailable(debuggingPort))) {
31
+ throw new Error(`Port ${debuggingPort} is already in use`);
32
+ }
28
33
  const { launchOptions, useIncognitoPages, proxyUrl } = launchContext;
29
34
  if (!launchOptions.browserType) {
30
35
  launchOptions.browserType = "chrome";
@@ -36,7 +41,6 @@ export default class CDPBrowserPlugin extends BrowserPlugin {
36
41
  if (anonymizedProxyUrl) {
37
42
  launchOptions.proxyUrl = anonymizedProxyUrl;
38
43
  }
39
- const debuggingPort = await this._findFreePort(9233);
40
44
  const browserProcess = await this._launchBrowser(debuggingPort, launchOptions);
41
45
  log.debug("browserProcess", browserProcess);
42
46
  try {
@@ -73,11 +77,11 @@ export default class CDPBrowserPlugin extends BrowserPlugin {
73
77
  * @private
74
78
  */
75
79
  async _launchBrowser(debuggingPort, launchOptions) {
76
- const { proxyUrl, browserType, ignoreHttpsErrors = true, headless, executablePath } = launchOptions;
80
+ const { proxyUrl, browserType, ignoreHttpsErrors = true, headless, executablePath, useExperimentalFingerprints } = launchOptions;
77
81
  let browserProcess;
78
82
  switch (browserType) {
79
83
  case "chrome": {
80
- browserProcess = await launchChromeBrowserWithNewProfile({ debuggingPort, anonymizedProxyUrl: proxyUrl, ignoreHttpsErrors, headless, executablePath });
84
+ browserProcess = await launchChromeBrowserWithNewProfile({ debuggingPort, anonymizedProxyUrl: proxyUrl, ignoreHttpsErrors, headless, executablePath, useExperimentalFingerprints });
81
85
  break;
82
86
  }
83
87
  default: {
@@ -153,24 +157,47 @@ export default class CDPBrowserPlugin extends BrowserPlugin {
153
157
  async _connectWithRetry(port, maxRetries, retryDelay) {
154
158
  let attempt = 0;
155
159
  let lastError = null;
160
+ // Add delay before first attempt to allow browser to fully start
161
+ await new Promise(resolve => setTimeout(resolve, 1000));
156
162
  while (attempt < maxRetries) {
157
163
  try {
158
164
  const cdpLauncher = new CdpLauncher();
159
- const browser = await cdpLauncher.launch({ port });
165
+ const browser = await Promise.race([
166
+ cdpLauncher.launch({ port }),
167
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Launch timeout')), 10000)),
168
+ ]);
160
169
  log.info(`Connected to browser on port ${port} on attempt ${attempt + 1}`);
161
170
  return browser;
162
171
  }
163
172
  catch (error) {
164
173
  attempt++;
165
- lastError = error;
166
- log.warning(`Failed to connect to browser on attempt ${attempt}. Retrying in ${retryDelay}ms...`);
174
+ if (error instanceof Error) {
175
+ lastError = error;
176
+ }
177
+ else {
178
+ lastError = new Error(String(error));
179
+ }
180
+ log.warning(`Failed to connect to browser on attempt ${attempt}. Error: ${lastError.message}`);
167
181
  if (attempt < maxRetries) {
168
- await new Promise(resolve => setTimeout(resolve, retryDelay)); // Wait before retrying
182
+ // Exponential backoff
183
+ const backoffDelay = retryDelay * 2 ** (attempt - 1);
184
+ await new Promise(resolve => setTimeout(resolve, backoffDelay));
169
185
  }
170
186
  }
171
187
  }
172
- log.error(`Failed to connect to browser after ${maxRetries} attempts.`, lastError);
188
+ // Always throw the wrapped error with our standard message
173
189
  throw new Error(`Failed to connect to browser after ${maxRetries} attempts.`);
174
190
  }
191
+ async _isPortAvailable(port) {
192
+ return new Promise((resolve) => {
193
+ const tester = net.createServer()
194
+ .once('error', () => resolve(false))
195
+ .once('listening', () => {
196
+ tester.once('close', () => resolve(true))
197
+ .close();
198
+ })
199
+ .listen(port);
200
+ });
201
+ }
175
202
  }
176
203
  //# sourceMappingURL=browser-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-plugin.js","sourceRoot":"","sources":["../src/browser-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,GAAG,EAAsB,MAAM,SAAS,CAAC;AAGjE,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AAgBjF,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAM7C;IACG;OACG;IACO,KAAK,CAAC,wBAAwB;QACpC,sCAAsC;IAC1C,CAAC;IAED;;;;OAIG;IACO,uBAAuB,CAC7B,aAAwG;QAExG,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC;QACpD,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,uCAAuC;IAC7E,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,OAAO,CACnB,aAAwG;QAExG,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;QAErE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAC7B,aAAa,CAAC,WAAW,GAAG,QAAQ,CAAC;QACzC,CAAC;QAED,IAAI,OAAqB,CAAC;QAE1B,aAAa,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAE3C,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,kBAAkB,EAAE,CAAC;YACrB,aAAa,CAAC,QAAQ,GAAG,kBAAkB,CAAC;QAChD,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAC/E,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAE5C,IAAI,CAAC;YACD,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAGhE,IAAI,kBAAkB,EAAE,CAAC;gBACrB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;oBAC3B,MAAM,KAAK,EAAE,CAAC;gBAClB,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,KAAK,EAAE,CAAC;YACd,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,aAAa,CAAC,aAAa,GAAG,aAAa,CAAC;QAC5C,aAAa,CAAC,OAAO,GAAG,cAAc,CAAC;QACvC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,SAAS;IACT,6BAA6B;IACnB,iBAAiB;QACvB,UAAU;QACV,6BAA6B;QAC7B,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc,CAAC,aAAqB,EAAE,aAAmC;QACnF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,aAAa,CAAC;QACpG,IAAI,cAA8B,CAAC;QAEnC,QAAQ,WAAW,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,cAAc,GAAG,MAAM,iCAAiC,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;gBACvJ,MAAM;YACV,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,GAAG,CAAC,CAAC;YACxE,CAAC;QAEL,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;iBAC3B,IAAI,CAAC,GAAG,EAAE;gBACP,GAAG,CAAC,IAAI,CAAC,4BAA4B,aAAa,EAAE,CAAC,CAAC;gBACtD,OAAO,CAAC,cAAc,CAAC,CAAC;YAC5B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,GAAG,CAAC,KAAK,CAAC,yCAAyC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;gBACzE,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,GAAG;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,CAAC,SAAS,UAAU;gBAChB,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACvD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;oBACtB,MAAM,CAAC,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;wBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,sBAAsB;oBAC9D,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa,CAAC,YAAoB;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC5B,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,mCAAmC;gBACzG,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;gBACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAsB,CAAC;gBACtD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,iBAAiB,CAAC,IAAY,EAAE,UAAkB,EAAE,UAAkB;QAChF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,GAAiB,IAAI,CAAC;QAEnC,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,GAAG,CAAC,IAAI,CAAC,gCAAgC,IAAI,eAAe,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3E,OAAO,OAAO,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;gBACV,SAAS,GAAG,KAAc,CAAC;gBAC3B,GAAG,CAAC,OAAO,CAAC,2CAA2C,OAAO,iBAAiB,UAAU,OAAO,CAAC,CAAC;gBAClG,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;oBACvB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB;gBAC1F,CAAC;YACL,CAAC;QACL,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,sCAAsC,UAAU,YAAY,EAAE,SAAS,CAAC,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,YAAY,CAAC,CAAC;IAClF,CAAC;CACJ"}
1
+ {"version":3,"file":"browser-plugin.js","sourceRoot":"","sources":["../src/browser-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,GAAG,EAAsB,MAAM,SAAS,CAAC;AAGjE,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAgBjE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAM7C;IACG;OACG;IACO,KAAK,CAAC,wBAAwB;QACpC,sCAAsC;IAC1C,CAAC;IAED;;;;OAIG;IACO,uBAAuB,CAC7B,aAAwG;QAExG,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC;QACpD,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,uCAAuC;IAC7E,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,OAAO,CACnB,aAAwG;QAExG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAErD,8BAA8B;QAC9B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,QAAQ,aAAa,oBAAoB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;QAErE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAC7B,aAAa,CAAC,WAAW,GAAG,QAAQ,CAAC;QACzC,CAAC;QAED,IAAI,OAAqB,CAAC;QAC1B,aAAa,CAAC,iBAAiB,GAAG,iBAA4B,CAAC;QAC/D,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAE3C,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,kBAAkB,EAAE,CAAC;YACrB,aAAa,CAAC,QAAQ,GAAG,kBAAkB,CAAC;QAChD,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAC/E,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAE5C,IAAI,CAAC;YACD,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAEhE,IAAI,kBAAkB,EAAE,CAAC;gBACrB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;oBAC3B,MAAM,KAAK,EAAE,CAAC;gBAClB,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,KAAK,EAAE,CAAC;YACd,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,aAAa,CAAC,aAAa,GAAG,aAAa,CAAC;QAC5C,aAAa,CAAC,OAAO,GAAG,cAAc,CAAC;QACvC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,SAAS;IACT,6BAA6B;IACnB,iBAAiB;QACvB,UAAU;QACV,6BAA6B;QAC7B,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc,CAAC,aAAqB,EAAE,aAAmC;QACnF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,2BAA2B,EAAE,GAAG,aAAa,CAAC;QACjI,IAAI,cAA8B,CAAC;QAEnC,QAAQ,WAAW,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,cAAc,GAAG,MAAM,iCAAiC,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBACpL,MAAM;YACV,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,GAAG,CAAC,CAAC;YACxE,CAAC;QAEL,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;iBAC3B,IAAI,CAAC,GAAG,EAAE;gBACP,GAAG,CAAC,IAAI,CAAC,4BAA4B,aAAa,EAAE,CAAC,CAAC;gBACtD,OAAO,CAAC,cAAc,CAAC,CAAC;YAC5B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,GAAG,CAAC,KAAK,CAAC,yCAAyC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;gBACzE,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,GAAG;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,CAAC,SAAS,UAAU;gBAChB,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACvD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;oBACtB,MAAM,CAAC,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;wBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,sBAAsB;oBAC9D,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa,CAAC,YAAoB;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC5B,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,mCAAmC;gBACzG,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;gBACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAsB,CAAC;gBACtD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,iBAAiB,CAAC,IAAY,EAAE,UAAkB,EAAE,UAAkB;QAChF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,GAAiB,IAAI,CAAC;QAEnC,iEAAiE;QACjE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBAC/B,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;oBAC5B,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC7B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAC/D;iBACJ,CAAiB,CAAC;gBAEnB,GAAG,CAAC,IAAI,CAAC,gCAAgC,IAAI,eAAe,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3E,OAAO,OAAO,CAAC;YACnB,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;gBACV,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBACzB,SAAS,GAAG,KAAK,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACJ,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC;gBAED,GAAG,CAAC,OAAO,CAAC,2CAA2C,OAAO,YAAY,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/F,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;oBACvB,sBAAsB;oBACtB,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,IAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;oBACnD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;gBACpE,CAAC;YACL,CAAC;QACL,CAAC;QAED,2DAA2D;QAC3D,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,YAAY,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE;iBAC5B,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACnC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBACpB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;qBACpC,KAAK,EAAE,CAAC;YACjB,CAAC,CAAC;iBACD,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -7,6 +7,7 @@ export interface LaunchBrowserOptions {
7
7
  ignoreHttpsErrors?: boolean;
8
8
  headless?: boolean;
9
9
  executablePath?: string;
10
+ useExperimentalFingerprints?: boolean;
10
11
  }
11
12
  export declare const launchBrowserWithNewProfile: (executablePath: string, options?: LaunchBrowserOptions) => Promise<BrowserProcess>;
12
13
  export declare const createTempUserDataDir: () => Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser-process/browser.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,WAAW,oBAAoB;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,2BAA2B,mBACpB,MAAM,YACb,oBAAoB,KAC9B,OAAO,CAAC,cAAc,CA4DxB,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAa,OAAO,CAAC,MAAM,CAI5D,CAAC;AAEF,eAAO,MAAM,iCAAiC,aAAmB,oBAAoB,4BAKpF,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser-process/browser.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,oBAAoB;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,eAAO,MAAM,2BAA2B,mBACpB,MAAM,YACb,oBAAoB,KAC9B,OAAO,CAAC,cAAc,CAkExB,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAa,OAAO,CAAC,MAAM,CAI5D,CAAC;AAEF,eAAO,MAAM,iCAAiC,aAAmB,oBAAoB,4BAKpF,CAAC"}
@@ -6,8 +6,9 @@ import { log } from '@crawlee/core';
6
6
  import { getChromeExecutablePath } from './get-chrome-executable.js';
7
7
  import { BrowserProcess } from './process.js';
8
8
  import { createChromeProfile } from '../browser-profiles/index.js';
9
+ const EXTENSION_PATH = path.resolve(import.meta.dirname, '../fingerprinting/all-fingerprint-defender');
9
10
  export const launchBrowserWithNewProfile = async (executablePath, options = {}) => {
10
- const { anonymizedProxyUrl, debuggingPort, windowWidth = 1920, windowHeight = 1080, ignoreHttpsErrors, headless, } = options;
11
+ const { anonymizedProxyUrl, debuggingPort, windowWidth = 1920, windowHeight = 1080, ignoreHttpsErrors, headless, useExperimentalFingerprints = false, } = options;
11
12
  try {
12
13
  const userDataDir = await createTempUserDataDir();
13
14
  await createChromeProfile(userDataDir);
@@ -22,7 +23,12 @@ export const launchBrowserWithNewProfile = async (executablePath, options = {})
22
23
  '--no-default-browser-check',
23
24
  '--disable-infobars',
24
25
  '--disable-features=IsolateOrigins,site-per-process',
26
+ '--disable-gpu',
25
27
  ];
28
+ if (useExperimentalFingerprints) {
29
+ browserArgs.push(`--disable-extensions-except=${EXTENSION_PATH}`);
30
+ browserArgs.push(`--load-extension=${EXTENSION_PATH}`);
31
+ }
26
32
  if (anonymizedProxyUrl) {
27
33
  browserArgs.push(`--proxy-server=${anonymizedProxyUrl}`);
28
34
  }
@@ -35,7 +41,6 @@ export const launchBrowserWithNewProfile = async (executablePath, options = {})
35
41
  }
36
42
  if (headless) {
37
43
  browserArgs.push('--headless=new');
38
- browserArgs.push('--disable-gpu');
39
44
  }
40
45
  log.debug(`Launching browser with user data dir: ${userDataDir}`);
41
46
  log.debug('browserArgs', browserArgs);
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser-process/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser-process/browser.ts"],"names":[],"mappings":"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"}
package/dist/crawler.d.ts CHANGED
@@ -1,23 +1,46 @@
1
1
  import type { Dictionary } from '@crawlee/types';
2
- import type CDP from 'chrome-remote-interface';
3
- import type { BrowserCrawlerOptions, BrowserCrawlingContext, BrowserHook, BrowserPoolOptions, BrowserRequestHandler, GetUserDataFromRequest, LoadedContext, RouterRoutes } from 'crawlee';
2
+ import type { BrowserCrawlerOptions, BrowserCrawlingContext, BrowserHook, BrowserRequestHandler, LaunchContext, LoadedContext, RouterRoutes, RouterHandler } from 'crawlee';
4
3
  import { BrowserCrawler, Configuration } from 'crawlee';
5
4
  import type CDPBrowserController from './browser-controller.js';
5
+ import CDPBrowserPlugin from './browser-plugin.js';
6
+ import { CdpLauncher, LaunchReturn } from './launcher-wrap.js';
6
7
  import type CdpPage from './page.js';
7
8
  import type { GotoOptions } from './page.js';
8
- export interface CDPCrawlingContext<UserData extends Dictionary = Dictionary> extends BrowserCrawlingContext<typeof CDP, CdpPage, Response, CDPBrowserController, UserData> {
9
+ import type CDPCrawler from './index.js';
10
+ interface LaunchOptions {
11
+ headless?: boolean;
12
+ useExperimentalFingerprints?: boolean;
13
+ windowWidth?: number;
14
+ windowHeight?: number;
15
+ ignoreHttpsErrors?: boolean;
16
+ executablePath?: string;
17
+ browserType?: string;
18
+ useIncognitoPages?: boolean;
19
+ }
20
+ export interface CDPPluginOptions {
21
+ browserPlugins: [CDPBrowserPlugin];
22
+ }
23
+ export type CDPGotoOptions = Parameters<CdpPage['goto']>[1];
24
+ export interface CDPCrawlingContext<UserData extends Dictionary = Dictionary> extends BrowserCrawlingContext<typeof CDPCrawler, CdpPage, Response, CDPBrowserController, UserData> {
25
+ }
26
+ export interface CDPLaunchContext extends Partial<Omit<LaunchContext<CdpLauncher, LaunchOptions, LaunchReturn, {}, CdpPage>, 'launchOptions'>> {
27
+ launchOptions?: LaunchOptions;
9
28
  }
10
29
  export interface CDPHook extends BrowserHook<CDPCrawlingContext, CDPGotoOptions> {
11
30
  }
12
31
  export interface CDPRequestHandler extends BrowserRequestHandler<LoadedContext<CDPCrawlingContext>> {
32
+ (ctx: CDPCrawlingContext): Promise<void> | void;
13
33
  }
14
- export type CDPGotoOptions = Parameters<CdpPage['goto']>[1];
15
- export default class Crawler extends BrowserCrawler<BrowserPoolOptions, // BrowserPoolOptions (can be customized further if needed)
16
- {}, // LaunchOptions
17
- CDPCrawlingContext> {
34
+ export interface CDPCrawlerOptions extends BrowserCrawlerOptions<CDPCrawlingContext, CDPPluginOptions> {
35
+ launchContext?: CDPLaunchContext;
36
+ requestHandler?: CDPRequestHandler;
37
+ }
38
+ export default class Crawler extends BrowserCrawler<CDPPluginOptions, LaunchOptions, CDPCrawlingContext> {
39
+ private readonly crawlerOptions;
18
40
  readonly config: Configuration;
19
- constructor(options?: BrowserCrawlerOptions, config?: Configuration);
41
+ constructor(crawlerOptions?: CDPCrawlerOptions, config?: Configuration);
20
42
  protected _navigationHandler(crawlingContext: CDPCrawlingContext, gotoOptions: GotoOptions): Promise<any>;
21
43
  }
22
- export declare function createCDPRouter<Context extends CDPCrawlingContext = CDPCrawlingContext, UserData extends Dictionary = GetUserDataFromRequest<Context['request']>>(routes?: RouterRoutes<Context, UserData>): import("crawlee").RouterHandler<Context>;
44
+ export declare function createCDPRouter<Context extends CDPCrawlingContext = CDPCrawlingContext, UserData extends Dictionary = Context extends CDPCrawlingContext<infer U> ? U : never>(routes?: RouterRoutes<Context, UserData>): RouterHandler<Context>;
45
+ export {};
23
46
  //# sourceMappingURL=crawler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crawler.d.ts","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1L,OAAO,EAAE,cAAc,EAAE,aAAa,EAAU,MAAM,SAAS,CAAC;AAEhE,OAAO,KAAK,oBAAoB,MAAM,yBAAyB,CAAC;AAGhE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,UAAU,GAAG,UAAU,CACxE,SAAQ,sBAAsB,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,CAAC;CAAI;AAErG,MAAM,WAAW,OAAQ,SAAQ,WAAW,CAAC,kBAAkB,EAAE,cAAc,CAAC;CAAI;AACpF,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAAI;AACvG,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAAc,CAC/C,kBAAkB,EAAG,2DAA2D;AAChF,EAAE,EAAG,gBAAgB;AACrB,kBAAkB,CACrB;aACsE,MAAM;gBAA7D,OAAO,GAAE,qBAA0B,EAAoB,MAAM,gBAAkC;cA2ClF,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAK3H;AAID,wBAAgB,eAAe,CAC3B,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,QAAQ,SAAS,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAC1E,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,4CAEzC"}
1
+ {"version":3,"file":"crawler.d.ts","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5K,OAAO,EAAE,cAAc,EAAE,aAAa,EAAU,MAAM,SAAS,CAAC;AAEhE,OAAO,KAAK,oBAAoB,MAAM,yBAAyB,CAAC;AAChE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,UAAU,aAAa;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAAG,cAAc,EAAE,CAAC,gBAAgB,CAAC,CAAA;CAAE;AACxE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAG5D,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,UAAU,GAAG,UAAU,CACxE,SAAQ,sBAAsB,CAC1B,OAAO,UAAU,EACjB,OAAO,EACP,QAAQ,EACR,oBAAoB,EACpB,QAAQ,CACX;CAAG;AACR,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1I,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,OAAQ,SAAQ,WAAW,CAAC,kBAAkB,EAAE,cAAc,CAAC;CAAG;AACnF,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC/F,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACnD;AACD,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAClG,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACtC;AAGD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAAc,CAC/C,gBAAgB,EAChB,aAAa,EACb,kBAAkB,CACrB;IAGO,OAAO,CAAC,QAAQ,CAAC,cAAc;aACb,MAAM;gBADP,cAAc,GAAE,iBAAsB,EACrC,MAAM,gBAAkC;cA+CrC,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAK3H;AAED,wBAAgB,eAAe,CAC3B,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,QAAQ,SAAS,UAAU,GAAG,OAAO,SAAS,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EACvF,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAElE"}
package/dist/crawler.js CHANGED
@@ -3,10 +3,12 @@ import CDPBrowserPlugin from './browser-plugin.js';
3
3
  import { CdpLauncher } from './launcher-wrap.js';
4
4
  // Implement the Crawler class with proper typing
5
5
  export default class Crawler extends BrowserCrawler {
6
- constructor(options = {}, config = Configuration.getGlobalConfig()) {
7
- const { launchContext = {}, headless = false, ...browserCrawlerOptions } = options;
6
+ constructor(
7
+ // @ts-expect-error Fix types
8
+ crawlerOptions = {}, config = Configuration.getGlobalConfig()) {
9
+ const { launchContext = {}, headless = false, browserPoolOptions: poolOptions = {}, ...browserCrawlerOptions } = crawlerOptions;
8
10
  const browserPoolOptions = {
9
- ...options.browserPoolOptions,
11
+ ...poolOptions,
10
12
  };
11
13
  if (launchContext.proxyUrl) {
12
14
  throw new Error('CDPCrawlerOptions.launchContext.proxyUrl is not allowed. Use CDPCrawlerOptions.proxyConfiguration instead.');
@@ -23,14 +25,22 @@ export default class Crawler extends BrowserCrawler {
23
25
  launchContext.launchOptions ?? (launchContext.launchOptions = {});
24
26
  launchContext.launchOptions.headless = headless;
25
27
  }
26
- // Set the browser plugin for CDP
28
+ // Update the plugin initialization
27
29
  browserPoolOptions.browserPlugins = [
28
- new CDPBrowserPlugin(new CdpLauncher(), launchContext), // Pass the correct plugin
30
+ new CDPBrowserPlugin(new CdpLauncher(), launchContext), // Temporary type assertion until we fix the underlying types
29
31
  ];
32
+ if (launchContext.launchOptions?.useExperimentalFingerprints) {
33
+ browserPoolOptions.useFingerprints = false;
34
+ }
30
35
  // Pass the options and config to the parent class constructor
31
36
  // @TODO:
32
- // @ts-expect-error Fix types
33
37
  super({ ...browserCrawlerOptions, launchContext, browserPoolOptions }, config);
38
+ Object.defineProperty(this, "crawlerOptions", {
39
+ enumerable: true,
40
+ configurable: true,
41
+ writable: true,
42
+ value: crawlerOptions
43
+ });
34
44
  Object.defineProperty(this, "config", {
35
45
  enumerable: true,
36
46
  configurable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWjD,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAIpC;IACG,YAAY,UAAiC,EAAE,EAAoB,SAAS,aAAa,CAAC,eAAe,EAAE;QACvG,MAAM,EACF,aAAa,GAAG,EAAE,EAClB,QAAQ,GAAG,KAAK,EAChB,GAAG,qBAAqB,EAC3B,GAAG,OAAO,CAAC;QAEZ,MAAM,kBAAkB,GAAG;YACvB,GAAG,OAAO,CAAC,kBAAkB;SAChC,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;QAClI,CAAC;QAED,yDAAyD;QACzD,IAAI,kBAAkB,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC5G,CAAC;QAED,iCAAiC;QACjC,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,0BAA0B;SACtE,CAAC;QAEF,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnB,aAAa,CAAC,aAAa,KAA3B,aAAa,CAAC,aAAa,GAAK,EAAE,EAAC;YACnC,aAAa,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAmB,CAAC;QAC/D,CAAC;QAED,iCAAiC;QACjC,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,0BAA0B;SACrF,CAAC;QAGF,8DAA8D;QAC9D,SAAS;QACT,6BAA6B;QAC7B,KAAK,CAAC,EAAE,GAAG,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;QAvClC;;;;mBAAkB,MAAM;WAAkC;IAwC3G,CAAC;IAED,wEAAwE;IACrD,KAAK,CAAC,kBAAkB,CAAC,eAAmC,EAAE,WAAwB;QACrG,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QAEjC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,yBAAyB;IACzF,CAAC;CACJ;AAID,MAAM,UAAU,eAAe,CAG7B,MAAwC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAU,MAAM,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AA0C/D,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;SACjB,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;QAClI,CAAC;QAED,yDAAyD;QACzD,IAAI,kBAAkB,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC5G,CAAC;QAED,iCAAiC;QACjC,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,0BAA0B;SACtE,CAAC;QAEF,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnB,aAAa,CAAC,aAAa,KAA3B,aAAa,CAAC,aAAa,GAAK,EAAE,EAAC;YACnC,aAAa,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAmB,CAAC;QAC/D,CAAC;QAED,mCAAmC;QACnC,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,EAAE,aAAoB,CAAC,EAAE,6DAA6D;SAC/H,CAAC;QAEF,IAAI,aAAa,CAAC,aAAa,EAAE,2BAA2B,EAAE,CAAC;YAC3D,kBAAkB,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/C,CAAC;QAED,8DAA8D;QAC9D,SAAS;QACT,KAAK,CAAC,EAAE,GAAG,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;QA5C/E;;;;mBAAiB,cAAc;WAAwB;QACvD;;;;mBAAkB,MAAM;WAAkC;IA4C9D,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;AAED,MAAM,UAAU,eAAe,CAG7B,MAAwC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAU,MAAM,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chunk-16ff15da.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-16ff15da.d.ts","sourceRoot":"","sources":["../../../../src/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
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)))) {
2
+ document.documentElement.setAttribute("data-afd-extension-id", chrome.runtime.id);
3
+ const e = "disabled:" + window.location.host;
4
+ 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 () { }); });
5
+ }
6
+ export {};
7
+ //# sourceMappingURL=chunk-16ff15da.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-16ff15da.js","sourceRoot":"","sources":["../../../../src/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js"],"names":[],"mappings":"AAAA,IAAG,CAAC,CAAC,YAAY,GAAC,CAAC,6BAA6B,EAAC,6BAA6B,EAAC,eAAe,EAAC,eAAe,EAAC,wBAAwB,EAAC,kBAAkB,EAAC,wBAAwB,EAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC;IAAA,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,uBAAuB,EAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,MAAM,CAAC,GAAC,WAAW,GAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,UAAS,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,mBAAmB,EAAC,MAAM,CAAC,EAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA,CAAA,CAAC,CAAC,EAAC,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,EAAC,UAAS,CAAC,IAAE,MAAM,CAAC,GAAC,CAAC,CAAC,MAAM,CAAC,CAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAC,cAAW,CAAC,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;AAAA,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chunk-1a1456ec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-1a1456ec.d.ts","sourceRoot":"","sources":["../../../../src/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { d as I, o as n, c as a, b as i, _ as N, e as v, f as z, x as H, y as C, a as o, i as m, j as L, t as d, u as l, D as P, z as $, S as W, F as x, k as B, m as E, q as U, l as q, p as R, A as G, B as j, v as J } from "./chunk-3a7b59dd.js";
2
+ const K = !0, Q = { class: "toggle-button" }, X = { key: 0, class: "on circle" }, Y = { key: 1, class: "off circle" }, Z = I({ __name: "ToggleButton", props: { isOn: { type: Boolean, default: !1 } }, setup(u) { return (c, S) => (n(), a("div", Q, [u.isOn ? (n(), a("div", X)) : i("", !0), u.isOn ? i("", !0) : (n(), a("div", Y))])); } });
3
+ const ee = N(Z, [["__scopeId", "data-v-ee74a099"]]), D = u => (G("data-v-053380fd"), u = u(), j(), u), te = { class: "header" }, se = { class: "title" }, oe = { class: "line space-between" }, ne = { class: "description" }, ae = { class: "line space-between" }, ce = { class: "description2" }, ie = ["href"], le = { class: "content" }, de = { class: "line space-between" }, re = D(() => o("span", { class: "option-icon" }, "⚙", -1)), ue = D(() => o("span", null, "⟳", -1)), _e = [ue], ve = { key: 0, class: "sub-content" }, he = { class: "line line-title" }, ge = { class: "host-line" }, pe = { class: "site-domain" }, fe = { key: 0, class: "site-icon detected" }, me = ["src"], be = D(() => o("span", { style: { "line-height": "10px", "padding-bottom": "6px", "font-size": "2.3rem", "margin-right": "4px" } }, "⟳", -1)), ye = { key: 2, class: "sub-content" }, ke = { class: "line line-title" }, we = { class: "detected-list" }, Ce = { key: 0, class: "tag d-audio" }, De = { key: 1, class: "tag d-canvas" }, Se = { key: 2, class: "tag d-font" }, Me = { key: 3, class: "tag d-webgl" }, Ae = { class: "sub-content" }, xe = { class: "line line-title" }, Be = { class: "total-detected" }, Ie = { key: 3, class: "sub-content" }, Ne = { key: 0, class: "line line-title" }, Oe = { key: 1, class: "canvas-list" }, Ve = { class: "canvas-item" }, Fe = { class: "canvas-desc" }, Te = ["src"], ze = I({ __name: "Popup", setup(u) { const c = window.chrome, S = async () => { await c.storage.local.set({ reload: !0 }), c.runtime.reload(); }, b = v(""), _ = v({}), M = v(!1), g = v([]), p = v([]), y = v(0), O = () => { c.tabs.query({ active: !0, currentWindow: !0 }, s => { const t = s[0]; t && t.url && t.url.startsWith("http") && (c.tabs.reload(t.id), window.close()); }); }; function k(s) { _.value[s] === void 0 && (_.value[s] = !1, c.runtime.sendMessage({ action: "getDisabled", host: s }, function (t) { _.value[s] = t.disabled; })); } let V = E(300); c.storage.sync.onChanged.addListener(s => { var t; (t = s.totalDetected) != null && t.newValue && V(() => { y.value = s.totalDetected.newValue; }); }), z(() => { c.tabs.query({ active: !0, currentWindow: !0 }, s => { const t = s[0]; if (t && t.url && t.url.startsWith("http")) {
4
+ const e = new URL(t.url);
5
+ b.value = e.host, k(e.host), t.id && (H(t.id, t.incognito).then(r => { for (const w of r)
6
+ (w.host === e.host || w.origins.includes(e.host)) && k(w.host); g.value = r; }), c.runtime.sendMessage({ action: "getHosts", tabID: t.id }, r => { r && ((!r.hosts || !r.hosts.includes(e.host)) && r.hosts.push(e.host), p.value = r.hosts, p.value.forEach(k)); }));
7
+ } c.storage.sync.get("totalDetected", e => { y.value = e.totalDetected || 0; }); }); }); const F = async (s) => { c.runtime.sendMessage({ action: "setDisabled", host: s, disabled: !_.value[s] }, () => { _.value[s] = !_.value[s], M.value = !0; }); }, T = s => { const t = s.target; window.open("about:blank").document.write("<img src='" + t.src + "' alt='from canvas'/>"); }, A = C(() => { const s = [], t = new Set; for (const e of g.value)
8
+ for (const r of e.detections)
9
+ t.add(e.host); if (p.value.length > 0)
10
+ for (const e of p.value)
11
+ s.push({ host: e, detected: t.has(e) }); return s; }), h = C(() => { const s = new Set; for (const t of g.value)
12
+ for (const e of t.detections)
13
+ s.add(e.type); return s; }), f = C(() => { const s = []; for (const t of g.value)
14
+ for (const e of t.detections)
15
+ e.type === "CANVAS" && s.push(e); return s.reverse(); }); return (s, t) => (n(), a("main", null, [o("div", te, [m(L, { width: 48 }), o("div", se, [o("div", oe, [o("div", ne, d(l(c).i18n.getMessage("ExtensionName")), 1)]), o("div", ae, [o("div", ce, [o("a", { href: l(U), target: "_blank", rel: "noopener noreferrer" }, d(l(c).i18n.getMessage("MakeBy")), 9, ie)]), m(P)])])]), o("div", le, [o("div", de, [o("button", { class: "btn", onClick: t[0] || (t[0] = e => l(c).runtime.openOptionsPage()) }, [re, $(" " + d(l(c).i18n.getMessage("MoreOptions")), 1)]), l(K) ? i("", !0) : (n(), a("button", { key: 0, class: "btn reload-btn", onClick: S }, _e)), m(W, { "font-size": "1.4rem" })]), b.value ? (n(), a("div", ve, [o("div", he, d(l(c).i18n.getMessage("PreventFingerprintingOn")), 1), o("div", ge, [A.value ? (n(!0), a(x, { key: 0 }, B(A.value, e => (n(), a("div", { key: e.host, class: "line interactive" }, [o("span", pe, [e.detected ? (n(), a("div", fe, "!")) : i("", !0), o("img", { src: l(q)(e.host), class: "site-icon", loading: "lazy" }, null, 8, me), o("span", null, d(e.host), 1)]), m(ee, { "is-on": !_.value[e.host], onClick: r => F(e.host) }, null, 8, ["is-on", "onClick"])]))), 128)) : i("", !0)])])) : i("", !0), M.value ? (n(), a("button", { key: 1, class: "btn refresh-btn zoom-in-effect", onClick: O }, [be, o("span", null, d(l(c).i18n.getMessage("RefreshThisPage")), 1)])) : i("", !0), h.value.size ? (n(), a("div", ye, [o("div", ke, d(l(c).i18n.getMessage("DetectedAndObfuscated")), 1), o("div", we, [h.value.has("AUDIO") ? (n(), a("div", Ce, "Audio")) : i("", !0), h.value.has("CANVAS") ? (n(), a("div", De, "Canvas")) : i("", !0), h.value.has("FONT") ? (n(), a("div", Se, "Font")) : i("", !0), h.value.has("WEBGL") ? (n(), a("div", Me, "WebGL")) : i("", !0)])])) : i("", !0), o("div", Ae, [o("div", xe, d(l(c).i18n.getMessage("NumberOfFingerprints")), 1), o("div", Be, d(y.value.toLocaleString()), 1)]), f.value && f.value.length > 0 ? (n(), a("div", Ie, [b.value ? (n(), a("div", Ne, d(l(c).i18n.getMessage("CanvasFingerprint")), 1)) : i("", !0), f.value ? (n(), a("div", Oe, [(n(!0), a(x, null, B(f.value, e => (n(), a("div", Ve, [o("div", Fe, [o("span", null, d(l(R)(e.occurredAt)), 1), o("span", null, d(e.canvasSize), 1)]), e.type === "CANVAS" ? (n(), a("img", { key: 0, onClick: T, class: "canvas", src: e.canvas }, null, 8, Te)) : i("", !0)]))), 256))])) : i("", !0)])) : i("", !0)])])); } });
16
+ const He = N(ze, [["__scopeId", "data-v-053380fd"]]);
17
+ J(He).mount("#app");
18
+ //# sourceMappingURL=chunk-1a1456ec.js.map