cloakbrowser 0.3.19 → 0.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  Drop-in Playwright/Puppeteer replacement. Same API, same code — just swap the import. **3 lines of code, 30 seconds to unblock.**
13
13
 
14
- - **33 source-level C++ patches** — canvas, WebGL, audio, fonts, GPU, screen, automation signals
14
+ - **48 source-level C++ patches** — canvas, WebGL, audio, fonts, GPU, screen, WebRTC, network timing, automation signals
15
15
  - **0.9 reCAPTCHA v3 score** — human-level, server-verified
16
16
  - **Passes Cloudflare Turnstile**, FingerprintJS, BrowserScan — tested against 30+ detection sites
17
17
  - **`npm install cloakbrowser`** — binary auto-downloads, auto-updates, zero config
@@ -203,11 +203,11 @@ const page = await browser.newPage();
203
203
 
204
204
  | Platform | Chromium | Patches | Status |
205
205
  |---|---|---|---|
206
- | Linux x86_64 | 145 | 33 | ✅ Latest |
207
- | Linux arm64 (RPi, Graviton) | 145 | 33 | ✅ Latest |
206
+ | Linux x86_64 | 145 | 48 | ✅ Latest |
207
+ | Linux arm64 (RPi, Graviton) | 145 | 48 | ✅ Latest |
208
208
  | macOS arm64 (Apple Silicon) | 145 | 26 | ✅ Latest |
209
209
  | macOS x86_64 (Intel) | 145 | 26 | ✅ Latest |
210
- | Windows x86_64 | 145 | 33 | ✅ Latest |
210
+ | Windows x86_64 | 145 | 48 | ✅ Latest |
211
211
 
212
212
  ## Requirements
213
213
 
package/dist/config.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
  declare let WRAPPER_VERSION: string;
6
6
  export { WRAPPER_VERSION };
7
- export declare const CHROMIUM_VERSION = "145.0.7632.159.8";
7
+ export declare const CHROMIUM_VERSION = "145.0.7632.159.9";
8
8
  export declare const PLATFORM_CHROMIUM_VERSIONS: Record<string, string>;
9
9
  export declare function getChromiumVersion(): string;
