cloakbrowser 0.3.22 → 0.3.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 (41) hide show
  1. package/README.md +5 -2
  2. package/dist/config.js +2 -2
  3. package/dist/geoip.d.ts.map +1 -1
  4. package/dist/geoip.js +62 -8
  5. package/dist/geoip.js.map +1 -1
  6. package/dist/human/elementhandle.d.ts +30 -0
  7. package/dist/human/elementhandle.d.ts.map +1 -0
  8. package/dist/human/elementhandle.js +317 -0
  9. package/dist/human/elementhandle.js.map +1 -0
  10. package/dist/human/index.d.ts +9 -0
  11. package/dist/human/index.d.ts.map +1 -1
  12. package/dist/human/index.js +25 -2
  13. package/dist/human/index.js.map +1 -1
  14. package/dist/human-puppeteer/index.d.ts +63 -0
  15. package/dist/human-puppeteer/index.d.ts.map +1 -0
  16. package/dist/human-puppeteer/index.js +780 -0
  17. package/dist/human-puppeteer/index.js.map +1 -0
  18. package/dist/human-puppeteer/keyboard.d.ts +16 -0
  19. package/dist/human-puppeteer/keyboard.d.ts.map +1 -0
  20. package/dist/human-puppeteer/keyboard.js +157 -0
  21. package/dist/human-puppeteer/keyboard.js.map +1 -0
  22. package/dist/human-puppeteer/scroll.d.ts +26 -0
  23. package/dist/human-puppeteer/scroll.d.ts.map +1 -0
  24. package/dist/human-puppeteer/scroll.js +130 -0
  25. package/dist/human-puppeteer/scroll.js.map +1 -0
  26. package/dist/playwright.d.ts.map +1 -1
  27. package/dist/playwright.js +7 -9
  28. package/dist/playwright.js.map +1 -1
  29. package/dist/proxy.d.ts +29 -0
  30. package/dist/proxy.d.ts.map +1 -1
  31. package/dist/proxy.js +44 -4
  32. package/dist/proxy.js.map +1 -1
  33. package/dist/puppeteer.d.ts +7 -5
  34. package/dist/puppeteer.d.ts.map +1 -1
  35. package/dist/puppeteer.js +26 -15
  36. package/dist/puppeteer.js.map +1 -1
  37. package/package.json +12 -3
  38. package/dist/stealth-eval.d.ts +0 -40
  39. package/dist/stealth-eval.d.ts.map +0 -1
  40. package/dist/stealth-eval.js +0 -145
  41. package/dist/stealth-eval.js.map +0 -1
