@cogitator-ai/browser 0.1.6 → 0.3.0

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 (100) hide show
  1. package/README.md +59 -33
  2. package/dist/index.d.ts +6 -5
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/session.d.ts +11 -0
  7. package/dist/session.d.ts.map +1 -1
  8. package/dist/session.js +181 -84
  9. package/dist/session.js.map +1 -1
  10. package/dist/stealth/evasions.d.ts +2 -0
  11. package/dist/stealth/evasions.d.ts.map +1 -1
  12. package/dist/stealth/evasions.js +52 -4
  13. package/dist/stealth/evasions.js.map +1 -1
  14. package/dist/stealth/human-like.d.ts +21 -3
  15. package/dist/stealth/human-like.d.ts.map +1 -1
  16. package/dist/stealth/human-like.js +66 -25
  17. package/dist/stealth/human-like.js.map +1 -1
  18. package/dist/stealth/index.d.ts +7 -3
  19. package/dist/stealth/index.d.ts.map +1 -1
  20. package/dist/stealth/index.js +4 -2
  21. package/dist/stealth/index.js.map +1 -1
  22. package/dist/stealth/user-agents.d.ts.map +1 -1
  23. package/dist/stealth/user-agents.js +2 -3
  24. package/dist/stealth/user-agents.js.map +1 -1
  25. package/dist/tools/extraction.d.ts.map +1 -1
  26. package/dist/tools/extraction.js +36 -39
  27. package/dist/tools/extraction.js.map +1 -1
  28. package/dist/tools/index.d.ts +1 -1
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +1 -1
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/interaction.d.ts +2 -2
  33. package/dist/tools/interaction.d.ts.map +1 -1
  34. package/dist/tools/interaction.js +30 -11
  35. package/dist/tools/interaction.js.map +1 -1
  36. package/dist/tools/network.d.ts +21 -28
  37. package/dist/tools/network.d.ts.map +1 -1
  38. package/dist/tools/network.js +370 -107
  39. package/dist/tools/network.js.map +1 -1
  40. package/dist/tools/vision.d.ts +2 -0
  41. package/dist/tools/vision.d.ts.map +1 -1
  42. package/dist/tools/vision.js +22 -14
  43. package/dist/tools/vision.js.map +1 -1
  44. package/dist/utils/human-mode.d.ts +5 -0
  45. package/dist/utils/human-mode.d.ts.map +1 -0
  46. package/dist/utils/human-mode.js +10 -0
  47. package/dist/utils/human-mode.js.map +1 -0
  48. package/dist/utils/page-helpers.d.ts +1 -0
  49. package/dist/utils/page-helpers.d.ts.map +1 -1
  50. package/dist/utils/page-helpers.js +66 -18
  51. package/dist/utils/page-helpers.js.map +1 -1
  52. package/dist/utils/schemas.d.ts +7 -2
  53. package/dist/utils/schemas.d.ts.map +1 -1
  54. package/dist/utils/schemas.js +36 -15
  55. package/dist/utils/schemas.js.map +1 -1
  56. package/package.json +12 -10
  57. package/dist/__tests__/browser-tools.test.d.ts +0 -2
  58. package/dist/__tests__/browser-tools.test.d.ts.map +0 -1
  59. package/dist/__tests__/browser-tools.test.js +0 -120
  60. package/dist/__tests__/browser-tools.test.js.map +0 -1
  61. package/dist/__tests__/extraction.test.d.ts +0 -2
  62. package/dist/__tests__/extraction.test.d.ts.map +0 -1
  63. package/dist/__tests__/extraction.test.js +0 -267
  64. package/dist/__tests__/extraction.test.js.map +0 -1
  65. package/dist/__tests__/interaction.test.d.ts +0 -2
  66. package/dist/__tests__/interaction.test.d.ts.map +0 -1
  67. package/dist/__tests__/interaction.test.js +0 -376
  68. package/dist/__tests__/interaction.test.js.map +0 -1
  69. package/dist/__tests__/navigation.test.d.ts +0 -2
  70. package/dist/__tests__/navigation.test.d.ts.map +0 -1
  71. package/dist/__tests__/navigation.test.js +0 -235
  72. package/dist/__tests__/navigation.test.js.map +0 -1
  73. package/dist/__tests__/network.test.d.ts +0 -2
  74. package/dist/__tests__/network.test.d.ts.map +0 -1
  75. package/dist/__tests__/network.test.js +0 -508
  76. package/dist/__tests__/network.test.js.map +0 -1
  77. package/dist/__tests__/page-helpers.test.d.ts +0 -2
  78. package/dist/__tests__/page-helpers.test.d.ts.map +0 -1
  79. package/dist/__tests__/page-helpers.test.js +0 -321
  80. package/dist/__tests__/page-helpers.test.js.map +0 -1
  81. package/dist/__tests__/schemas.test.d.ts +0 -2
  82. package/dist/__tests__/schemas.test.d.ts.map +0 -1
  83. package/dist/__tests__/schemas.test.js +0 -518
  84. package/dist/__tests__/schemas.test.js.map +0 -1
  85. package/dist/__tests__/selectors.test.d.ts +0 -2
  86. package/dist/__tests__/selectors.test.d.ts.map +0 -1
  87. package/dist/__tests__/selectors.test.js +0 -157
  88. package/dist/__tests__/selectors.test.js.map +0 -1
  89. package/dist/__tests__/session.test.d.ts +0 -2
  90. package/dist/__tests__/session.test.d.ts.map +0 -1
  91. package/dist/__tests__/session.test.js +0 -325
  92. package/dist/__tests__/session.test.js.map +0 -1
  93. package/dist/__tests__/stealth.test.d.ts +0 -2
  94. package/dist/__tests__/stealth.test.d.ts.map +0 -1
  95. package/dist/__tests__/stealth.test.js +0 -353
  96. package/dist/__tests__/stealth.test.js.map +0 -1
  97. package/dist/__tests__/vision.test.d.ts +0 -2
  98. package/dist/__tests__/vision.test.d.ts.map +0 -1
  99. package/dist/__tests__/vision.test.js +0 -226
  100. package/dist/__tests__/vision.test.js.map +0 -1
