cloakbrowser 0.3.27 → 0.3.29

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 (50) hide show
  1. package/README.md +8 -1
  2. package/dist/args.d.ts +0 -3
  3. package/dist/args.d.ts.map +1 -1
  4. package/dist/args.js +7 -0
  5. package/dist/args.js.map +1 -1
  6. package/dist/geoip.d.ts.map +1 -1
  7. package/dist/geoip.js +51 -10
  8. package/dist/geoip.js.map +1 -1
  9. package/dist/human/actionability.d.ts +45 -0
  10. package/dist/human/actionability.d.ts.map +1 -0
  11. package/dist/human/actionability.js +274 -0
  12. package/dist/human/actionability.js.map +1 -0
  13. package/dist/human/config.d.ts +5 -0
  14. package/dist/human/config.d.ts.map +1 -1
  15. package/dist/human/config.js.map +1 -1
  16. package/dist/human/elementhandle.d.ts.map +1 -1
  17. package/dist/human/elementhandle.js +66 -16
  18. package/dist/human/elementhandle.js.map +1 -1
  19. package/dist/human/index.d.ts.map +1 -1
  20. package/dist/human/index.js +234 -47
  21. package/dist/human/index.js.map +1 -1
  22. package/dist/human/mouse.d.ts +1 -0
  23. package/dist/human/mouse.d.ts.map +1 -1
  24. package/dist/human/mouse.js +8 -4
  25. package/dist/human/mouse.js.map +1 -1
  26. package/dist/human/scroll.d.ts +4 -0
  27. package/dist/human/scroll.d.ts.map +1 -1
  28. package/dist/human/scroll.js +5 -3
  29. package/dist/human/scroll.js.map +1 -1
  30. package/dist/human-puppeteer/index.d.ts.map +1 -1
  31. package/dist/human-puppeteer/index.js +10 -10
  32. package/dist/human-puppeteer/index.js.map +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/playwright.d.ts +12 -1
  38. package/dist/playwright.d.ts.map +1 -1
  39. package/dist/playwright.js +35 -21
  40. package/dist/playwright.js.map +1 -1
  41. package/dist/proxy.d.ts.map +1 -1
  42. package/dist/proxy.js +11 -1
  43. package/dist/proxy.js.map +1 -1
  44. package/dist/puppeteer.d.ts +23 -2
  45. package/dist/puppeteer.d.ts.map +1 -1
  46. package/dist/puppeteer.js +93 -58
  47. package/dist/puppeteer.js.map +1 -1
  48. package/dist/types.d.ts +2 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +3 -3
package/dist/puppeteer.js CHANGED
@@ -8,68 +8,46 @@ import { buildArgs } from "./args.js";
8
8
  import { ensureBinary } from "./download.js";
9
9
  import { isSocksProxy, parseProxyUrl, resolveProxyConfig } from "./proxy.js";
10
10
  import { maybeResolveGeoip, resolveWebrtcArgs } from "./geoip.js";