package/README.md CHANGED
@@ -63,10 +63,13 @@ await browser.close();
63
63
  ```javascript
64
64
  import { launch, launchContext, launchPersistentContext } from 'cloakbrowser';
65
65
 
66
- // With proxy
66
+ // With proxy (HTTP or SOCKS5)
67
67
  const browser = await launch({
68
68
  proxy: 'http://user:pass@proxy:8080',
69
69
  });
70
+ const browser = await launch({
71
+ proxy: 'socks5://user:pass@proxy:1080',
72
+ });
70
73
 
71
74
  // With proxy object (bypass, separate auth fields)
72
75
  const browser = await launch({
@@ -211,7 +214,7 @@ const page = await browser.newPage();
211
214
 
212
215
  ## Requirements
213
216
 
214
- - Node.js >= 18
217
+ - Node.js >= 20
215
218
  - One of: `playwright-core` >= 1.40 or `puppeteer-core` >= 21
216
219
 
217
220
  ## Troubleshooting
package/dist/config.js CHANGED
@@ -27,8 +27,8 @@ export { WRAPPER_VERSION };
27
27
  // ---------------------------------------------------------------------------
28
28
  export const CHROMIUM_VERSION = "146.0.7680.177.1";
29
29
  export const PLATFORM_CHROMIUM_VERSIONS = {
30
- "linux-x64": "146.0.7680.177.1",
31
- "linux-arm64": "145.0.7632.159.7",
30
+ "linux-x64": "146.0.7680.177.2",
31
+ "linux-arm64": "146.0.7680.177.2",
32
32
  "darwin-arm64": "145.0.7632.109.2",
33
33
  "darwin-x64": "145.0.7632.109.2",
34
34
  "windows-x64": "145.0.7632.159.7",
@@ -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;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"}
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;AA8MD;;;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,CAmBlE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA8B/B"}
package/dist/geoip.js CHANGED
@@ -13,7 +13,7 @@ import { createWriteStream } from "node:fs";
13
13
  import dns from "node:dns/promises";
14
14
  import net from "node:net";
15
15
  import { getCacheDir } from "./config.js";
16
- import { ensureProxyScheme } from "./proxy.js";
16
+ import { ensureProxyScheme, isSocksProxy, reconstructSocksUrl } from "./proxy.js";
17
17
  // P3TERX mirror of MaxMind GeoLite2-City — no license key needed
18
18
  const GEOIP_DB_URL = "https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb";
19
19
  const GEOIP_DB_FILENAME = "GeoLite2-City.mmdb";
@@ -111,9 +111,44 @@ const IP_ECHO_URLS = [
111
111
  "https://ifconfig.me/ip",
112
112
  ];
113
113
  async function resolveExitIp(proxyUrl) {
114
- // Node.js fetch doesn't support proxy natively — use a CONNECT tunnel via http
115
- // For simplicity, use a direct HTTP request to a plain-text IP echo service
116
- // through the proxy using Node's http module
114
+ const isSocks = isSocksProxy(proxyUrl);
115
+ // SOCKS5: tunnel through the SOCKS5 proxy via socks-proxy-agent
116
+ if (isSocks) {
117
+ let SocksProxyAgent;
118
+ try {
119
+ ({ SocksProxyAgent } = await import("socks-proxy-agent"));
120
+ }
121
+ catch {
122
+ console.warn("[cloakbrowser] socks-proxy-agent not installed — cannot resolve exit IP through SOCKS5 proxy. Install it: npm install socks-proxy-agent");
123
+ return null;
124
+ }
125
+ const { default: https } = await import("node:https");
126
+ const agent = new SocksProxyAgent(proxyUrl);
127
+ for (const echoUrl of IP_ECHO_URLS) {
128
+ try {
129
+ const ip = await new Promise((resolve) => {
130
+ const req = https.request(echoUrl, { agent, timeout: 10_000 }, (res) => {
131
+ let data = "";
132
+ res.on("data", (chunk) => (data += chunk.toString()));
133
+ res.on("end", () => {
134
+ const ip = data.trim();
135
+ resolve(net.isIP(ip) ? ip : null);
136
+ });
137
+ });
138
+ req.on("error", () => resolve(null));
139
+ req.on("timeout", () => { req.destroy(); resolve(null); });
140
+ req.end();
141
+ });
142
+ if (ip)
143
+ return ip;
144
+ }
145
+ catch {
146
+ continue;
147
+ }
148
+ }
149
+ return null;
150
+ }
151
+ // HTTP/HTTPS: use a CONNECT tunnel via http
117
152
  try {
118
153
  const { default: http } = await import("node:http");
119
154
  const { default: https } = await import("node:https");
@@ -231,6 +266,24 @@ function maybeTriggerUpdate(dbPath) {
231
266
  // Fire-and-forget background update
232
267
  downloadGeoipDb(dbPath).catch(() => { });
233
268
  }
269
+ /**
270
+ * Extract a usable proxy URL from LaunchOptions.proxy.
271
+ * For SOCKS5 dicts with separate credentials, reconstructs the full URL
272
+ * with inline credentials so SOCKS5 auth works.
273
+ */
274
+ function extractProxyUrl(proxy) {
275
+ if (!proxy)
276
+ return null;
277
+ if (typeof proxy === "string")
278
+ return ensureProxyScheme(proxy);
279
+ const p = proxy;
280
+ if (!p.server)
281
+ return null;
282
+ if (p.username && isSocksProxy(p)) {
283
+ return reconstructSocksUrl(p);
284
+ }
285
+ return ensureProxyScheme(p.server);
286
+ }
234
287
  /**
235
288
  * Auto-fill timezone/locale from proxy IP when geoip is enabled.
236
289
  * Also returns exitIp as a free bonus (reused for WebRTC spoofing).
@@ -238,10 +291,9 @@ function maybeTriggerUpdate(dbPath) {
238
291
  export async function maybeResolveGeoip(options) {
239
292
  if (!options.geoip || !options.proxy)
240
293
  return { timezone: options.timezone, locale: options.locale };
241
- let proxyUrl = typeof options.proxy === "string" ? options.proxy : options.proxy.server;
294
+ const proxyUrl = extractProxyUrl(options.proxy);
242
295
  if (!proxyUrl)
243
296
  return { timezone: options.timezone, locale: options.locale };
244
- proxyUrl = ensureProxyScheme(proxyUrl);
245
297
  // When both tz/locale are explicit, still resolve exit IP for WebRTC
246
298
  if (options.timezone && options.locale) {
247
299
  const exitIp = await resolveExitIp(proxyUrl) ?? undefined;
@@ -266,13 +318,13 @@ export async function resolveWebrtcArgs(options) {
266
318
  const idx = args.findIndex(a => a === "--fingerprint-webrtc-ip=auto");
267
319
  if (idx === -1)
268
320
  return args;
269
- let proxyUrl = typeof options.proxy === "string" ? options.proxy : options.proxy?.server;
321
+ const proxyUrl = extractProxyUrl(options.proxy);
270
322
  if (!proxyUrl) {
323
+ console.warn("[cloakbrowser] --fingerprint-webrtc-ip=auto requires a proxy; removing flag");
271
324
  const result = [...args];
272
325
  result.splice(idx, 1);
273
326
  return result;
274
327
  }
275
- proxyUrl = ensureProxyScheme(proxyUrl);
276
328
  try {
277
329
  const ip = await resolveExitIp(proxyUrl);
278
330
  const result = [...args];
@@ -280,11 +332,13 @@ export async function resolveWebrtcArgs(options) {
280
332
  result[idx] = `--fingerprint-webrtc-ip=${ip}`;
281
333
  }
282
334
  else {
335
+ console.warn("[cloakbrowser] Could not resolve proxy exit IP for WebRTC spoofing; removing --fingerprint-webrtc-ip=auto");
283
336
  result.splice(idx, 1);
284
337
  }
285
338
  return result;
286
339
  }
287
340
  catch {
341
+ console.warn("[cloakbrowser] Failed to resolve proxy exit IP for WebRTC spoofing; removing --fingerprint-webrtc-ip=auto");
288
342
  const result = [...args];
289
343
  result.splice(idx, 1);
290
344
  return result;
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":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ElementHandle humanization for Playwright.
3
+ *
4
+ * Mirrors Puppeteer's ElementHandle patching architecture.
5
+ * Patches page.$(), page.$$(), page.waitForSelector() to return humanized handles,
6
+ * and patches all interaction methods on each ElementHandle instance.
7
+ *
8
+ * Playwright ElementHandle methods patched:
9
+ * click, dblclick, hover, type, fill, press, selectOption,
10
+ * check, uncheck, setChecked, tap, focus
11
+ * + $, $$, waitForSelector (nested elements are also patched)
12
+ *
13
+ * Stealth-aware:
14
+ * - Uses CDP DOM.describeNode when available to check element type
15
+ * (no main-world JS execution)
16
+ * - Falls back to el.evaluate() only when CDP is unavailable
17
+ */
18
+ import type { Page, Frame, ElementHandle } from 'playwright-core';
19
+ import type { HumanConfig } from './config.js';
20
+ import { RawMouse, RawKeyboard } from './mouse.js';
21
+ interface CursorState {
22
+ x: number;
23
+ y: number;
24
+ initialized: boolean;
25
+ }
26
+ export declare function patchSingleElementHandle(el: ElementHandle, page: Page, cfg: HumanConfig, cursor: CursorState, raw: RawMouse, rawKb: RawKeyboard, originals: any, stealth: any): void;
27
+ export declare function patchPageElementHandles(page: Page, cfg: HumanConfig, cursor: CursorState, raw: RawMouse, rawKb: RawKeyboard, originals: any, stealth: any): void;
28
+ export declare function patchFrameElementHandles(frame: Frame, page: Page, cfg: HumanConfig, cursor: CursorState, raw: RawMouse, rawKb: RawKeyboard, originals: any, stealth: any): void;
29
+ export {};
30
+ //# sourceMappingURL=elementhandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementhandle.d.ts","sourceRoot":"","sources":["../../src/human/elementhandle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAc,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAiD,MAAM,YAAY,CAAC;AA8ClG,UAAU,WAAW;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,OAAO,CAAC;CACtB;AAOD,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,GAAG,GACX,IAAI,CAuLN;AAOD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,GAAG,GACX,IAAI,CAgCN;AAOD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,GAAG,GACX,IAAI,CAgCN"}
@@ -0,0 +1,317 @@
1
+ /**
2
+ * ElementHandle humanization for Playwright.
3
+ *
4
+ * Mirrors Puppeteer's ElementHandle patching architecture.
5
+ * Patches page.$(), page.$$(), page.waitForSelector() to return humanized handles,
6
+ * and patches all interaction methods on each ElementHandle instance.
7
+ *
8
+ * Playwright ElementHandle methods patched:
9
+ * click, dblclick, hover, type, fill, press, selectOption,
10
+ * check, uncheck, setChecked, tap, focus
11
+ * + $, $$, waitForSelector (nested elements are also patched)
12
+ *
13
+ * Stealth-aware:
14
+ * - Uses CDP DOM.describeNode when available to check element type
15
+ * (no main-world JS execution)
16
+ * - Falls back to el.evaluate() only when CDP is unavailable
17
+ */
18
+ import { rand, randRange, sleep } from './config.js';
19
+ import { humanMove, humanClick, clickTarget, humanIdle } from './mouse.js';
20
+ import { humanType } from './keyboard.js';
21
+ // --- Platform-aware select-all shortcut ---
22
+ const SELECT_ALL = process.platform === 'darwin' ? 'Meta+a' : 'Control+a';
23
+ // ============================================================================
24
+ // Stealth ElementHandle input check — uses CDP DOM.describeNode
25
+ // ============================================================================
26
+ async function isInputElementHandle(stealth, // StealthEval from index.ts
27
+ el) {
28
+ // Try CDP DOM.describeNode first (no main-world JS execution)
29
+ if (stealth) {
30
+ try {
31
+ const cdp = await stealth.getCdpSession();
32
+ // Playwright exposes the JSHandle's internal preview via _objectId or similar
33
+ // We need the remote object ID. Try to get it via internal API.
34
+ const impl = el._impl ?? el._object ?? el;
35
+ const guid = impl._guid;
36
+ // Use el.evaluate as a reliable fallback within stealth context
37
+ // Playwright doesn't expose remoteObject directly like Puppeteer
38
+ }
39
+ catch { /* fallthrough */ }
40
+ }
41
+ // Fallback: el.evaluate (works reliably in Playwright)
42
+ try {
43
+ return await el.evaluate((node) => {
44
+ const tag = node.tagName?.toLowerCase();
45
+ return tag === 'input' || tag === 'textarea'
46
+ || node.getAttribute?.('contenteditable') === 'true';
47
+ });
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ // ============================================================================
54
+ // Patch a single Playwright ElementHandle
55
+ // ============================================================================
56
+ export function patchSingleElementHandle(el, page, cfg, cursor, raw, rawKb, originals, stealth) {
57
+ if (el._humanPatched)
58
+ return;
59
+ el._humanPatched = true;
60
+ // Save originals
61
+ const origElClick = el.click.bind(el);
62
+ const origElDblclick = el.dblclick.bind(el);
63
+ const origElHover = el.hover.bind(el);
64
+ const origElType = el.type.bind(el);
65
+ const origElFill = el.fill.bind(el);
66
+ const origElPress = el.press.bind(el);
67
+ const origElSelectOption = el.selectOption.bind(el);
68
+ const origElCheck = el.check.bind(el);
69
+ const origElUncheck = el.uncheck.bind(el);
70
+ const origElSetChecked = el.setChecked?.bind(el);
71
+ const origElTap = el.tap.bind(el);
72
+ const origElFocus = el.focus.bind(el);
73
+ // Nested selectors
74
+ const origEl$ = el.$.bind(el);
75
+ const origEl$$ = el.$$.bind(el);
76
+ const origElWaitForSelector = el.waitForSelector.bind(el);
77
+ // --- Nested elements are also patched ---
78
+ el.$ = async (selector) => {
79
+ const child = await origEl$(selector);
80
+ if (child)
81
+ patchSingleElementHandle(child, page, cfg, cursor, raw, rawKb, originals, stealth);
82
+ return child;
83
+ };
84
+ el.$$ = async (selector) => {
85
+ const children = await origEl$$(selector);
86
+ for (const child of children) {
87
+ patchSingleElementHandle(child, page, cfg, cursor, raw, rawKb, originals, stealth);
88
+ }
89
+ return children;
90
+ };
91
+ el.waitForSelector = async (selector, options) => {
92
+ const child = await origElWaitForSelector(selector, options);
93
+ if (child)
94
+ patchSingleElementHandle(child, page, cfg, cursor, raw, rawKb, originals, stealth);
95
+ return child;
96
+ };
97
+ // --- Helper: get bounding box and move cursor to element ---
98
+ const moveToElement = async () => {
99
+ // Ensure cursor is initialized
100
+ const ensureCursorInit = page._ensureCursorInit;
101
+ if (ensureCursorInit)
102
+ await ensureCursorInit();
103
+ const box = await el.boundingBox();
104
+ if (!box)
105
+ return null;
106
+ const isInp = await isInputElementHandle(stealth, el);
107
+ const target = clickTarget(box, isInp, cfg);
108
+ if (cfg.idle_between_actions) {
109
+ await humanIdle(raw, rand(cfg.idle_between_duration[0], cfg.idle_between_duration[1]), cursor.x, cursor.y, cfg);
110
+ }
111
+ await humanMove(raw, cursor.x, cursor.y, target.x, target.y, cfg);
112
+ cursor.x = target.x;
113
+ cursor.y = target.y;
114
+ return { box, isInp };
115
+ };
116
+ // --- el.click() ---
117
+ el.click = async (options) => {
118
+ const info = await moveToElement();
119
+ if (!info)
120
+ return origElClick(options);
121
+ await humanClick(raw, info.isInp, cfg);
122
+ };
123
+ // --- el.dblclick() ---
124
+ el.dblclick = async (options) => {
125
+ const info = await moveToElement();
126
+ if (!info)
127
+ return origElDblclick(options);
128
+ await raw.down({ clickCount: 2 });
129
+ await sleep(rand(30, 60));
130
+ await raw.up({ clickCount: 2 });
131
+ };
132
+ // --- el.hover() ---
133
+ el.hover = async (options) => {
134
+ const info = await moveToElement();
135
+ if (!info)
136
+ return origElHover(options);
137
+ // Just move — no click
138
+ };
139
+ // --- el.type() ---
140
+ el.type = async (text, options) => {
141
+ const info = await moveToElement();
142
+ if (!info)
143
+ return origElType(text, options);
144
+ await humanClick(raw, info.isInp, cfg);
145
+ await sleep(rand(100, 250));
146
+ let cdpSession = null;
147
+ try {
148
+ cdpSession = await stealth?.getCdpSession();
149
+ }
150
+ catch { }
151
+ await humanType(page, rawKb, text, cfg, cdpSession);
152
+ };
153
+ // --- el.fill() ---
154
+ el.fill = async (value, options) => {
155
+ const info = await moveToElement();
156
+ if (!info)
157
+ return origElFill(value, options);
158
+ await humanClick(raw, info.isInp, cfg);
159
+ await sleep(rand(100, 250));
160
+ // Clear existing content
161
+ await originals.keyboardPress(SELECT_ALL);
162
+ await sleep(rand(30, 80));
163
+ await originals.keyboardPress('Backspace');
164
+ await sleep(rand(50, 150));
165
+ let cdpSession = null;
166
+ try {
167
+ cdpSession = await stealth?.getCdpSession();
168
+ }
169
+ catch { }
170
+ await humanType(page, rawKb, value, cfg, cdpSession);
171
+ };
172
+ // --- el.press() ---
173
+ el.press = async (key, options) => {
174
+ await sleep(rand(20, 60));
175
+ await originals.keyboardDown(key);
176
+ await sleep(randRange(cfg.key_hold));
177
+ await originals.keyboardUp(key);
178
+ };
179
+ // --- el.selectOption() ---
180
+ el.selectOption = async (values, options) => {
181
+ const info = await moveToElement();
182
+ if (!info)
183
+ return origElSelectOption(values, options);
184
+ await humanClick(raw, false, cfg);
185
+ await sleep(rand(100, 300));
186
+ return origElSelectOption(values, options);
187
+ };
188
+ // --- el.check() ---
189
+ el.check = async (options) => {
190
+ try {
191
+ const checked = await el.isChecked();
192
+ if (checked)
193
+ return; // Already checked
194
+ }
195
+ catch { }
196
+ const info = await moveToElement();
197
+ if (!info)
198
+ return origElCheck(options);
199
+ await humanClick(raw, info.isInp, cfg);
200
+ };
201
+ // --- el.uncheck() ---
202
+ el.uncheck = async (options) => {
203
+ try {
204
+ const checked = await el.isChecked();
205
+ if (!checked)
206
+ return; // Already unchecked
207
+ }
208
+ catch { }
209
+ const info = await moveToElement();
210
+ if (!info)
211
+ return origElUncheck(options);
212
+ await humanClick(raw, info.isInp, cfg);
213
+ };
214
+ // --- el.setChecked() ---
215
+ if (origElSetChecked) {
216
+ el.setChecked = async (checked, options) => {
217
+ try {
218
+ const current = await el.isChecked();
219
+ if (current === checked)
220
+ return;
221
+ }
222
+ catch { }
223
+ const info = await moveToElement();
224
+ if (!info)
225
+ return origElSetChecked(checked, options);
226
+ await humanClick(raw, info.isInp, cfg);
227
+ };
228
+ }
229
+ // --- el.tap() ---
230
+ el.tap = async (options) => {
231
+ const info = await moveToElement();
232
+ if (!info)
233
+ return origElTap(options);
234
+ await humanClick(raw, info.isInp, cfg);
235
+ };
236
+ // --- el.focus() ---
237
+ // Move cursor humanly but use programmatic focus (no click side-effects).
238
+ // Stock Playwright el.focus() never clicks — clicking would trigger onclick,
239
+ // submit forms, navigate links, etc.
240
+ el.focus = async () => {
241
+ await moveToElement(); // human-like Bézier cursor movement
242
+ await origElFocus(); // programmatic focus, no click
243
+ };
244
+ }
245
+ // ============================================================================
246
+ // Page-level ElementHandle patching
247
+ // ============================================================================
248
+ export function patchPageElementHandles(page, cfg, cursor, raw, rawKb, originals, stealth) {
249
+ // Patch page.$() — only if the method exists
250
+ if (typeof page.$ === 'function') {
251
+ const orig$ = page.$.bind(page);
252
+ page.$ = async (selector) => {
253
+ const el = await orig$(selector);
254
+ if (el)
255
+ patchSingleElementHandle(el, page, cfg, cursor, raw, rawKb, originals, stealth);
256
+ return el;
257
+ };
258
+ }
259
+ // Patch page.$$()
260
+ if (typeof page.$$ === 'function') {
261
+ const orig$$ = page.$$.bind(page);
262
+ page.$$ = async (selector) => {
263
+ const els = await orig$$(selector);
264
+ for (const el of els) {
265
+ patchSingleElementHandle(el, page, cfg, cursor, raw, rawKb, originals, stealth);
266
+ }
267
+ return els;
268
+ };
269
+ }
270
+ // Patch page.waitForSelector()
271
+ if (typeof page.waitForSelector === 'function') {
272
+ const origWaitForSelector = page.waitForSelector.bind(page);
273
+ page.waitForSelector = async (selector, options) => {
274
+ const el = await origWaitForSelector(selector, options);
275
+ if (el)
276
+ patchSingleElementHandle(el, page, cfg, cursor, raw, rawKb, originals, stealth);
277
+ return el;
278
+ };
279
+ }
280
+ }
281
+ // ============================================================================
282
+ // Frame-level ElementHandle patching
283
+ // ============================================================================
284
+ export function patchFrameElementHandles(frame, page, cfg, cursor, raw, rawKb, originals, stealth) {
285
+ // Patch frame.$() — only if the method exists
286
+ if (typeof frame.$ === 'function') {
287
+ const origFrame$ = frame.$.bind(frame);
288
+ frame.$ = async (selector) => {
289
+ const el = await origFrame$(selector);
290
+ if (el)
291
+ patchSingleElementHandle(el, page, cfg, cursor, raw, rawKb, originals, stealth);
292
+ return el;
293
+ };
294
+ }
295
+ // Patch frame.$$()
296
+ if (typeof frame.$$ === 'function') {
297
+ const origFrame$$ = frame.$$.bind(frame);
298
+ frame.$$ = async (selector) => {
299
+ const els = await origFrame$$(selector);
300
+ for (const el of els) {
301
+ patchSingleElementHandle(el, page, cfg, cursor, raw, rawKb, originals, stealth);
302
+ }
303
+ return els;
304
+ };
305
+ }
306
+ // Patch frame.waitForSelector()
307
+ if (typeof frame.waitForSelector === 'function') {
308
+ const origFrameWaitForSelector = frame.waitForSelector.bind(frame);
309
+ frame.waitForSelector = async (selector, options) => {
310
+ const el = await origFrameWaitForSelector(selector, options);
311
+ if (el)
312
+ patchSingleElementHandle(el, page, cfg, cursor, raw, rawKb, originals, stealth);
313
+ return el;
314
+ };
315
+ }
316
+ }
317
+ //# sourceMappingURL=elementhandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementhandle.js","sourceRoot":"","sources":["../../src/human/elementhandle.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,14 @@
12
12
  * Patches all interaction methods:
13
13
  * click, dblclick, hover, type, fill, check, uncheck, selectOption,
14
14
  * press, pressSequentially, tap, dragTo, clear + Frame-level equivalents.
15
+ *
16
+ * ELEMENTHANDLE-LEVEL:
17
+ * click, dblclick, hover, type, fill, press, selectOption,
18
+ * check, uncheck, setChecked, tap, focus
19
+ * + $, $$, waitForSelector (nested elements are also patched)
20
+ *
21
+ * page.$(), page.$$(), page.waitForSelector() and Frame equivalents
22
+ * return patched ElementHandles automatically.
15
23
  */
16
24
  import type { Browser, BrowserContext, Page } from 'playwright-core';
17
25
  import { HumanConfig } from './config.js';
@@ -19,6 +27,7 @@ export { HumanConfig, resolveConfig } from './config.js';
19
27
  export { humanMove, humanClick, clickTarget, humanIdle } from './mouse.js';
20
28
  export { humanType } from './keyboard.js';
21
29
  export { scrollToElement } from './scroll.js';
30
+ export { patchSingleElementHandle } from './elementhandle.js';
22
31
  declare class CursorState {
23
32
  x: number;
24
33
  y: number;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAyC,MAAM,aAAa,CAAC;AAMjF,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;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AA4G9D,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,CAkR1E;AAyID,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"}