package/dist/session.js CHANGED
@@ -9,13 +9,30 @@ const DEFAULT_STEALTH_CONFIG = {
9
9
  blockWebDriver: true,
10
10
  evasionScripts: [],
11
11
  };
12
+ function toPlaywrightCookies(cookies) {
13
+ return cookies.map((cookie) => cookie.domain && !cookie.path ? { ...cookie, path: '/' } : cookie);
14
+ }
15
+ function isCookieRecord(value) {
16
+ if (typeof value !== 'object' || value === null)
17
+ return false;
18
+ const record = value;
19
+ if (typeof record.name !== 'string' || typeof record.value !== 'string')
20
+ return false;
21
+ return typeof record.url === 'string' || typeof record.domain === 'string';
22
+ }
12
23
  export class BrowserSession {
13
24
  _config;
14
25
  _browser = null;
15
26
  _context = null;
16
27
  _pages = [];
17
28
  _activePageIndex = 0;
29
+ _starting = null;
30
+ _startListeners = new Set();
18
31
  constructor(config) {
32
+ const maxPages = config?.pool?.maxPages;
33
+ if (maxPages !== undefined && (!Number.isInteger(maxPages) || maxPages < 1)) {
34
+ throw new Error(`pool.maxPages must be a positive integer, got ${maxPages}`);
35
+ }
19
36
  this._config = {
20
37
  headless: true,
21
38
  browser: 'chromium',
@@ -28,6 +45,9 @@ export class BrowserSession {
28
45
  get config() {
29
46
  return this._config;
30
47
  }
48
+ get started() {
49
+ return this._context !== null;
50
+ }
31
51
  get stealthEnabled() {
32
52
  return !!this._config.stealth;
33
53
  }
@@ -36,22 +56,21 @@ export class BrowserSession {
36
56
  return null;
37
57
  if (this._config.stealth === true)
38
58
  return { ...DEFAULT_STEALTH_CONFIG };
39
- return this._config.stealth;
59
+ return { ...DEFAULT_STEALTH_CONFIG, ...this._config.stealth };
40
60
  }
41
61
  async ensureStarted() {
42
- if (!this._browser)
43
- await this.start();
62
+ if (this._context)
63
+ return;
64
+ if (this._starting) {
65
+ await this._starting;
66
+ return;
67
+ }
68
+ await this.start();
44
69
  }
45
70
  get page() {
71
+ this._pruneClosedPages();
46
72
  if (!this._pages.length) {
47
- throw new Error('BrowserSession not started');
48
- }
49
- if (this._pages[this._activePageIndex].isClosed()) {
50
- const openIdx = this._pages.findIndex((p) => !p.isClosed());
51
- if (openIdx === -1) {
52
- throw new Error('All pages are closed');
53
- }
54
- this._activePageIndex = openIdx;
73
+ throw new Error(this._context ? 'All pages are closed' : 'BrowserSession not started');
55
74
  }
56
75
  return this._pages[this._activePageIndex];
57
76
  }
@@ -59,69 +78,53 @@ export class BrowserSession {
59
78
  this._pruneClosedPages();
60
79
  return [...this._pages];
61
80
  }
81
+ get activeTabIndex() {
82
+ this._pruneClosedPages();
83
+ return this._activePageIndex;
84
+ }
62
85
  get browser() {
63
86
  return this._browser;
64
87
  }
65
88
  get context() {
66
89
  return this._context;
67
90
  }
91
+ onStart(listener) {
92
+ this._startListeners.add(listener);
93
+ if (this._context)
94
+ listener(this._context);
95
+ return () => {
96
+ this._startListeners.delete(listener);
97
+ };
98
+ }
68
99
  async start() {
69
- if (this._browser) {
100
+ if (this._context || this._starting) {
70
101
  throw new Error('Session already started. Call close() first.');
71
102
  }
72
- const pw = await import('playwright');
73
- const launchOptions = {
74
- headless: this._config.headless,
75
- };
76
- if (this._config.proxy) {
77
- launchOptions.proxy = this._resolveProxy(this._config.proxy);
78
- }
79
- const browserType = this._config.browser ?? 'chromium';
80
- this._browser = await pw[browserType].launch(launchOptions);
81
- const contextOptions = {
82
- viewport: this._config.viewport,
83
- };
84
- if (this._config.locale)
85
- contextOptions.locale = this._config.locale;
86
- if (this._config.timezone)
87
- contextOptions.timezoneId = this._config.timezone;
88
- if (this._config.geolocation) {
89
- contextOptions.geolocation = this._config.geolocation;
90
- contextOptions.permissions = ['geolocation'];
91
- }
92
- if (this._config.userAgent) {
93
- contextOptions.userAgent = this._config.userAgent;
94
- }
95
- else if (this.stealthEnabled) {
96
- Object.assign(contextOptions, getStealthLaunchOptions(this.stealthConfig, browserType));
97
- }
98
- this._context = await this._browser.newContext(contextOptions);
99
- if (this.stealthEnabled) {
100
- await applyStealthToContext(this._context, this.stealthConfig);
103
+ this._starting = this._launch();
104
+ try {
105
+ await this._starting;
101
106
  }
102
- this._context.setDefaultNavigationTimeout(this._config.timeout);
103
- this._context.setDefaultTimeout(this._config.actionTimeout);
104
- const firstPage = await this._context.newPage();
105
- this._pages = [firstPage];
106
- this._activePageIndex = 0;
107
- if (this._config.cookies?.length) {
108
- await this._context.addCookies(this._config.cookies);
107
+ finally {
108
+ this._starting = null;
109
109
  }
110
110
  }
111
111
  async newTab(url) {
112
112
  if (!this._context) {
113
113
  throw new Error('BrowserSession not started');
114
114
  }
115
+ const maxPages = this._config.pool?.maxPages;
116
+ if (maxPages !== undefined && this.tabs.length >= maxPages) {
117
+ throw new Error(`Tab limit reached: pool.maxPages is ${maxPages}`);
118
+ }
115
119
  const page = await this._context.newPage();
116
- this._pages.push(page);
117
- this._activePageIndex = this._pages.length - 1;
120
+ this._trackPage(page);
121
+ this._activePageIndex = this._pages.indexOf(page);
118
122
  if (url) {
119
123
  try {
120
124
  await page.goto(url, { timeout: this._config.timeout });
121
125
  }
122
126
  catch (error) {
123
- this._pages.splice(this._pages.indexOf(page), 1);
124
- this._activePageIndex = Math.max(0, this._pages.length - 1);
127
+ this._untrackPage(page);
125
128
  await page.close().catch(() => undefined);
126
129
  throw error;
127
130
  }
@@ -129,27 +132,20 @@ export class BrowserSession {
129
132
  return page;
130
133
  }
131
134
  switchTab(index) {
132
- if (index < 0 || index >= this._pages.length) {
133
- throw new Error(`Tab index ${index} out of range [0..${this._pages.length - 1}]`);
134
- }
135
+ this._pruneClosedPages();
136
+ this._assertTabIndex(index);
135
137
  this._activePageIndex = index;
136
138
  }
137
139
  async closeTab(index) {
140
+ this._pruneClosedPages();
138
141
  const idx = index ?? this._activePageIndex;
139
142
  if (this._pages.length <= 1) {
140
143
  throw new Error('Cannot close the last tab');
141
144
  }
142
- if (idx < 0 || idx >= this._pages.length) {
143
- throw new Error(`Tab index ${idx} out of range [0..${this._pages.length - 1}]`);
144
- }
145
- await this._pages[idx].close();
146
- this._pages.splice(idx, 1);
147
- if (this._activePageIndex >= this._pages.length) {
148
- this._activePageIndex = this._pages.length - 1;
149
- }
150
- else if (this._activePageIndex > idx) {
151
- this._activePageIndex--;
152
- }
145
+ this._assertTabIndex(idx);
146
+ const page = this._pages[idx];
147
+ await page.close();
148
+ this._untrackPage(page);
153
149
  }
154
150
  async getCookies() {
155
151
  if (!this._context) {
@@ -161,7 +157,7 @@ export class BrowserSession {
161
157
  if (!this._context) {
162
158
  throw new Error('BrowserSession not started');
163
159
  }
164
- await this._context.addCookies(cookies);
160
+ await this._context.addCookies(toPlaywrightCookies(cookies));
165
161
  }
166
162
  async saveCookies(filePath) {
167
163
  const { writeFile } = await import('node:fs/promises');
@@ -172,32 +168,133 @@ export class BrowserSession {
172
168
  const { readFile } = await import('node:fs/promises');
173
169
  const data = await readFile(filePath, 'utf-8');
174
170
  const parsed = JSON.parse(data);
175
- const cookies = parsed.filter((c) => {
176
- if (typeof c !== 'object' || c === null)
177
- return false;
178
- const record = c;
179
- if (typeof record.name !== 'string' || typeof record.value !== 'string')
180
- return false;
181
- return typeof record.url === 'string' || typeof record.domain === 'string';
182
- });
183
- await this.setCookies(cookies);
171
+ if (!Array.isArray(parsed)) {
172
+ throw new Error(`Cookie file ${filePath} must contain a JSON array of cookies`);
173
+ }
174
+ await this.setCookies(parsed.filter(isCookieRecord));
184
175
  }
185
176
  async close() {
186
- if (!this._browser)
177
+ if (this._starting) {
178
+ await this._starting.catch(() => undefined);
179
+ }
180
+ const browser = this._browser;
181
+ const context = this._context;
182
+ if (!browser && !context)
187
183
  return;
188
- try {
189
- await this._browser.close();
184
+ this._reset();
185
+ if (browser) {
186
+ await browser.close();
190
187
  }
191
- finally {
192
- this._browser = null;
193
- this._context = null;
194
- this._pages = [];
195
- this._activePageIndex = 0;
188
+ else if (context) {
189
+ await context.close();
196
190
  }
197
191
  }
198
192
  async [Symbol.asyncDispose]() {
199
193
  await this.close();
200
194
  }
195
+ async _launch() {
196
+ const pw = await import('playwright');
197
+ const browserType = this._config.browser;
198
+ const launcher = pw[browserType];
199
+ const stealth = this.stealthConfig;
200
+ const launchOptions = { headless: this._config.headless };
201
+ if (this._config.proxy) {
202
+ launchOptions.proxy = this._resolveProxy(this._config.proxy);
203
+ }
204
+ const contextOptions = { viewport: this._config.viewport };
205
+ if (this._config.locale)
206
+ contextOptions.locale = this._config.locale;
207
+ if (this._config.timezone)
208
+ contextOptions.timezoneId = this._config.timezone;
209
+ if (this._config.geolocation) {
210
+ contextOptions.geolocation = this._config.geolocation;
211
+ contextOptions.permissions = ['geolocation'];
212
+ }
213
+ if (this._config.userAgent) {
214
+ contextOptions.userAgent = this._config.userAgent;
215
+ }
216
+ else if (stealth) {
217
+ Object.assign(contextOptions, getStealthLaunchOptions(stealth, browserType));
218
+ }
219
+ let browser = null;
220
+ let context = null;
221
+ try {
222
+ if (this._config.persistentContext) {
223
+ context = await launcher.launchPersistentContext(this._config.persistentContext, {
224
+ ...launchOptions,
225
+ ...contextOptions,
226
+ });
227
+ }
228
+ else {
229
+ browser = await launcher.launch(launchOptions);
230
+ context = await browser.newContext(contextOptions);
231
+ }
232
+ if (stealth) {
233
+ await applyStealthToContext(context, stealth, {
234
+ userAgent: contextOptions.userAgent,
235
+ locale: contextOptions.locale,
236
+ });
237
+ }
238
+ context.setDefaultNavigationTimeout(this._config.timeout);
239
+ context.setDefaultTimeout(this._config.actionTimeout);
240
+ if (this._config.cookies?.length) {
241
+ await context.addCookies(toPlaywrightCookies(this._config.cookies));
242
+ }
243
+ const existingPages = context.pages();
244
+ const initialPages = existingPages.length ? existingPages : [await context.newPage()];
245
+ this._browser = browser;
246
+ this._context = context;
247
+ this._pages = [...initialPages];
248
+ this._activePageIndex = 0;
249
+ const activeContext = context;
250
+ activeContext.on('page', (page) => {
251
+ if (this._context === activeContext)
252
+ this._trackPage(page);
253
+ });
254
+ activeContext.on('close', () => {
255
+ if (this._context === activeContext)
256
+ this._reset();
257
+ });
258
+ for (const listener of this._startListeners) {
259
+ listener(activeContext);
260
+ }
261
+ }
262
+ catch (error) {
263
+ this._reset();
264
+ if (browser) {
265
+ await browser.close().catch(() => undefined);
266
+ }
267
+ else if (context) {
268
+ await context.close().catch(() => undefined);
269
+ }
270
+ throw error;
271
+ }
272
+ }
273
+ _reset() {
274
+ this._browser = null;
275
+ this._context = null;
276
+ this._pages = [];
277
+ this._activePageIndex = 0;
278
+ }
279
+ _trackPage(page) {
280
+ if (!this._pages.includes(page)) {
281
+ this._pages.push(page);
282
+ }
283
+ }
284
+ _untrackPage(page) {
285
+ const idx = this._pages.indexOf(page);
286
+ if (idx === -1)
287
+ return;
288
+ this._pages.splice(idx, 1);
289
+ if (this._activePageIndex > idx || this._activePageIndex >= this._pages.length) {
290
+ this._activePageIndex = Math.max(0, this._activePageIndex - 1);
291
+ }
292
+ }
293
+ _assertTabIndex(index) {
294
+ if (!Number.isInteger(index) || index < 0 || index >= this._pages.length) {
295
+ throw new Error(`Tab index ${index} out of range [0..${this._pages.length - 1}]`);
296
+ }
297
+ }
201
298
  _pruneClosedPages() {
202
299
  if (!this._pages.some((p) => p.isClosed()))
203
300
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export interface EvasionScriptsOptions {
2
2
  blockWebDriver?: boolean;
3
3
  fingerprintRandomization?: boolean;
4
+ userAgent?: string;
5
+ locale?: string;
4
6
  }
5
7
  export declare function getEvasionScripts(options?: EvasionScriptsOptions): string[];
6
8
  //# sourceMappingURL=evasions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evasions.d.ts","sourceRoot":"","sources":["../../src/stealth/evasions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AA4HD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,EAAE,CAiB/E"}
1
+ {"version":3,"file":"evasions.d.ts","sourceRoot":"","sources":["../../src/stealth/evasions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmKD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,EAAE,CAsB/E"}
@@ -1,5 +1,6 @@
1
- const WEBDRIVER_EVASION = `Object.defineProperty(navigator, 'webdriver', { get: () => false });`;
2
- const PLUGINS_EVASION = `Object.defineProperty(navigator, 'plugins', {
1
+ const WEBDRIVER_EVASION = `Object.defineProperty(Navigator.prototype, 'webdriver', { get: () => false, configurable: true });`;
2
+ const PLUGINS_EVASION = `Object.defineProperty(Navigator.prototype, 'plugins', {
3
+ configurable: true,
3
4
  get: () => {
4
5
  const pluginData = [
5
6
  { name: 'Chrome PDF Plugin', filename: 'internal-pdf-viewer', description: 'Portable Document Format' },
@@ -21,7 +22,50 @@ const PLUGINS_EVASION = `Object.defineProperty(navigator, 'plugins', {
21
22
  return pluginArray;
22
23
  }
23
24
  });`;
24
- const LANGUAGES_EVASION = `Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] });`;
25
+ function languagesForLocale(locale) {
26
+ if (!locale)
27
+ return ['en-US', 'en'];
28
+ const base = locale.split('-')[0];
29
+ return base && base !== locale ? [locale, base] : [locale];
30
+ }
31
+ function createLanguagesEvasion(locale) {
32
+ return `{
33
+ const languages = Object.freeze(${JSON.stringify(languagesForLocale(locale))});
34
+ Object.defineProperty(Navigator.prototype, 'languages', { get: () => languages, configurable: true });
35
+ }`;
36
+ }
37
+ function platformForUserAgent(userAgent) {
38
+ if (userAgent.includes('iPhone'))
39
+ return { platform: 'iPhone', uaPlatform: 'iOS' };
40
+ if (userAgent.includes('iPad'))
41
+ return { platform: 'iPad', uaPlatform: 'iOS' };
42
+ if (userAgent.includes('Windows'))
43
+ return { platform: 'Win32', uaPlatform: 'Windows' };
44
+ if (userAgent.includes('Android'))
45
+ return { platform: 'Linux armv8l', uaPlatform: 'Android' };
46
+ if (/Macintosh|Mac OS X/.test(userAgent))
47
+ return { platform: 'MacIntel', uaPlatform: 'macOS' };
48
+ if (/Linux|X11/.test(userAgent))
49
+ return { platform: 'Linux x86_64', uaPlatform: 'Linux' };
50
+ return null;
51
+ }
52
+ function createPlatformEvasion(userAgent) {
53
+ const target = platformForUserAgent(userAgent);
54
+ if (!target)
55
+ return null;
56
+ return `{
57
+ const platform = ${JSON.stringify(target.platform)};
58
+ const uaPlatform = ${JSON.stringify(target.uaPlatform)};
59
+ Object.defineProperty(Navigator.prototype, 'platform', { get: () => platform, configurable: true });
60
+ if (typeof NavigatorUAData !== 'undefined') {
61
+ Object.defineProperty(NavigatorUAData.prototype, 'platform', { get: () => uaPlatform, configurable: true });
62
+ const getHighEntropyValues = NavigatorUAData.prototype.getHighEntropyValues;
63
+ NavigatorUAData.prototype.getHighEntropyValues = function(hints) {
64
+ return getHighEntropyValues.call(this, hints).then((values) => ({ ...values, platform: uaPlatform }));
65
+ };
66
+ }
67
+ }`;
68
+ }
25
69
  const WEBGL_EVASION = `{
26
70
  const getParameter = WebGLRenderingContext.prototype.getParameter;
27
71
  WebGLRenderingContext.prototype.getParameter = function(param) {
@@ -117,12 +161,16 @@ export function getEvasionScripts(options = {}) {
117
161
  const evasions = [
118
162
  { kind: 'webdriver', script: WEBDRIVER_EVASION },
119
163
  { kind: 'fingerprint', script: PLUGINS_EVASION },
120
- { kind: 'fingerprint', script: LANGUAGES_EVASION },
164
+ { kind: 'fingerprint', script: createLanguagesEvasion(options.locale) },
121
165
  { kind: 'fingerprint', script: createCanvasEvasion() },
122
166
  { kind: 'fingerprint', script: WEBGL_EVASION },
123
167
  { kind: 'fingerprint', script: CHROME_EVASION },
124
168
  { kind: 'webdriver', script: PERMISSIONS_EVASION },
125
169
  ];
170
+ const platformEvasion = options.userAgent ? createPlatformEvasion(options.userAgent) : null;
171
+ if (platformEvasion) {
172
+ evasions.push({ kind: 'fingerprint', script: platformEvasion });
173
+ }
126
174
  return evasions
127
175
  .filter((evasion) => (evasion.kind === 'webdriver' ? includeWebdriver : includeFingerprint))
128
176
  .map((evasion) => evasion.script);
@@ -1 +1 @@
1
- {"version":3,"file":"evasions.js","sourceRoot":"","sources":["../../src/stealth/evasions.ts"],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG,sEAAsE,CAAC;AAEjG,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;IAqBpB,CAAC;AAEL,MAAM,iBAAiB,GAAG,gFAAgF,CAAC;AAE3G,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;EAepB,CAAC;AAEH,MAAM,cAAc,GAAG;;;;;;EAMrB,CAAC;AAEH,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;EAe1B,CAAC;AAEH,SAAS,mBAAmB;IAC1B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO;;4BAEmB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4C9B,CAAC;AACH,CAAC;AAID,MAAM,UAAU,iBAAiB,CAAC,UAAiC,EAAE;IACnE,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,KAAK,KAAK,CAAC;IAC1D,MAAM,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,KAAK,KAAK,CAAC;IAEtE,MAAM,QAAQ,GAAiD;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE;QAChD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE;QAChD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE;QAClD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE;QACtD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE;QAC9C,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE;QAC/C,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE;KACnD,CAAC;IAEF,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;SAC3F,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"evasions.js","sourceRoot":"","sources":["../../src/stealth/evasions.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,29 @@
1
- import type { Page } from 'playwright';
1
+ import type { Locator, Page } from 'playwright';
2
+ import type { MouseButton, ScrollDirection } from '@cogitator-ai/types';
2
3
  export interface HumanLikeClickOptions {
3
4
  from?: {
4
5
  x: number;
5
6
  y: number;
6
7
  };
8
+ button?: MouseButton;
9
+ clickCount?: number;
10
+ position?: {
11
+ x: number;
12
+ y: number;
13
+ };
14
+ }
15
+ export interface HumanLikeHoverOptions {
16
+ from?: {
17
+ x: number;
18
+ y: number;
19
+ };
20
+ position?: {
21
+ x: number;
22
+ y: number;
23
+ };
7
24
  }
8
25
  export declare function humanLikeType(page: Page, selector: string, text: string): Promise<void>;
9
- export declare function humanLikeClick(page: Page, selector: string, options?: HumanLikeClickOptions): Promise<void>;
10
- export declare function humanLikeScroll(page: Page, direction: 'up' | 'down', amount: number): Promise<void>;
26
+ export declare function humanLikeClick(page: Page, target: string | Locator, options?: HumanLikeClickOptions): Promise<void>;
27
+ export declare function humanLikeHover(page: Page, target: string | Locator, options?: HumanLikeHoverOptions): Promise<void>;
28
+ export declare function humanLikeScroll(page: Page, direction: ScrollDirection, amount: number): Promise<void>;
11
29
  //# sourceMappingURL=human-like.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"human-like.d.ts","sourceRoot":"","sources":["../../src/stealth/human-like.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AA0BD,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7F;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAUf"}
1
+ {"version":3,"file":"human-like.d.ts","sourceRoot":"","sources":["../../src/stealth/human-like.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAuED,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7F;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAYf"}