11
- /**
12
- * Launch stealth Chromium browser via Puppeteer.
13
- *
14
- * @example
15
- * ```ts
16
- * import { launch } from 'cloakbrowser/puppeteer';
17
- * * // With humanize — human-like mouse, keyboard, scroll
18
- * const browser = await launch({ humanize: true });
19
- * const page = await browser.newPage();
20
- * await page.goto('[https://example.com](https://example.com)');
21
- * await page.click('#login'); // Bézier curve mouse movement
22
- * await page.type('#email', 'user@example.com'); // Per-character timing
23
- * ```
24
- */
25
- export async function launch(options = {}) {
26
- const puppeteer = await import("puppeteer-core");
11
+ /** Resolve binary path, geoip, webrtc, and build final Chrome args. */
12
+ async function resolveArgs(options) {
27
13
  const binaryPath = process.env.CLOAKBROWSER_BINARY_PATH || (await ensureBinary());
28
14
  const { exitIp, ...resolved } = (await maybeResolveGeoip(options)) ?? {};
29
15
  let resolvedArgs = (await resolveWebrtcArgs(options)) ?? options.args;
30
16
  if (exitIp && !(resolvedArgs ?? []).some(a => a.startsWith("--fingerprint-webrtc-ip"))) {
31
17
  resolvedArgs = [...(resolvedArgs ?? []), `--fingerprint-webrtc-ip=${exitIp}`];
32
18
  }
33
- const args = buildArgs({ ...options, ...resolved, args: resolvedArgs });
34
- // Puppeteer handles proxy via CLI args, not a separate option.
35
- // SOCKS5: Chrome supports inline credentials natively (RFC 1929 auth).
36
- // HTTP: Chrome does NOT support inline credentials strip them and
37
- // use page.authenticate() for Proxy-Authorization headers instead.
38
- let proxyAuth;
39
- if (options.proxy) {
40
- if (isSocksProxy(options.proxy)) {
41
- // SOCKS5: pass full URL with credentials to Chrome directly
42
- const { proxyArgs } = resolveProxyConfig(options.proxy);
43
- args.push(...proxyArgs);
44
- }
45
- else if (typeof options.proxy === "string") {
46
- const { server, username, password } = parseProxyUrl(options.proxy);
47
- args.push(`--proxy-server=${server}`);
48
- if (username) {
49
- proxyAuth = { username, password: password ?? "" };
50
- }
51
- }
52
- else {
53
- const parsed = parseProxyUrl(options.proxy.server);
54
- args.push(`--proxy-server=${parsed.server}`);
55
- if (options.proxy.bypass) {
56
- args.push(`--proxy-bypass-list=${options.proxy.bypass}`);
57
- }
58
- const username = options.proxy.username ?? parsed.username;
59
- const password = options.proxy.password ?? parsed.password;
60
- if (username) {
61
- proxyAuth = { username, password: password ?? "" };
62
- }
63
- }
19
+ return { binaryPath, args: buildArgs({ ...options, ...resolved, args: resolvedArgs }) };
20
+ }
21
+ /**
22
+ * Resolve proxy into Chrome CLI args and optional HTTP auth credentials.
23
+ * SOCKS5: Chrome supports inline credentials natively (RFC 1929 auth).
24
+ * HTTP: Chrome does NOT support inline credentials — strip them and
25
+ * use page.authenticate() for Proxy-Authorization headers instead.
26
+ */
27
+ function resolveProxy(options, args) {
28
+ if (!options.proxy)
29
+ return undefined;
30
+ if (isSocksProxy(options.proxy)) {
31
+ const { proxyArgs } = resolveProxyConfig(options.proxy);
32
+ args.push(...proxyArgs);
33
+ return undefined;
64
34
  }
65
- const browser = await puppeteer.default.launch({
66
- executablePath: binaryPath,
67
- headless: options.headless ?? true,
68
- args,
69
- ignoreDefaultArgs: IGNORE_DEFAULT_ARGS,
70
- ...options.launchOptions,
71
- });
72
- // Monkey-patch newPage() to auto-authenticate proxy credentials
35
+ if (typeof options.proxy === "string") {
36
+ const { server, username, password } = parseProxyUrl(options.proxy);
37
+ args.push(`--proxy-server=${server}`);
38
+ return username ? { username, password: password ?? "" } : undefined;
39
+ }
40
+ const parsed = parseProxyUrl(options.proxy.server);
41
+ args.push(`--proxy-server=${parsed.server}`);
42
+ if (options.proxy.bypass) {
43
+ args.push(`--proxy-bypass-list=${options.proxy.bypass}`);
44
+ }
45
+ const username = options.proxy.username ?? parsed.username;
46
+ const password = options.proxy.password ?? parsed.password;
47
+ return username ? { username, password: password ?? "" } : undefined;
48
+ }
49
+ /** Apply proxy auth monkey-patch and humanize behavioral patching. */
50
+ async function applyPostLaunch(browser, options, proxyAuth) {
73
51
  if (proxyAuth) {
74
52
  const origNewPage = browser.newPage.bind(browser);
75
53
  const auth = proxyAuth;
@@ -79,15 +57,72 @@ export async function launch(options = {}) {
79
57
  return page;
80
58
  };
81
59
  }
82
- // Human-like behavioral patching — FULL coverage, same as Playwright.
83
- // This enables Bézier mouse movements, organic typing rhythms, and
84
- // natural scrolling to bypass advanced anti-bot detection.
85
60
  if (options.humanize) {
86
61
  const { patchBrowser } = await import('./human-puppeteer/index.js');
87
62
  const { resolveConfig } = await import('./human/config.js');
88
63
  const cfg = resolveConfig(options.humanPreset ?? 'default', options.humanConfig);
89
64
  patchBrowser(browser, cfg);
90
65
  }
66
+ }
67
+ /**
68
+ * Launch stealth Chromium browser via Puppeteer.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * import { launch } from 'cloakbrowser/puppeteer';
73
+ * // With humanize — human-like mouse, keyboard, scroll
74
+ * const browser = await launch({ humanize: true });
75
+ * const page = await browser.newPage();
76
+ * await page.goto('https://example.com');
77
+ * await page.click('#login'); // Bézier curve mouse movement
78
+ * await page.type('#email', 'user@example.com'); // Per-character timing
79
+ * ```
80
+ */
81
+ export async function launch(options = {}) {
82
+ const puppeteer = await import("puppeteer-core");
83
+ const { binaryPath, args } = await resolveArgs(options);
84
+ const proxyAuth = resolveProxy(options, args);
85
+ const browser = await puppeteer.default.launch({
86
+ ...options.launchOptions,
87
+ executablePath: binaryPath,
88
+ headless: options.headless ?? true,
89
+ args,
90
+ ignoreDefaultArgs: IGNORE_DEFAULT_ARGS,
91
+ });
92
+ await applyPostLaunch(browser, options, proxyAuth);
93
+ return browser;
94
+ }
95
+ /**
96
+ * Launch stealth Chromium with a persistent user profile via Puppeteer.
97
+ * Passes `userDataDir` to Puppeteer's launch options so cookies,
98
+ * localStorage, and session data persist across launches.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * import { launchPersistentContext } from 'cloakbrowser/puppeteer';
103
+ * const browser = await launchPersistentContext({
104
+ * userDataDir: './chrome-profile',
105
+ * headless: false,
106
+ * proxy: 'http://user:pass@proxy:8080',
107
+ * });
108
+ * const page = await browser.newPage();
109
+ * await page.goto('https://example.com');
110
+ * await browser.close();
111
+ * ```
112
+ */
113
+ export async function launchPersistentContext(options) {
114
+ const puppeteer = await import("puppeteer-core");
115
+ const { binaryPath, args } = await resolveArgs(options);
116
+ const proxyAuth = resolveProxy(options, args);
117
+ const browser = await puppeteer.default.launch({
118
+ ...options.launchOptions,
119
+ executablePath: binaryPath,
120
+ headless: options.headless ?? true,
121
+ args,
122
+ ignoreDefaultArgs: IGNORE_DEFAULT_ARGS,
123
+ userDataDir: options.userDataDir,
124
+ });
125
+ await applyPostLaunch(browser, options, proxyAuth);
91
126
  return browser;
92
127
  }
93
128
  //# sourceMappingURL=puppeteer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"puppeteer.js","sourceRoot":"","sources":["../src/puppeteer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puppeteer.js","sourceRoot":"","sources":["../src/puppeteer.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -20,6 +20,8 @@ export interface LaunchOptions {
20
20
  };
21
21
  /** Additional Chromium CLI arguments. */
22
22
  args?: string[];
23
+ /** Chrome extension paths to load. */
24
+ extensionPaths?: string[];
23
25
  /** Include default stealth fingerprint args (default: true). Set false to use custom --fingerprint flags. */
24
26
  stealthArgs?: boolean;
25
27
  /** IANA timezone, e.g. "America/New_York". Sets --fingerprint-timezone binary flag. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3F,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qDAAqD;IACrD,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpD,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;IACjD;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,8BAA+B,SAAQ,oBAAoB;IAC1E,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3F,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6GAA6G;IAC7G,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qDAAqD;IACrD,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpD,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;IACjD;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,8BAA+B,SAAQ,oBAAoB;IAC1E,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloakbrowser",
3
- "version": "0.3.27",
3
+ "version": "0.3.29",
4
4
  "description": "Stealth Chromium that passes every bot detection test. Drop-in Playwright/Puppeteer replacement with source-level fingerprint patches.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "peerDependencies": {
61
61
  "mmdb-lib": ">=2.0.0",
62
- "playwright-core": ">=1.40.0",
62
+ "playwright-core": ">=1.53.0",
63
63
  "puppeteer-core": ">=21.0.0",
64
64
  "socks-proxy-agent": ">=10.0.0"
65
65
  },
@@ -84,7 +84,7 @@
84
84
  "@types/node": "^20.10.0",
85
85
  "mmdb-lib": "^3.0.2",
86
86
  "socks-proxy-agent": "^10.0.0",
87
- "playwright-core": "^1.40.0",
87
+ "playwright-core": "^1.53.0",
88
88
  "puppeteer-core": "^21.0.0",
89
89
  "typescript": "^5.3.0",
90
90
  "vitest": "^1.0.0"