10
10
  export declare function getPlatformTag(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,QAAA,IAAI,eAAe,QAAU,CAAC;AAU9B,OAAO,EAAE,eAAe,EAAE,CAAC;AAQ3B,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAC;AAgBF,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAmBvC;AAKD,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAStD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C;AAKD,eAAO,MAAM,iBAAiB,QAEF,CAAC;AAE7B,eAAO,MAAM,cAAc,+DACmC,CAAC;AAE/D,eAAO,MAAM,wBAAwB,8DACwB,CAAC;AAE9D,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAqB5C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAKD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAE3D;AAQD,eAAO,MAAM,mBAAmB,UAAyD,CAAC;AAQ1F,eAAO,MAAM,gBAAgB;;;CAA+B,CAAC;AAE7D,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CA6BhD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,QAAA,IAAI,eAAe,QAAU,CAAC;AAU9B,OAAO,EAAE,eAAe,EAAE,CAAC;AAQ3B,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAC;AAgBF,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAmBvC;AAKD,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAStD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C;AAKD,eAAO,MAAM,iBAAiB,QAEF,CAAC;AAE7B,eAAO,MAAM,cAAc,+DACmC,CAAC;AAE/D,eAAO,MAAM,wBAAwB,8DACwB,CAAC;AAE9D,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAqB5C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAKD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAE3D;AAQD,eAAO,MAAM,mBAAmB,UAAyD,CAAC;AAQ1F,eAAO,MAAM,gBAAgB;;;CAA+B,CAAC;AAE7D,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAkBhD"}
package/dist/config.js CHANGED
@@ -25,9 +25,9 @@ export { WRAPPER_VERSION };
25
25
  // CHROMIUM_VERSION is the latest across all platforms (for display/reference).
26
26
  // Use getChromiumVersion() for the current platform's actual version.
27
27
  // ---------------------------------------------------------------------------
28
- export const CHROMIUM_VERSION = "145.0.7632.159.8";
28
+ export const CHROMIUM_VERSION = "145.0.7632.159.9";
29
29
  export const PLATFORM_CHROMIUM_VERSIONS = {
30
- "linux-x64": "145.0.7632.159.8",
30
+ "linux-x64": "145.0.7632.159.9",
31
31
  "linux-arm64": "145.0.7632.159.7",
32
32
  "darwin-arm64": "145.0.7632.109.2",
33
33
  "darwin-x64": "145.0.7632.109.2",
@@ -185,26 +185,15 @@ export function getDefaultStealthArgs() {
185
185
  const isMac = process.platform === "darwin";
186
186
  const base = [
187
187
  "--no-sandbox",
188
- "--disable-blink-features=AutomationControlled",
189
188
  `--fingerprint=${seed}`,
190
189
  ];
191
190
  if (isMac) {
192
191
  // macOS: run as native Mac browser — GPU/UA match natively
193
- return [
194
- ...base,
195
- "--fingerprint-platform=macos",
196
- "--fingerprint-gpu-vendor=Google Inc. (Apple)",
197
- "--fingerprint-gpu-renderer=ANGLE (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)",
198
- ];
192
+ return [...base, "--fingerprint-platform=macos"];
199
193
  }
200
194
  // Linux/Windows: spoof as Windows desktop
201
- // Hardware concurrency, device memory, screen, and window size are
195
+ // Hardware concurrency, device memory, screen, window size, and GPU are
202
196
  // auto-generated by the binary from the seed (v14+).
203
- return [
204
- ...base,
205
- "--fingerprint-platform=windows",
206
- "--fingerprint-gpu-vendor=Google Inc. (NVIDIA)",
207
- "--fingerprint-gpu-renderer=ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 (0x00002484) Direct3D11 vs_5_0 ps_5_0, D3D11)",
208
- ];
197
+ return [...base, "--fingerprint-platform=windows"];
209
198
  }
210
199
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/geoip.d.ts CHANGED
@@ -13,6 +13,7 @@ export declare const COUNTRY_LOCALE_MAP: Record<string, string>;
13
13
  export interface GeoResult {
14
14
  timezone: string | null;
15
15
  locale: string | null;
16
+ exitIp: string | null;
16
17
  }
17
18
  /**
18
19
  * Resolve timezone and locale from a proxy's IP address.
@@ -24,10 +25,16 @@ export declare function resolveProxyGeo(proxyUrl: string): Promise<GeoResult>;
24
25
  export declare function resolveProxyIp(proxyUrl: string): Promise<string | null>;
25
26
  /**
26
27
  * Auto-fill timezone/locale from proxy IP when geoip is enabled.
27
- * Shared by the Playwright and Puppeteer wrappers.
28
+ * Also returns exitIp as a free bonus (reused for WebRTC spoofing).
28
29
  */
29
30
  export declare function maybeResolveGeoip(options: LaunchOptions): Promise<{
30
31
  timezone?: string;
31
32
  locale?: string;
33
+ exitIp?: string;
32
34
  }>;
35
+ /**
36
+ * Replace --fingerprint-webrtc-ip=auto with the resolved proxy exit IP.
37
+ * Returns args unchanged if no ``auto`` value is present.
38
+ */
39
+ export declare function resolveWebrtcArgs(options: LaunchOptions): Promise<string[] | undefined>;
33
40
  //# sourceMappingURL=geoip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"geoip.d.ts","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShD,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAerD,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,CA+BpB;AAMD,sCAAsC;AACtC,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AA2JD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAYjD"}
1
+ {"version":3,"file":"geoip.d.ts","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShD,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAerD,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,CA+BpB;AAMD,sCAAsC;AACtC,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AA2JD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBlE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA4B/B"}
package/dist/geoip.js CHANGED
@@ -51,13 +51,13 @@ export async function resolveProxyGeo(proxyUrl) {
51
51
  }
52
52
  const dbPath = await ensureGeoipDb();
53
53
  if (!dbPath)
54
- return { timezone: null, locale: null };
54
+ return { timezone: null, locale: null, exitIp: null };
55
55
  // Exit IP (through proxy) is most accurate — gateway DNS may differ from exit
56
56
  let ip = await resolveExitIp(proxyUrl);
57
57
  if (!ip)
58
58
  ip = await resolveProxyIp(proxyUrl);
59
59
  if (!ip)
60
- return { timezone: null, locale: null };
60
+ return { timezone: null, locale: null, exitIp: null };
61
61
  try {
62
62
  const buf = fs.readFileSync(dbPath);
63
63
  const reader = new Reader(buf);
@@ -65,10 +65,10 @@ export async function resolveProxyGeo(proxyUrl) {
65
65
  const timezone = result?.location?.time_zone ?? null;
66
66
  const countryCode = result?.country?.iso_code ?? null;
67
67
  const locale = countryCode ? (COUNTRY_LOCALE_MAP[countryCode] ?? null) : null;
68
- return { timezone, locale };
68
+ return { timezone, locale, exitIp: ip };
69
69
  }
70
70
  catch {
71
- return { timezone: null, locale: null };
71
+ return { timezone: null, locale: null, exitIp: ip };
72
72
  }
73
73
  }
74
74
  // ---------------------------------------------------------------------------
@@ -233,21 +233,61 @@ function maybeTriggerUpdate(dbPath) {
233
233
  }
234
234
  /**
235
235
  * Auto-fill timezone/locale from proxy IP when geoip is enabled.
236
- * Shared by the Playwright and Puppeteer wrappers.
236
+ * Also returns exitIp as a free bonus (reused for WebRTC spoofing).
237
237
  */
238
238
  export async function maybeResolveGeoip(options) {
239
239
  if (!options.geoip || !options.proxy)
240
240
  return { timezone: options.timezone, locale: options.locale };
241
- if (options.timezone && options.locale)
242
- return { timezone: options.timezone, locale: options.locale };
243
241
  let proxyUrl = typeof options.proxy === "string" ? options.proxy : options.proxy.server;
244
242
  if (!proxyUrl)
245
243
  return { timezone: options.timezone, locale: options.locale };
246
244
  proxyUrl = ensureProxyScheme(proxyUrl);
247
- const { timezone: geoTz, locale: geoLocale } = await resolveProxyGeo(proxyUrl);
245
+ // When both tz/locale are explicit, still resolve exit IP for WebRTC
246
+ if (options.timezone && options.locale) {
247
+ const exitIp = await resolveExitIp(proxyUrl) ?? undefined;
248
+ return { timezone: options.timezone, locale: options.locale, exitIp };
249
+ }
250
+ const { timezone: geoTz, locale: geoLocale, exitIp: geoExitIp } = await resolveProxyGeo(proxyUrl);
251
+ const exitIp = geoExitIp ?? undefined;
248
252
  return {
249
253
  timezone: options.timezone ?? geoTz ?? undefined,
250
254
  locale: options.locale ?? geoLocale ?? undefined,
255
+ exitIp,
251
256
  };
252
257
  }
258
+ /**
259
+ * Replace --fingerprint-webrtc-ip=auto with the resolved proxy exit IP.
260
+ * Returns args unchanged if no ``auto`` value is present.
261
+ */
262
+ export async function resolveWebrtcArgs(options) {
263
+ const args = options.args;
264
+ if (!args)
265
+ return args;
266
+ const idx = args.findIndex(a => a === "--fingerprint-webrtc-ip=auto");
267
+ if (idx === -1)
268
+ return args;
269
+ let proxyUrl = typeof options.proxy === "string" ? options.proxy : options.proxy?.server;
270
+ if (!proxyUrl) {
271
+ const result = [...args];
272
+ result.splice(idx, 1);
273
+ return result;
274
+ }
275
+ proxyUrl = ensureProxyScheme(proxyUrl);
276
+ try {
277
+ const ip = await resolveExitIp(proxyUrl);
278
+ const result = [...args];
279
+ if (ip) {
280
+ result[idx] = `--fingerprint-webrtc-ip=${ip}`;
281
+ }
282
+ else {
283
+ result.splice(idx, 1);
284
+ }
285
+ return result;
286
+ }
287
+ catch {
288
+ const result = [...args];
289
+ result.splice(idx, 1);
290
+ return result;
291
+ }
292
+ }
253
293
  //# sourceMappingURL=geoip.js.map
package/dist/geoip.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"geoip.js","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geoip.js","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,iEAAiE;AACjE,MAAM,YAAY,GAChB,wEAAwE,CAAC;AAC3E,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAC/C,MAAM,wBAAwB,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,UAAU;AAE5D,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IAC/D,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IACrC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IACrC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IACxB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IAC/D,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IACxB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IACxB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IAC/D,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IAC/D,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IAC/D,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IACrC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IACrC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IAClD,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;CACtC,CAAC;AAQF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB;IAEhB,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAEnE,8EAA8E;IAC9E,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE;QAAE,EAAE,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAQ,CAAC;QACrC,MAAM,QAAQ,GAAkB,MAAM,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC;QACpE,MAAM,WAAW,GAAkB,MAAM,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;QACrE,MAAM,MAAM,GACV,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,wBAAwB;QACxB,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAExC,cAAc;QACd,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAU;IAC7B,wCAAwC;IACxC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC/E,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;IAChD,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,YAAY,GAAG;IACnB,uBAAuB;IACvB,+BAA+B;IAC/B,wBAAwB;CACzB,CAAC;AAEF,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,+EAA+E;IAC/E,4EAA4E;IAC5E,6CAA6C;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC9D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;oBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC9B,IAAI,EAAE,WAAW,CAAC,QAAQ;wBAC1B,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;wBAC5C,MAAM,EAAE,SAAS;wBACjB,IAAI,EAAE,GAAG,SAAS,CAAC,QAAQ,MAAM;wBACjC,OAAO,EAAE,WAAW,CAAC,QAAQ;4BAC3B,CAAC,CAAC;gCACE,qBAAqB,EACnB,QAAQ;oCACR,MAAM,CAAC,IAAI,CACT,GAAG,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAChG,CAAC,QAAQ,CAAC,QAAQ,CAAC;6BACvB;4BACH,CAAC,CAAC,EAAE;wBACN,OAAO,EAAE,MAAM;qBAChB,CAAC,CAAC;oBAEH,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;wBACxC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CACvB,OAAO,EACP,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAS,EACjC,CAAC,GAAG,EAAE,EAAE;4BACN,IAAI,IAAI,GAAG,EAAE,CAAC;4BACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;4BAC9D,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gCACjB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gCACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BACpC,CAAC,CAAC,CAAC;wBACL,CAAC,CACF,CAAC;wBACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;wBACrC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,CAAC,CAAC,CAAC;oBAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC5C,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;wBAC5B,UAAU,CAAC,OAAO,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;oBACH,UAAU,CAAC,GAAG,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC;gBAEH,IAAI,EAAE;oBAAE,OAAO,EAAE,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAEjD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IAEnE,MAAM,OAAO,GAAG,GAAG,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEzC,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrD,IAAI,GAAG,GAAG,wBAAwB;YAAE,OAAO;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,oCAAoC;IACpC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAsB;IAEtB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAEpG,IAAI,QAAQ,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;IACxF,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC7E,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEvC,qEAAqE;IACrE,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;QAC1D,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IACxE,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,SAAS,IAAI,SAAS,CAAC;IACtC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,IAAI,SAAS;QAChD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS;QAChD,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAsB;IAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,8BAA8B,CAAC,CAAC;IACtE,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,QAAQ,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;IACzF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,CAAC,GAAG,CAAC,GAAG,2BAA2B,EAAE,EAAE,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -4,6 +4,11 @@
4
4
  * Activated via humanize: true in launch() / launchContext().
5
5
  * Patches page methods to use Bezier mouse curves, realistic typing, and smooth scrolling.
6
6
  *
7
+ * Stealth-aware (fixes #110):
8
+ * - isInputElement / isSelectorFocused use CDP Isolated Worlds instead of page.evaluate
9
+ * - Shift symbol typing uses CDP Input.dispatchKeyEvent for isTrusted=true events
10
+ * - Falls back to page.evaluate only when CDP session is unavailable
11
+ *
7
12
  * Patches all interaction methods:
8
13
  * click, dblclick, hover, type, fill, check, uncheck, selectOption,
9
14
  * press, pressSequentially, tap, dragTo, clear + Frame-level equivalents.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAS,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAyC,MAAM,aAAa,CAAC;AAKjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK9C,cAAM,WAAW;IACf,CAAC,SAAK;IACN,CAAC,SAAK;IACN,WAAW,UAAS;CACrB;AAuBD;;GAEG;AACH,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAyP1E;AAwHD,iBAAS,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAmBrE;AAOD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAyBrE;AAED,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAyC,MAAM,aAAa,CAAC;AAKjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4G9C,cAAM,WAAW;IACf,CAAC,SAAK;IACN,CAAC,SAAK;IACN,WAAW,UAAS;CACrB;AA+ED;;GAEG;AACH,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CA4Q1E;AA+HD,iBAAS,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAmBrE;AAOD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAyBrE;AAED,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -4,6 +4,11 @@
4
4
  * Activated via humanize: true in launch() / launchContext().
5
5
  * Patches page methods to use Bezier mouse curves, realistic typing, and smooth scrolling.
6
6
  *
7
+ * Stealth-aware (fixes #110):
8
+ * - isInputElement / isSelectorFocused use CDP Isolated Worlds instead of page.evaluate
9
+ * - Shift symbol typing uses CDP Input.dispatchKeyEvent for isTrusted=true events
10
+ * - Falls back to page.evaluate only when CDP session is unavailable
11
+ *
7
12
  * Patches all interaction methods:
8
13
  * click, dblclick, hover, type, fill, check, uncheck, selectOption,
9
14
  * press, pressSequentially, tap, dragTo, clear + Frame-level equivalents.
@@ -18,12 +23,129 @@ export { humanType } from './keyboard.js';
18
23
  export { scrollToElement } from './scroll.js';
19
24
  // --- Platform-aware select-all shortcut (macOS uses Meta, others use Control) ---
20
25
  const SELECT_ALL = process.platform === 'darwin' ? 'Meta+a' : 'Control+a';
26
+ // ============================================================================
27
+ // CDP Isolated World — stealth DOM evaluation
28
+ // ============================================================================
29
+ /**
30
+ * Manages a CDP isolated execution context for DOM reads.
31
+ * Produces clean Error.stack traces (no 'eval at evaluate :302:')
32
+ * and is invisible to querySelector monkey-patches in the main world.
33
+ *
34
+ * Context ID is invalidated on navigation and auto-recreated on next call.
35
+ */
36
+ class StealthEval {
37
+ cdp = null;
38
+ contextId = null;
39
+ page;
40
+ constructor(page) {
41
+ this.page = page;
42
+ }
43
+ async ensureCdp() {
44
+ if (!this.cdp) {
45
+ this.cdp = await this.page.context().newCDPSession(this.page);
46
+ }
47
+ return this.cdp;
48
+ }
49
+ async createWorld() {
50
+ const cdp = await this.ensureCdp();
51
+ const tree = await cdp.send('Page.getFrameTree');
52
+ const frameId = tree.frameTree.frame.id;
53
+ const result = await cdp.send('Page.createIsolatedWorld', {
54
+ frameId,
55
+ worldName: '',
56
+ grantUniveralAccess: true,
57
+ });
58
+ const ctxId = result.executionContextId;
59
+ this.contextId = ctxId;
60
+ return ctxId;
61
+ }
62
+ /**
63
+ * Evaluate a JS expression in the isolated world.
64
+ * Auto-recreates the world if the context was invalidated (navigation).
65
+ * Returns the result value, or undefined on failure.
66
+ */
67
+ async evaluate(expression) {
68
+ if (this.contextId === null) {
69
+ await this.createWorld();
70
+ }
71
+ for (let attempt = 0; attempt < 2; attempt++) {
72
+ try {
73
+ const cdp = await this.ensureCdp();
74
+ const result = await cdp.send('Runtime.evaluate', {
75
+ expression,
76
+ contextId: this.contextId,
77
+ returnByValue: true,
78
+ });
79
+ if (result.exceptionDetails) {
80
+ // Context was likely invalidated by navigation
81
+ if (attempt === 0) {
82
+ await this.createWorld();
83
+ continue;
84
+ }
85
+ return undefined;
86
+ }
87
+ return result.result?.value;
88
+ }
89
+ catch {
90
+ if (attempt === 0) {
91
+ this.contextId = null;
92
+ try {
93
+ await this.createWorld();
94
+ }
95
+ catch {
96
+ return undefined;
97
+ }
98
+ continue;
99
+ }
100
+ return undefined;
101
+ }
102
+ }
103
+ return undefined;
104
+ }
105
+ /** Mark context as stale — call after navigation. */
106
+ invalidate() {
107
+ this.contextId = null;
108
+ }
109
+ /** Get the underlying CDP session (reused for Input.dispatchKeyEvent etc.). */
110
+ async getCdpSession() {
111
+ return this.ensureCdp();
112
+ }
113
+ }
114
+ // ============================================================================
115
+ // Cursor state
116
+ // ============================================================================
21
117
  class CursorState {
22
118
  x = 0;
23
119
  y = 0;
24
120
  initialized = false;
25
121
  }
26
- async function isInputElement(page, selector) {
122
+ // ============================================================================
123
+ // Stealth DOM queries — isolated world with evaluate fallback
124
+ // ============================================================================
125
+ /**
126
+ * Check if selector matches an input/textarea/contenteditable element.
127
+ * Uses CDP Isolated World when available — invisible to main world.
128
+ */
129
+ async function isInputElement(stealth, page, selector) {
130
+ if (stealth) {
131
+ try {
132
+ const escaped = JSON.stringify(selector);
133
+ const result = await stealth.evaluate(`
134
+ (() => {
135
+ const el = document.querySelector(${escaped});
136
+ if (!el) return false;
137
+ const tag = el.tagName.toLowerCase();
138
+ return tag === 'input' || tag === 'textarea'
139
+ || el.getAttribute('contenteditable') === 'true';
140
+ })()
141
+ `);
142
+ return !!result;
143
+ }
144
+ catch {
145
+ // Fall through to page.evaluate
146
+ }
147
+ }
148
+ // Fallback: page.evaluate (detectable — should only happen if CDP fails)
27
149
  return page.evaluate((sel) => {
28
150
  const el = document.querySelector(sel);
29
151
  if (!el)
@@ -33,7 +155,26 @@ async function isInputElement(page, selector) {
33
155
  || el.getAttribute('contenteditable') === 'true';
34
156
  }, selector).catch(() => false);
35
157
  }
36
- async function isSelectorFocused(page, selector) {
158
+ /**
159
+ * Check if the element matching selector is currently focused.
160
+ * Uses CDP Isolated World when available — invisible to main world.
161
+ */
162
+ async function isSelectorFocused(stealth, page, selector) {
163
+ if (stealth) {
164
+ try {
165
+ const escaped = JSON.stringify(selector);
166
+ const result = await stealth.evaluate(`
167
+ (() => {
168
+ const el = document.querySelector(${escaped});
169
+ return el === document.activeElement;
170
+ })()
171
+ `);
172
+ return !!result;
173
+ }
174
+ catch {
175
+ // Fall through to page.evaluate
176
+ }
177
+ }
37
178
  return page.evaluate((sel) => {
38
179
  const el = document.querySelector(sel);
39
180
  return el === document.activeElement;
@@ -72,6 +213,20 @@ function patchPage(page, cfg, cursor) {
72
213
  };
73
214
  page._original = originals;
74
215
  page._humanCfg = cfg;
216
+ // --- Stealth infrastructure ---
217
+ const stealth = new StealthEval(page);
218
+ page._stealth = stealth;
219
+ // CDP session for shift symbol typing (lazy-initialized, reuses stealth's session)
220
+ let cdpSession = null;
221
+ const ensureCdp = async () => {
222
+ if (!cdpSession) {
223
+ try {
224
+ cdpSession = await stealth.getCdpSession();
225
+ }
226
+ catch { }
227
+ }
228
+ return cdpSession;
229
+ };
75
230
  const raw = {
76
231
  move: originals.mouseMove,
77
232
  down: originals.mouseDown,
@@ -92,11 +247,11 @@ function patchPage(page, cfg, cursor) {
92
247
  cursor.initialized = true;
93
248
  }
94
249
  }
95
- // --- goto ---
250
+ // --- goto (invalidate isolated world on navigation) ---
96
251
  const humanGoto = async (url, options) => {
97
252
  const response = await originals.goto(url, options);
98
- // Patch any new frames after navigation
99
- patchFrames(page, cfg, cursor, raw, rawKb, originals);
253
+ stealth.invalidate();
254
+ patchFrames(page, cfg, cursor, raw, rawKb, originals, stealth);
100
255
  return response;
101
256
  };
102
257
  // --- click ---
@@ -108,7 +263,7 @@ function patchPage(page, cfg, cursor) {
108
263
  const { box, cursorX, cursorY } = await scrollToElement(page, raw, selector, cursor.x, cursor.y, cfg);
109
264
  cursor.x = cursorX;
110
265
  cursor.y = cursorY;
111
- const isInput = await isInputElement(page, selector);
266
+ const isInput = await isInputElement(stealth, page, selector);
112
267
  const target = clickTarget(box, isInput, cfg);
113
268
  await humanMove(raw, cursor.x, cursor.y, target.x, target.y, cfg);
114
269
  cursor.x = target.x;
@@ -124,7 +279,7 @@ function patchPage(page, cfg, cursor) {
124
279
  const { box, cursorX, cursorY } = await scrollToElement(page, raw, selector, cursor.x, cursor.y, cfg);
125
280
  cursor.x = cursorX;
126
281
  cursor.y = cursorY;
127
- const isInput = await isInputElement(page, selector);
282
+ const isInput = await isInputElement(stealth, page, selector);
128
283
  const target = clickTarget(box, isInput, cfg);
129
284
  await humanMove(raw, cursor.x, cursor.y, target.x, target.y, cfg);
130
285
  cursor.x = target.x;
@@ -152,7 +307,8 @@ function patchPage(page, cfg, cursor) {
152
307
  await sleep(randRange(cfg.field_switch_delay));
153
308
  await humanClickFn(selector);
154
309
  await sleep(rand(100, 250));
155
- await humanType(page, rawKb, text, cfg);
310
+ const cdp = await ensureCdp();
311
+ await humanType(page, rawKb, text, cfg, cdp);
156
312
  };
157
313
  // --- fill (clears existing content first) ---
158
314
  const humanFillFn = async (selector, value, options) => {
@@ -163,11 +319,12 @@ function patchPage(page, cfg, cursor) {
163
319
  await sleep(rand(30, 80));
164
320
  await originals.keyboardPress('Backspace');
165
321
  await sleep(rand(50, 150));
166
- await humanType(page, rawKb, value, cfg);
322
+ const cdp = await ensureCdp();
323
+ await humanType(page, rawKb, value, cfg, cdp);
167
324
  };
168
325
  // --- clear ---
169
326
  const humanClearFn = async (selector, options) => {
170
- if (!await isSelectorFocused(page, selector)) {
327
+ if (!await isSelectorFocused(stealth, page, selector)) {
171
328
  await humanClickFn(selector);
172
329
  }
173
330
  await sleep(rand(50, 150));
@@ -203,7 +360,7 @@ function patchPage(page, cfg, cursor) {
203
360
  };
204
361
  // --- press (checks focus first — avoids redundant mouse moves) ---
205
362
  const humanPressFn = async (selector, key, options) => {
206
- if (!await isSelectorFocused(page, selector)) {
363
+ if (!await isSelectorFocused(stealth, page, selector)) {
207
364
  await humanClickFn(selector);
208
365
  }
209
366
  await sleep(rand(50, 150));
@@ -211,11 +368,12 @@ function patchPage(page, cfg, cursor) {
211
368
  };
212
369
  // --- pressSequentially ---
213
370
  const humanPressSequentiallyFn = async (selector, text, options) => {
214
- if (!await isSelectorFocused(page, selector)) {
371
+ if (!await isSelectorFocused(stealth, page, selector)) {
215
372
  await humanClickFn(selector);
216
373
  }
217
374
  await sleep(rand(100, 250));
218
- await humanType(page, rawKb, text, cfg);
375
+ const cdp = await ensureCdp();
376
+ await humanType(page, rawKb, text, cfg, cdp);
219
377
  };
220
378
  // --- tap ---
221
379
  const humanTapFn = async (selector, options) => {
@@ -248,7 +406,8 @@ function patchPage(page, cfg, cursor) {
248
406
  };
249
407
  // --- keyboard patches ---
250
408
  page.keyboard.type = async (text, options) => {
251
- await humanType(page, rawKb, text, cfg);
409
+ const cdp = await ensureCdp();
410
+ await humanType(page, rawKb, text, cfg, cdp);
252
411
  };
253
412
  // Store helpers for frame patching
254
413
  page._humanCursor = cursor;
@@ -269,7 +428,7 @@ function patchPage(page, cfg, cursor) {
269
428
  cursor.initialized = true;
270
429
  }).catch(() => { });
271
430
  // --- Patch Frame-level methods (for sub-frames) ---
272
- patchFrames(page, cfg, cursor, raw, rawKb, originals);
431
+ patchFrames(page, cfg, cursor, raw, rawKb, originals, stealth);
273
432
  }
274
433
  // ============================================================================
275
434
  // Frame-level patching
@@ -279,12 +438,12 @@ function patchPage(page, cfg, cursor) {
279
438
  * All 11 methods patched: click, dblclick, hover, type, fill, check, uncheck,
280
439
  * selectOption, press, clear, dragAndDrop.
281
440
  */
282
- function patchFrames(page, cfg, cursor, raw, rawKb, originals) {
441
+ function patchFrames(page, cfg, cursor, raw, rawKb, originals, stealth) {
283
442
  for (const frame of iterFrames(page)) {
284
- patchSingleFrame(frame, page, cfg, originals);
443
+ patchSingleFrame(frame, page, cfg, originals, stealth);
285
444
  }
286
445
  }
287
- function patchSingleFrame(frame, page, cfg, originals) {
446
+ function patchSingleFrame(frame, page, cfg, originals, stealth) {
288
447
  if (frame._humanPatched)
289
448
  return;
290
449
  frame._humanPatched = true;
@@ -321,7 +480,7 @@ function patchSingleFrame(frame, page, cfg, originals) {
321
480
  await page.press(selector, key, options);
322
481
  };
323
482
  frame.clear = async (selector, options) => {
324
- if (!await isSelectorFocused(page, selector)) {
483
+ if (!await isSelectorFocused(stealth, page, selector)) {
325
484
  await page.click(selector);
326
485
  }
327
486
  await sleep(rand(50, 150));