brave-real-launcher 1.2.43 → 1.2.44

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.
@@ -401,6 +401,17 @@ class Launcher {
401
401
  async launch() {
402
402
  // Setup Xvfb first if needed
403
403
  await this.setupXvfb();
404
+ // Fetch dynamic Chrome version for stealth mode
405
+ if (this.enableStealth && !this.userAgent) {
406
+ try {
407
+ const dynamicAgents = await (0, stealth_utils_js_1.getDynamicUserAgents)();
408
+ this.userAgent = dynamicAgents.current;
409
+ logger_js_1.default.verbose('BraveLauncher', `Using dynamic Chrome User-Agent: ${this.userAgent}`);
410
+ }
411
+ catch (err) {
412
+ logger_js_1.default.warn('BraveLauncher', `Failed to fetch dynamic Chrome version, using fallback`);
413
+ }
414
+ }
404
415
  // Load uBlock Origin if requested
405
416
  if (this.autoLoadUBlock) {
406
417
  await this.loadUBlockOrigin();
@@ -655,4 +666,4 @@ function findBrave() {
655
666
  return Launcher.getFirstInstallation();
656
667
  }
657
668
  exports.findBrave = findBrave;
658
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUtbGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnJhdmUtbGF1bmNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHYix1Q0FBeUI7QUFDekIseUNBQTJCO0FBQzNCLCtEQUFpRDtBQUNqRCxxREFBaUQ7QUFDakQseUNBQTJDO0FBQzNDLHlDQUF3TjtBQUV4TixpREFBaUQ7QUFDakQsNERBQThCO0FBQzlCLGlFQUF5RTtBQUN6RSw2REFBc0Q7QUFDdEQseURBQW9FO0FBRXBFLE1BQU0sS0FBSyxHQUFHLElBQUEsc0JBQVcsR0FBRSxLQUFLLEtBQUssQ0FBQztBQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFXLEdBQUUsS0FBSyxPQUFPLENBQUM7QUFDNUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBSTFFLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUM7QUFtRHRDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtJQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixLQUFLLFVBQVUsTUFBTSxDQUFDLE9BQWdCLEVBQUU7SUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwQyxn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
669
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUtbGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnJhdmUtbGF1bmNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHYix1Q0FBeUI7QUFDekIseUNBQTJCO0FBQzNCLCtEQUFpRDtBQUNqRCxxREFBaUQ7QUFDakQseUNBQTJDO0FBQzNDLHlDQUF3TjtBQUV4TixpREFBaUQ7QUFDakQsNERBQThCO0FBQzlCLGlFQUF5RTtBQUN6RSw2REFBc0Q7QUFDdEQseURBQWtIO0FBRWxILE1BQU0sS0FBSyxHQUFHLElBQUEsc0JBQVcsR0FBRSxLQUFLLEtBQUssQ0FBQztBQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFXLEdBQUUsS0FBSyxPQUFPLENBQUM7QUFDNUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBSTFFLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUM7QUFtRHRDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtJQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixLQUFLLFVBQVUsTUFBTSxDQUFDLE9BQWdCLEVBQUU7SUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwQyxn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
@@ -14,7 +14,7 @@ import { spawn, spawnSync } from 'child_process';
14
14
  import log from './logger.mjs';
15
15
  import { ExtensionManager } from './extension-manager.mjs';
16
16
  import { BraveInstaller } from './brave-installer.mjs';
17
- import { getStealthFlags } from './stealth-utils.mjs';
17
+ import { getStealthFlags, getDynamicUserAgents } from './stealth-utils.mjs';
18
18
  const isWsl = getPlatform() === 'wsl';
19
19
  const isWindows = getPlatform() === 'win32';
20
20
  const _SIGINT = 'SIGINT';
@@ -370,6 +370,17 @@ class Launcher {
370
370
  async launch() {
371
371
  // Setup Xvfb first if needed
372
372
  await this.setupXvfb();
373
+ // Fetch dynamic Chrome version for stealth mode
374
+ if (this.enableStealth && !this.userAgent) {
375
+ try {
376
+ const dynamicAgents = await getDynamicUserAgents();
377
+ this.userAgent = dynamicAgents.current;
378
+ log.verbose('BraveLauncher', `Using dynamic Chrome User-Agent: ${this.userAgent}`);
379
+ }
380
+ catch (err) {
381
+ log.warn('BraveLauncher', `Failed to fetch dynamic Chrome version, using fallback`);
382
+ }
383
+ }
373
384
  // Load uBlock Origin if requested
374
385
  if (this.autoLoadUBlock) {
375
386
  await this.loadUBlockOrigin();
@@ -622,4 +633,4 @@ export function getInstallations() {
622
633
  export function findBrave() {
623
634
  return Launcher.getFirstInstallation();
624
635
  }
625
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUtbGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnJhdmUtbGF1bmNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILFlBQVksQ0FBQztBQUdiLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxXQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsNkJBQTZCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFlLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXhOLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEUsTUFBTSxLQUFLLEdBQUcsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDO0FBQ3RDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQztBQUM1QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFDekIsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDOUIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFB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
636
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUtbGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnJhdmUtbGF1bmNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILFlBQVksQ0FBQztBQUdiLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxXQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsNkJBQTZCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFlLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXhOLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBaUIsZUFBZSxFQUEwQixvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxILE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQztBQUN0QyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQUM7QUFDNUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMs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
@@ -0,0 +1,75 @@
1
+ export declare const FALLBACK_VERSION = "144.0.7559.59";
2
+ /**
3
+ * Fetches the latest stable Chrome version from Chromium Dashboard API
4
+ * @returns The latest stable Chrome version
5
+ */
6
+ export declare function getLatestChromeVersion(): Promise<string>;
7
+ /**
8
+ * Gets the major version number from a full version string
9
+ * @param fullVersion - Full Chrome version string
10
+ * @returns Major version number
11
+ */
12
+ export declare function getMajorVersion(fullVersion: string): string;
13
+ /**
14
+ * Generates a User-Agent string for Windows with dynamic Chrome version
15
+ * @param chromeVersion - Chrome version to use
16
+ * @param mobile - Whether this is a mobile browser
17
+ * @returns User-Agent string
18
+ */
19
+ export declare function generateUserAgent(chromeVersion: string, mobile?: boolean): string;
20
+ /**
21
+ * Generates a User-Agent string for macOS with dynamic Chrome version
22
+ * @param chromeVersion - Chrome version to use
23
+ * @returns User-Agent string for macOS
24
+ */
25
+ export declare function generateUserAgentMac(chromeVersion: string): string;
26
+ /**
27
+ * Generates a User-Agent string for Linux with dynamic Chrome version
28
+ * @param chromeVersion - Chrome version to use
29
+ * @returns User-Agent string for Linux
30
+ */
31
+ export declare function generateUserAgentLinux(chromeVersion: string): string;
32
+ /**
33
+ * UserAgentMetadata interface for Client Hints API
34
+ */
35
+ export interface UserAgentMetadata {
36
+ brands: Array<{
37
+ brand: string;
38
+ version: string;
39
+ }>;
40
+ fullVersionList: Array<{
41
+ brand: string;
42
+ version: string;
43
+ }>;
44
+ platform: string;
45
+ platformVersion: string;
46
+ architecture: string;
47
+ model: string;
48
+ mobile: boolean;
49
+ bitness: string;
50
+ wow64: boolean;
51
+ }
52
+ /**
53
+ * Generates userAgentMetadata object with dynamic Chrome version
54
+ * @param chromeVersion - Chrome version to use
55
+ * @param mobile - Whether this is a mobile browser
56
+ * @returns UserAgentMetadata object
57
+ */
58
+ export declare function generateUserAgentMetadata(chromeVersion: string, mobile?: boolean): UserAgentMetadata;
59
+ /**
60
+ * Gets user agent for current platform with dynamic Chrome version
61
+ * @param chromeVersion - Chrome version to use
62
+ * @returns User-Agent string for current platform
63
+ */
64
+ export declare function getUserAgentForPlatform(chromeVersion: string): string;
65
+ declare const _default: {
66
+ getLatestChromeVersion: typeof getLatestChromeVersion;
67
+ getMajorVersion: typeof getMajorVersion;
68
+ generateUserAgent: typeof generateUserAgent;
69
+ generateUserAgentMac: typeof generateUserAgentMac;
70
+ generateUserAgentLinux: typeof generateUserAgentLinux;
71
+ generateUserAgentMetadata: typeof generateUserAgentMetadata;
72
+ getUserAgentForPlatform: typeof getUserAgentForPlatform;
73
+ FALLBACK_VERSION: string;
74
+ };
75
+ export default _default;
@@ -0,0 +1,163 @@
1
+ /**
2
+ * @license Copyright 2024 Brave Real Launcher Contributors.
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * Chrome Version Utility
6
+ * Dynamically fetches the latest stable Chrome version from Google's API
7
+ */
8
+ 'use strict';
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getUserAgentForPlatform = exports.generateUserAgentMetadata = exports.generateUserAgentLinux = exports.generateUserAgentMac = exports.generateUserAgent = exports.getMajorVersion = exports.getLatestChromeVersion = exports.FALLBACK_VERSION = void 0;
11
+ // Cache the version for 1 hour to avoid excessive API calls
12
+ let cachedVersion = null;
13
+ let cacheTimestamp = 0;
14
+ const CACHE_DURATION_MS = 60 * 60 * 1000; // 1 hour
15
+ // Fallback version if all APIs fail (updated to latest known stable)
16
+ exports.FALLBACK_VERSION = '144.0.7559.59';
17
+ /**
18
+ * Fetches the latest stable Chrome version from Chromium Dashboard API
19
+ * @returns The latest stable Chrome version
20
+ */
21
+ async function getLatestChromeVersion() {
22
+ var _a, _b, _c;
23
+ // Return cached version if still valid
24
+ if (cachedVersion && (Date.now() - cacheTimestamp) < CACHE_DURATION_MS) {
25
+ return cachedVersion;
26
+ }
27
+ // Primary API - Chromium Dashboard
28
+ try {
29
+ const controller = new AbortController();
30
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
31
+ const response = await fetch('https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Windows&num=1', { signal: controller.signal });
32
+ clearTimeout(timeoutId);
33
+ if (response.ok) {
34
+ const data = await response.json();
35
+ if ((_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.version) {
36
+ cachedVersion = data[0].version;
37
+ cacheTimestamp = Date.now();
38
+ console.log(`[chrome-version] Fetched latest stable version: ${cachedVersion}`);
39
+ return cachedVersion;
40
+ }
41
+ }
42
+ }
43
+ catch (err) {
44
+ console.log(`[chrome-version] Primary API failed: ${err.message}`);
45
+ }
46
+ // Fallback API - Chrome for Testing
47
+ try {
48
+ const controller = new AbortController();
49
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
50
+ const fallbackResponse = await fetch('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json', { signal: controller.signal });
51
+ clearTimeout(timeoutId);
52
+ if (fallbackResponse.ok) {
53
+ const data = await fallbackResponse.json();
54
+ if ((_c = (_b = data === null || data === void 0 ? void 0 : data.channels) === null || _b === void 0 ? void 0 : _b.Stable) === null || _c === void 0 ? void 0 : _c.version) {
55
+ cachedVersion = data.channels.Stable.version;
56
+ cacheTimestamp = Date.now();
57
+ console.log(`[chrome-version] Fetched from fallback API: ${cachedVersion}`);
58
+ return cachedVersion;
59
+ }
60
+ }
61
+ }
62
+ catch (err) {
63
+ console.log(`[chrome-version] Fallback API failed: ${err.message}`);
64
+ }
65
+ // Use cached version if available, else fallback
66
+ console.log(`[chrome-version] Using fallback version: ${cachedVersion || exports.FALLBACK_VERSION}`);
67
+ return cachedVersion || exports.FALLBACK_VERSION;
68
+ }
69
+ exports.getLatestChromeVersion = getLatestChromeVersion;
70
+ /**
71
+ * Gets the major version number from a full version string
72
+ * @param fullVersion - Full Chrome version string
73
+ * @returns Major version number
74
+ */
75
+ function getMajorVersion(fullVersion) {
76
+ return fullVersion.split('.')[0];
77
+ }
78
+ exports.getMajorVersion = getMajorVersion;
79
+ /**
80
+ * Generates a User-Agent string for Windows with dynamic Chrome version
81
+ * @param chromeVersion - Chrome version to use
82
+ * @param mobile - Whether this is a mobile browser
83
+ * @returns User-Agent string
84
+ */
85
+ function generateUserAgent(chromeVersion, mobile = false) {
86
+ if (mobile) {
87
+ return `Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Mobile Safari/537.36`;
88
+ }
89
+ return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
90
+ }
91
+ exports.generateUserAgent = generateUserAgent;
92
+ /**
93
+ * Generates a User-Agent string for macOS with dynamic Chrome version
94
+ * @param chromeVersion - Chrome version to use
95
+ * @returns User-Agent string for macOS
96
+ */
97
+ function generateUserAgentMac(chromeVersion) {
98
+ return `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
99
+ }
100
+ exports.generateUserAgentMac = generateUserAgentMac;
101
+ /**
102
+ * Generates a User-Agent string for Linux with dynamic Chrome version
103
+ * @param chromeVersion - Chrome version to use
104
+ * @returns User-Agent string for Linux
105
+ */
106
+ function generateUserAgentLinux(chromeVersion) {
107
+ return `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
108
+ }
109
+ exports.generateUserAgentLinux = generateUserAgentLinux;
110
+ /**
111
+ * Generates userAgentMetadata object with dynamic Chrome version
112
+ * @param chromeVersion - Chrome version to use
113
+ * @param mobile - Whether this is a mobile browser
114
+ * @returns UserAgentMetadata object
115
+ */
116
+ function generateUserAgentMetadata(chromeVersion, mobile = false) {
117
+ const majorVersion = getMajorVersion(chromeVersion);
118
+ return {
119
+ brands: [
120
+ { brand: 'Not_A Brand', version: '24' },
121
+ { brand: 'Chromium', version: majorVersion },
122
+ { brand: 'Google Chrome', version: majorVersion }
123
+ ],
124
+ fullVersionList: [
125
+ { brand: 'Not_A Brand', version: '24.0.0.0' },
126
+ { brand: 'Chromium', version: chromeVersion },
127
+ { brand: 'Google Chrome', version: chromeVersion }
128
+ ],
129
+ platform: mobile ? 'Android' : 'Windows',
130
+ platformVersion: mobile ? '13.0.0' : '10.0.0',
131
+ architecture: mobile ? '' : 'x86',
132
+ model: mobile ? 'Pixel 7' : '',
133
+ mobile: mobile,
134
+ bitness: mobile ? '' : '64',
135
+ wow64: false
136
+ };
137
+ }
138
+ exports.generateUserAgentMetadata = generateUserAgentMetadata;
139
+ /**
140
+ * Gets user agent for current platform with dynamic Chrome version
141
+ * @param chromeVersion - Chrome version to use
142
+ * @returns User-Agent string for current platform
143
+ */
144
+ function getUserAgentForPlatform(chromeVersion) {
145
+ const platform = process.platform;
146
+ switch (platform) {
147
+ case 'win32': return generateUserAgent(chromeVersion, false);
148
+ case 'darwin': return generateUserAgentMac(chromeVersion);
149
+ default: return generateUserAgentLinux(chromeVersion);
150
+ }
151
+ }
152
+ exports.getUserAgentForPlatform = getUserAgentForPlatform;
153
+ exports.default = {
154
+ getLatestChromeVersion,
155
+ getMajorVersion,
156
+ generateUserAgent,
157
+ generateUserAgentMac,
158
+ generateUserAgentLinux,
159
+ generateUserAgentMetadata,
160
+ getUserAgentForPlatform,
161
+ FALLBACK_VERSION: exports.FALLBACK_VERSION
162
+ };
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21lLXZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hyb21lLXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsWUFBWSxDQUFDOzs7QUFFYiw0REFBNEQ7QUFDNUQsSUFBSSxhQUFhLEdBQWtCLElBQUksQ0FBQztBQUN4QyxJQUFJLGNBQWMsR0FBVyxDQUFDLENBQUM7QUFDL0IsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFNBQVM7QUFFbkQscUVBQXFFO0FBQ3hELFFBQUEsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBRWhEOzs7R0FHRztBQUNJLEtBQUssVUFBVSxzQkFBc0I7O0lBQ3hDLHVDQUF1QztJQUN2QyxJQUFJLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxjQUFjLENBQUMsR0FBRyxpQkFBaUIsRUFBRTtRQUNwRSxPQUFPLGFBQWEsQ0FBQztLQUN4QjtJQUVELG1DQUFtQztJQUNuQyxJQUFJO1FBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUN4Qix1RkFBdUYsRUFDdkYsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUNoQyxDQUFDO1FBQ0YsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhCLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNiLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBaUMsQ0FBQztZQUNsRSxJQUFJLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFHLENBQUMsQ0FB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
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @license Copyright 2024 Brave Real Launcher Contributors.
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * Chrome Version Utility
6
+ * Dynamically fetches the latest stable Chrome version from Google's API
7
+ */
8
+ 'use strict';
9
+ // Cache the version for 1 hour to avoid excessive API calls
10
+ let cachedVersion = null;
11
+ let cacheTimestamp = 0;
12
+ const CACHE_DURATION_MS = 60 * 60 * 1000; // 1 hour
13
+ // Fallback version if all APIs fail (updated to latest known stable)
14
+ export const FALLBACK_VERSION = '144.0.7559.59';
15
+ /**
16
+ * Fetches the latest stable Chrome version from Chromium Dashboard API
17
+ * @returns The latest stable Chrome version
18
+ */
19
+ export async function getLatestChromeVersion() {
20
+ var _a, _b, _c;
21
+ // Return cached version if still valid
22
+ if (cachedVersion && (Date.now() - cacheTimestamp) < CACHE_DURATION_MS) {
23
+ return cachedVersion;
24
+ }
25
+ // Primary API - Chromium Dashboard
26
+ try {
27
+ const controller = new AbortController();
28
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
29
+ const response = await fetch('https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Windows&num=1', { signal: controller.signal });
30
+ clearTimeout(timeoutId);
31
+ if (response.ok) {
32
+ const data = await response.json();
33
+ if ((_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.version) {
34
+ cachedVersion = data[0].version;
35
+ cacheTimestamp = Date.now();
36
+ console.log(`[chrome-version] Fetched latest stable version: ${cachedVersion}`);
37
+ return cachedVersion;
38
+ }
39
+ }
40
+ }
41
+ catch (err) {
42
+ console.log(`[chrome-version] Primary API failed: ${err.message}`);
43
+ }
44
+ // Fallback API - Chrome for Testing
45
+ try {
46
+ const controller = new AbortController();
47
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
48
+ const fallbackResponse = await fetch('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json', { signal: controller.signal });
49
+ clearTimeout(timeoutId);
50
+ if (fallbackResponse.ok) {
51
+ const data = await fallbackResponse.json();
52
+ if ((_c = (_b = data === null || data === void 0 ? void 0 : data.channels) === null || _b === void 0 ? void 0 : _b.Stable) === null || _c === void 0 ? void 0 : _c.version) {
53
+ cachedVersion = data.channels.Stable.version;
54
+ cacheTimestamp = Date.now();
55
+ console.log(`[chrome-version] Fetched from fallback API: ${cachedVersion}`);
56
+ return cachedVersion;
57
+ }
58
+ }
59
+ }
60
+ catch (err) {
61
+ console.log(`[chrome-version] Fallback API failed: ${err.message}`);
62
+ }
63
+ // Use cached version if available, else fallback
64
+ console.log(`[chrome-version] Using fallback version: ${cachedVersion || FALLBACK_VERSION}`);
65
+ return cachedVersion || FALLBACK_VERSION;
66
+ }
67
+ /**
68
+ * Gets the major version number from a full version string
69
+ * @param fullVersion - Full Chrome version string
70
+ * @returns Major version number
71
+ */
72
+ export function getMajorVersion(fullVersion) {
73
+ return fullVersion.split('.')[0];
74
+ }
75
+ /**
76
+ * Generates a User-Agent string for Windows with dynamic Chrome version
77
+ * @param chromeVersion - Chrome version to use
78
+ * @param mobile - Whether this is a mobile browser
79
+ * @returns User-Agent string
80
+ */
81
+ export function generateUserAgent(chromeVersion, mobile = false) {
82
+ if (mobile) {
83
+ return `Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Mobile Safari/537.36`;
84
+ }
85
+ return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
86
+ }
87
+ /**
88
+ * Generates a User-Agent string for macOS with dynamic Chrome version
89
+ * @param chromeVersion - Chrome version to use
90
+ * @returns User-Agent string for macOS
91
+ */
92
+ export function generateUserAgentMac(chromeVersion) {
93
+ return `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
94
+ }
95
+ /**
96
+ * Generates a User-Agent string for Linux with dynamic Chrome version
97
+ * @param chromeVersion - Chrome version to use
98
+ * @returns User-Agent string for Linux
99
+ */
100
+ export function generateUserAgentLinux(chromeVersion) {
101
+ return `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
102
+ }
103
+ /**
104
+ * Generates userAgentMetadata object with dynamic Chrome version
105
+ * @param chromeVersion - Chrome version to use
106
+ * @param mobile - Whether this is a mobile browser
107
+ * @returns UserAgentMetadata object
108
+ */
109
+ export function generateUserAgentMetadata(chromeVersion, mobile = false) {
110
+ const majorVersion = getMajorVersion(chromeVersion);
111
+ return {
112
+ brands: [
113
+ { brand: 'Not_A Brand', version: '24' },
114
+ { brand: 'Chromium', version: majorVersion },
115
+ { brand: 'Google Chrome', version: majorVersion }
116
+ ],
117
+ fullVersionList: [
118
+ { brand: 'Not_A Brand', version: '24.0.0.0' },
119
+ { brand: 'Chromium', version: chromeVersion },
120
+ { brand: 'Google Chrome', version: chromeVersion }
121
+ ],
122
+ platform: mobile ? 'Android' : 'Windows',
123
+ platformVersion: mobile ? '13.0.0' : '10.0.0',
124
+ architecture: mobile ? '' : 'x86',
125
+ model: mobile ? 'Pixel 7' : '',
126
+ mobile: mobile,
127
+ bitness: mobile ? '' : '64',
128
+ wow64: false
129
+ };
130
+ }
131
+ /**
132
+ * Gets user agent for current platform with dynamic Chrome version
133
+ * @param chromeVersion - Chrome version to use
134
+ * @returns User-Agent string for current platform
135
+ */
136
+ export function getUserAgentForPlatform(chromeVersion) {
137
+ const platform = process.platform;
138
+ switch (platform) {
139
+ case 'win32': return generateUserAgent(chromeVersion, false);
140
+ case 'darwin': return generateUserAgentMac(chromeVersion);
141
+ default: return generateUserAgentLinux(chromeVersion);
142
+ }
143
+ }
144
+ export default {
145
+ getLatestChromeVersion,
146
+ getMajorVersion,
147
+ generateUserAgent,
148
+ generateUserAgentMac,
149
+ generateUserAgentLinux,
150
+ generateUserAgentMetadata,
151
+ getUserAgentForPlatform,
152
+ FALLBACK_VERSION
153
+ };
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21lLXZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hyb21lLXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsWUFBWSxDQUFDO0FBRWIsNERBQTREO0FBQzVELElBQUksYUFBYSxHQUFrQixJQUFJLENBQUM7QUFDeEMsSUFBSSxjQUFjLEdBQVcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxTQUFTO0FBRW5ELHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFFaEQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxzQkFBc0I7O0lBQ3hDLHVDQUF1QztJQUN2QyxJQUFJLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxjQUFjLENBQUMsR0FBRyxpQkFBaUIsRUFBRTtRQUNwRSxPQUFPLGFBQWEsQ0FBQztLQUN4QjtJQUVELG1DQUFtQztJQUNuQyxJQUFJO1FBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUN4Qix1RkFBdUYsRUFDdkYsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUNoQyxDQUFDO1FBQ0YsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhCLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNiLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBaUMsQ0FBQztZQUNsRSxJQUFJLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUos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
package/dist/index.d.ts CHANGED
@@ -9,5 +9,6 @@ export { DEFAULT_FLAGS } from './flags.js';
9
9
  export { getRandomPort } from './random-port.js';
10
10
  export { ExtensionManager, ExtensionInfo, ExtensionManagerOptions } from './extension-manager.js';
11
11
  export { BraveInstaller, InstallerOptions, InstallResult } from './brave-installer.js';
12
- export { STEALTH_FLAGS, STEALTH_SCRIPTS, USER_AGENTS, getStealthFlags, getStealthScript } from './stealth-utils.js';
12
+ export { STEALTH_FLAGS, STEALTH_SCRIPTS, USER_AGENTS, getStealthFlags, getStealthScript, getDynamicStealthFlags, getDynamicUserAgents, getLatestChromeVersion, generateUserAgent, generateUserAgentMac, generateUserAgentLinux, getUserAgentForPlatform, FALLBACK_VERSION } from './stealth-utils.js';
13
+ export * as chromeVersion from './chrome-version.js';
13
14
  export * as braveFinder from './brave-finder.js';
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  return result;
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.braveFinder = exports.getStealthScript = exports.getStealthFlags = exports.USER_AGENTS = exports.STEALTH_SCRIPTS = exports.STEALTH_FLAGS = exports.BraveInstaller = exports.ExtensionManager = exports.getRandomPort = exports.DEFAULT_FLAGS = exports.getPlatform = exports.detectDesktopEnvironment = exports.XvfbManager = exports.BraveLauncher = exports.findBrave = exports.getInstallations = exports.getBravePath = exports.killAll = exports.launch = void 0;
31
+ exports.braveFinder = exports.chromeVersion = exports.FALLBACK_VERSION = exports.getUserAgentForPlatform = exports.generateUserAgentLinux = exports.generateUserAgentMac = exports.generateUserAgent = exports.getLatestChromeVersion = exports.getDynamicUserAgents = exports.getDynamicStealthFlags = exports.getStealthScript = exports.getStealthFlags = exports.USER_AGENTS = exports.STEALTH_SCRIPTS = exports.STEALTH_FLAGS = exports.BraveInstaller = exports.ExtensionManager = exports.getRandomPort = exports.DEFAULT_FLAGS = exports.getPlatform = exports.detectDesktopEnvironment = exports.XvfbManager = exports.BraveLauncher = exports.findBrave = exports.getInstallations = exports.getBravePath = exports.killAll = exports.launch = void 0;
32
32
  var brave_launcher_js_1 = require("./brave-launcher.js");
33
33
  Object.defineProperty(exports, "launch", { enumerable: true, get: function () { return brave_launcher_js_1.launch; } });
34
34
  Object.defineProperty(exports, "killAll", { enumerable: true, get: function () { return brave_launcher_js_1.killAll; } });
@@ -57,6 +57,16 @@ Object.defineProperty(exports, "STEALTH_SCRIPTS", { enumerable: true, get: funct
57
57
  Object.defineProperty(exports, "USER_AGENTS", { enumerable: true, get: function () { return stealth_utils_js_1.USER_AGENTS; } });
58
58
  Object.defineProperty(exports, "getStealthFlags", { enumerable: true, get: function () { return stealth_utils_js_1.getStealthFlags; } });
59
59
  Object.defineProperty(exports, "getStealthScript", { enumerable: true, get: function () { return stealth_utils_js_1.getStealthScript; } });
60
+ Object.defineProperty(exports, "getDynamicStealthFlags", { enumerable: true, get: function () { return stealth_utils_js_1.getDynamicStealthFlags; } });
61
+ Object.defineProperty(exports, "getDynamicUserAgents", { enumerable: true, get: function () { return stealth_utils_js_1.getDynamicUserAgents; } });
62
+ Object.defineProperty(exports, "getLatestChromeVersion", { enumerable: true, get: function () { return stealth_utils_js_1.getLatestChromeVersion; } });
63
+ Object.defineProperty(exports, "generateUserAgent", { enumerable: true, get: function () { return stealth_utils_js_1.generateUserAgent; } });
64
+ Object.defineProperty(exports, "generateUserAgentMac", { enumerable: true, get: function () { return stealth_utils_js_1.generateUserAgentMac; } });
65
+ Object.defineProperty(exports, "generateUserAgentLinux", { enumerable: true, get: function () { return stealth_utils_js_1.generateUserAgentLinux; } });
66
+ Object.defineProperty(exports, "getUserAgentForPlatform", { enumerable: true, get: function () { return stealth_utils_js_1.getUserAgentForPlatform; } });
67
+ Object.defineProperty(exports, "FALLBACK_VERSION", { enumerable: true, get: function () { return stealth_utils_js_1.FALLBACK_VERSION; } });
68
+ // Chrome version utilities
69
+ exports.chromeVersion = __importStar(require("./chrome-version.js"));
60
70
  // Also export everything from brave-finder for advanced usage
61
71
  exports.braveFinder = __importStar(require("./brave-finder.js"));
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgseURBVTZCO0FBVDNCLDJHQUFBLE1BQU0sT0FBQTtBQUNOLDRHQUFBLE9BQU8sT0FBQTtBQUNQLGlIQUFBLFlBQVksT0FBQTtBQUNaLHFIQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLFNBQVMsT0FBQTtBQUNULGtIQUFBLFFBQVEsT0FBaUI7QUFNM0IsdUNBS29CO0FBSmxCLHVHQUFBLFdBQVcsT0FBQTtBQUVYLG9IQUFBLHdCQUF3QixPQUFBO0FBQ3hCLHVHQUFBLFdBQVcsT0FBQTtBQUdiLHVDQUEyQztBQUFsQyx5R0FBQSxhQUFhLE9BQUE7QUFDdEIsbURBQWlEO0FBQXhDLCtHQUFBLGFBQWEsT0FBQTtBQUV0Qiw4REFBOEQ7QUFDOUQsK0RBQWtHO0FBQXpGLHdIQUFBLGdCQUFnQixPQUFBO0FBRXpCLG9EQUFvRDtBQUNwRCwyREFBdUY7QUFBOUUsb0hBQUEsY0FBYyxPQUFBO0FBRXZCLDJDQUEyQztBQUMzQyx1REFBb0g7QUFBM0csaUhBQUEsYUFBYSxPQUFBO0FBQUUsbUhBQUEsZUFBZSxPQUFBO0FBQUUsK0dBQUEsV0FBVyxPQUFBO0FBQUUsbUhBQUEsZUFBZSxPQUFBO0FBQUUsb0hBQUEsZ0JBQWdCLE9BQUE7QUFFdkYsOERBQThEO0FBQzlELGlFQUFpRCJ9
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgseURBVTZCO0FBVDNCLDJHQUFBLE1BQU0sT0FBQTtBQUNOLDRHQUFBLE9BQU8sT0FBQTtBQUNQLGlIQUFBLFlBQVksT0FBQTtBQUNaLHFIQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLFNBQVMsT0FBQTtBQUNULGtIQUFBLFFBQVEsT0FBaUI7QUFNM0IsdUNBS29CO0FBSmxCLHVHQUFBLFdBQVcsT0FBQTtBQUVYLG9IQUFBLHdCQUF3QixPQUFBO0FBQ3hCLHVHQUFBLFdBQVcsT0FBQTtBQUdiLHVDQUEyQztBQUFsQyx5R0FBQSxhQUFhLE9BQUE7QUFDdEIsbURBQWlEO0FBQXhDLCtHQUFBLGFBQWEsT0FBQTtBQUV0Qiw4REFBOEQ7QUFDOUQsK0RBQWtHO0FBQXpGLHdIQUFBLGdCQUFnQixPQUFBO0FBRXpCLG9EQUFvRDtBQUNwRCwyREFBdUY7QUFBOUUsb0hBQUEsY0FBYyxPQUFBO0FBRXZCLDJDQUEyQztBQUMzQyx1REFjNEI7QUFiMUIsaUhBQUEsYUFBYSxPQUFBO0FBQ2IsbUhBQUEsZUFBZSxPQUFBO0FBQ2YsK0dBQUEsV0FBVyxPQUFBO0FBQ1gsbUhBQUEsZUFBZSxPQUFBO0FBQ2Ysb0hBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsMEhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsd0hBQUEsb0JBQW9CLE9BQUE7QUFDcEIsMEhBQUEsc0JBQXNCLE9BQUE7QUFDdEIscUhBQUEsaUJBQWlCLE9BQUE7QUFDakIsd0hBQUEsb0JBQW9CLE9BQUE7QUFDcEIsMEhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsMkhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsb0hBQUEsZ0JBQWdCLE9BQUE7QUFHbEIsMkJBQTJCO0FBQzNCLHFFQUFxRDtBQUVyRCw4REFBOEQ7QUFDOUQsaUVBQWlEIn0=
package/dist/index.mjs CHANGED
@@ -12,7 +12,9 @@ export { ExtensionManager } from './extension-manager.mjs';
12
12
  // Brave Installer for auto-installing Brave browser
13
13
  export { BraveInstaller } from './brave-installer.mjs';
14
14
  // Stealth utilities for anti-bot-detection
15
- export { STEALTH_FLAGS, STEALTH_SCRIPTS, USER_AGENTS, getStealthFlags, getStealthScript } from './stealth-utils.mjs';
15
+ export { STEALTH_FLAGS, STEALTH_SCRIPTS, USER_AGENTS, getStealthFlags, getStealthScript, getDynamicStealthFlags, getDynamicUserAgents, getLatestChromeVersion, generateUserAgent, generateUserAgentMac, generateUserAgentLinux, getUserAgentForPlatform, FALLBACK_VERSION } from './stealth-utils.mjs';
16
+ // Chrome version utilities
17
+ export * as chromeVersion from './chrome-version.mjs';
16
18
  // Also export everything from brave-finder for advanced usage
17
19
  export * as braveFinder from './brave-finder.mjs';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFFBQVEsSUFBSSxhQUFhLEVBSTFCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLFdBQVcsRUFFWCx3QkFBd0IsRUFDeEIsV0FBVyxFQUNaLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELDhEQUE4RDtBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBDLE1BQU0sd0JBQXdCLENBQUM7QUFFbEcsb0RBQW9EO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQW1DLE1BQU0sc0JBQXNCLENBQUM7QUFFdkYsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwSCw4REFBOEQ7QUFDOUQsT0FBTyxLQUFLLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQyJ9
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFFBQVEsSUFBSSxhQUFhLEVBSTFCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLFdBQVcsRUFFWCx3QkFBd0IsRUFDeEIsV0FBVyxFQUNaLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELDhEQUE4RDtBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBDLE1BQU0sd0JBQXdCLENBQUM7QUFFbEcsb0RBQW9EO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQW1DLE1BQU0sc0JBQXNCLENBQUM7QUFFdkYsMkNBQTJDO0FBQzNDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDakIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QiwyQkFBMkI7QUFDM0IsT0FBTyxLQUFLLGFBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCw4REFBOEQ7QUFDOUQsT0FBTyxLQUFLLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQyJ9
@@ -49,22 +49,40 @@ export declare const STEALTH_SCRIPTS: {
49
49
  */
50
50
  readonly fullStealth: string;
51
51
  };
52
+ import { getLatestChromeVersion, generateUserAgent, generateUserAgentMac, generateUserAgentLinux, getUserAgentForPlatform, FALLBACK_VERSION } from './chrome-version.js';
53
+ export { getLatestChromeVersion, generateUserAgent, generateUserAgentMac, generateUserAgentLinux, getUserAgentForPlatform, FALLBACK_VERSION };
52
54
  /**
53
55
  * User agent strings for different platforms
56
+ * Uses dynamic Chrome version with fallback
54
57
  */
55
58
  export declare const USER_AGENTS: {
56
- windows: string;
57
- macos: string;
58
- linux: string;
59
+ readonly windows: string;
60
+ readonly macos: string;
61
+ readonly linux: string;
59
62
  /**
60
- * Get user agent for current platform
63
+ * Get user agent for current platform (sync version with fallback)
61
64
  */
62
65
  readonly current: string;
63
66
  };
67
+ /**
68
+ * Get user agents with dynamic Chrome version (async)
69
+ * Fetches latest Chrome version from Google APIs
70
+ */
71
+ export declare function getDynamicUserAgents(): Promise<{
72
+ windows: string;
73
+ macos: string;
74
+ linux: string;
75
+ current: string;
76
+ }>;
64
77
  /**
65
78
  * Get stealth flags with optional custom user agent
66
79
  */
67
80
  export declare function getStealthFlags(userAgent?: string): string[];
81
+ /**
82
+ * Get stealth flags with dynamic Chrome version (async)
83
+ * Fetches latest Chrome version from Google APIs
84
+ */
85
+ export declare function getDynamicStealthFlags(userAgent?: string): Promise<string[]>;
68
86
  /**
69
87
  * Get the full stealth injection script
70
88
  */
@@ -114,15 +132,20 @@ declare const _default: {
114
132
  readonly fullStealth: string;
115
133
  };
116
134
  USER_AGENTS: {
117
- windows: string;
118
- macos: string;
119
- linux: string;
135
+ readonly windows: string;
136
+ readonly macos: string;
137
+ readonly linux: string;
120
138
  /**
121
- * Get user agent for current platform
139
+ * Get user agent for current platform (sync version with fallback)
122
140
  */
123
141
  readonly current: string;
124
142
  };
125
143
  getStealthFlags: typeof getStealthFlags;
144
+ getDynamicStealthFlags: typeof getDynamicStealthFlags;
145
+ getDynamicUserAgents: typeof getDynamicUserAgents;
126
146
  getStealthScript: typeof getStealthScript;
147
+ getLatestChromeVersion: typeof getLatestChromeVersion;
148
+ generateUserAgent: typeof generateUserAgent;
149
+ FALLBACK_VERSION: string;
127
150
  };
128
151
  export default _default;
@@ -7,7 +7,7 @@
7
7
  */
8
8
  'use strict';
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.getStealthScript = exports.getStealthFlags = exports.USER_AGENTS = exports.STEALTH_SCRIPTS = exports.STEALTH_FLAGS = void 0;
10
+ exports.getStealthScript = exports.getDynamicStealthFlags = exports.getStealthFlags = exports.getDynamicUserAgents = exports.USER_AGENTS = exports.FALLBACK_VERSION = exports.getUserAgentForPlatform = exports.generateUserAgentLinux = exports.generateUserAgentMac = exports.generateUserAgent = exports.getLatestChromeVersion = exports.STEALTH_SCRIPTS = exports.STEALTH_FLAGS = void 0;
11
11
  /**
12
12
  * Stealth flags to add to browser launch
13
13
  * These help bypass basic bot detection
@@ -160,25 +160,54 @@ exports.STEALTH_SCRIPTS = {
160
160
  ].join('\n');
161
161
  }
162
162
  };
163
+ const chrome_version_js_1 = require("./chrome-version.js");
164
+ Object.defineProperty(exports, "getLatestChromeVersion", { enumerable: true, get: function () { return chrome_version_js_1.getLatestChromeVersion; } });
165
+ Object.defineProperty(exports, "generateUserAgent", { enumerable: true, get: function () { return chrome_version_js_1.generateUserAgent; } });
166
+ Object.defineProperty(exports, "generateUserAgentMac", { enumerable: true, get: function () { return chrome_version_js_1.generateUserAgentMac; } });
167
+ Object.defineProperty(exports, "generateUserAgentLinux", { enumerable: true, get: function () { return chrome_version_js_1.generateUserAgentLinux; } });
168
+ Object.defineProperty(exports, "getUserAgentForPlatform", { enumerable: true, get: function () { return chrome_version_js_1.getUserAgentForPlatform; } });
169
+ Object.defineProperty(exports, "FALLBACK_VERSION", { enumerable: true, get: function () { return chrome_version_js_1.FALLBACK_VERSION; } });
163
170
  /**
164
171
  * User agent strings for different platforms
172
+ * Uses dynamic Chrome version with fallback
165
173
  */
166
174
  exports.USER_AGENTS = {
167
- windows: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
168
- macos: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
169
- linux: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
175
+ get windows() {
176
+ return (0, chrome_version_js_1.generateUserAgent)(chrome_version_js_1.FALLBACK_VERSION, false);
177
+ },
178
+ get macos() {
179
+ return (0, chrome_version_js_1.generateUserAgentMac)(chrome_version_js_1.FALLBACK_VERSION);
180
+ },
181
+ get linux() {
182
+ return (0, chrome_version_js_1.generateUserAgentLinux)(chrome_version_js_1.FALLBACK_VERSION);
183
+ },
170
184
  /**
171
- * Get user agent for current platform
185
+ * Get user agent for current platform (sync version with fallback)
172
186
  */
173
187
  get current() {
174
- const platform = process.platform;
175
- switch (platform) {
176
- case 'win32': return this.windows;
177
- case 'darwin': return this.macos;
178
- default: return this.linux;
179
- }
188
+ return (0, chrome_version_js_1.getUserAgentForPlatform)(chrome_version_js_1.FALLBACK_VERSION);
180
189
  }
181
190
  };
191
+ // Cached dynamic user agents
192
+ let cachedDynamicUserAgents = null;
193
+ /**
194
+ * Get user agents with dynamic Chrome version (async)
195
+ * Fetches latest Chrome version from Google APIs
196
+ */
197
+ async function getDynamicUserAgents() {
198
+ if (!cachedDynamicUserAgents) {
199
+ const chromeVersion = await (0, chrome_version_js_1.getLatestChromeVersion)();
200
+ cachedDynamicUserAgents = {
201
+ windows: (0, chrome_version_js_1.generateUserAgent)(chromeVersion, false),
202
+ macos: (0, chrome_version_js_1.generateUserAgentMac)(chromeVersion),
203
+ linux: (0, chrome_version_js_1.generateUserAgentLinux)(chromeVersion),
204
+ current: (0, chrome_version_js_1.getUserAgentForPlatform)(chromeVersion)
205
+ };
206
+ console.log(`[stealth-utils] Dynamic User-Agents loaded with Chrome ${chromeVersion}`);
207
+ }
208
+ return cachedDynamicUserAgents;
209
+ }
210
+ exports.getDynamicUserAgents = getDynamicUserAgents;
182
211
  /**
183
212
  * Get stealth flags with optional custom user agent
184
213
  */
@@ -193,6 +222,22 @@ function getStealthFlags(userAgent) {
193
222
  return flags;
194
223
  }
195
224
  exports.getStealthFlags = getStealthFlags;
225
+ /**
226
+ * Get stealth flags with dynamic Chrome version (async)
227
+ * Fetches latest Chrome version from Google APIs
228
+ */
229
+ async function getDynamicStealthFlags(userAgent) {
230
+ const flags = [...exports.STEALTH_FLAGS];
231
+ if (userAgent) {
232
+ flags.push(`--user-agent=${userAgent}`);
233
+ }
234
+ else {
235
+ const dynamicAgents = await getDynamicUserAgents();
236
+ flags.push(`--user-agent=${dynamicAgents.current}`);
237
+ }
238
+ return flags;
239
+ }
240
+ exports.getDynamicStealthFlags = getDynamicStealthFlags;
196
241
  /**
197
242
  * Get the full stealth injection script
198
243
  */
@@ -205,6 +250,11 @@ exports.default = {
205
250
  STEALTH_SCRIPTS: exports.STEALTH_SCRIPTS,
206
251
  USER_AGENTS: exports.USER_AGENTS,
207
252
  getStealthFlags,
208
- getStealthScript
253
+ getDynamicStealthFlags,
254
+ getDynamicUserAgents,
255
+ getStealthScript,
256
+ getLatestChromeVersion: chrome_version_js_1.getLatestChromeVersion,
257
+ generateUserAgent: chrome_version_js_1.generateUserAgent,
258
+ FALLBACK_VERSION: chrome_version_js_1.FALLBACK_VERSION
209
259
  };
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlYWx0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVhbHRoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILFlBQVksQ0FBQzs7O0FBRWI7OztHQUdHO0FBQ1UsUUFBQSxhQUFhLEdBQTBCO0lBRWxELHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFFMUIsK0JBQStCO0lBQy9CLGdDQUFnQztJQUVoQyw0QkFBNEI7SUFDNUIsZ0JBQWdCO0lBRWhCLGdDQUFnQztJQUNoQyw0QkFBNEI7SUFFNUIsd0JBQXdCO0lBQ3hCLHlCQUF5QjtDQUMxQixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUc7SUFDN0I7O09BRUc7SUFDSCxpQkFBaUIsRUFBRTs7Ozs7R0FLbEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFoQjtJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLEVBQUU7Ozs7O0dBS2xCO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRTs7Ozs7OztHQU9wQjtJQUVEOztPQUVHO0lBQ0gscUJBQXFCLEVBQUU7Ozs7Ozs7R0FPdEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7R0FRaEI7SUFFRDs7T0FFRztJQUNILGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZWY7SUFFRDs7T0FFRztJQUNILGFBQWEsRUFBRTs7Ozs7Ozs7Ozs7R0FXZDtJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLEVBQUU7Ozs7Ozs7R0FPbkI7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxrQkFBa0I7U0FDeEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxXQUFXLEdBQUc7SUFDekIsT0FBTyxFQUFFLGlIQUFpSDtJQUMxSCxLQUFLLEVBQUUsdUhBQXVIO0lBQzlILEtBQUssRUFBRSx1R0FBdUc7SUFFOUc7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2xDLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xDLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUM1QjtJQUNILENBQUM7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsU0FBa0I7SUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLHFCQUFhLENBQUMsQ0FBQztJQUVqQyxJQUFJLFNBQVMsRUFBRTtRQUNiLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDekM7U0FBTTtRQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLG1CQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUNuRDtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELDBDQVVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0I7SUFDOUIsT0FBTyx1QkFBZSxDQUFDLFdBQVcsQ0FBQztBQUNyQyxDQUFDO0FBRkQsNENBRUM7QUFFRCxrQkFBZTtJQUNiLGFBQWEsRUFBYixxQkFBYTtJQUNiLGVBQWUsRUFBZix1QkFBZTtJQUNmLFdBQVcsRUFBWCxtQkFBVztJQUNYLGVBQWU7SUFDZixnQkFBZ0I7Q0FDakIsQ0FBQyJ9
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlYWx0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVhbHRoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILFlBQVksQ0FBQzs7O0FBRWI7OztHQUdHO0FBQ1UsUUFBQSxhQUFhLEdBQTBCO0lBRWxELHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFFMUIsK0JBQStCO0lBQy9CLGdDQUFnQztJQUVoQyw0QkFBNEI7SUFDNUIsZ0JBQWdCO0lBRWhCLGdDQUFnQztJQUNoQyw0QkFBNEI7SUFFNUIsd0JBQXdCO0lBQ3hCLHlCQUF5QjtDQUMxQixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUc7SUFDN0I7O09BRUc7SUFDSCxpQkFBaUIsRUFBRTs7Ozs7R0FLbEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFoQjtJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLEVBQUU7Ozs7O0dBS2xCO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRTs7Ozs7OztHQU9wQjtJQUVEOztPQUVHO0lBQ0gscUJBQXFCLEVBQUU7Ozs7Ozs7R0FPdEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7R0FRaEI7SUFFRDs7T0FFRztJQUNILGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZWY7SUFFRDs7T0FFRztJQUNILGFBQWEsRUFBRTs7Ozs7Ozs7Ozs7R0FXZDtJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLEVBQUU7Ozs7Ozs7R0FPbkI7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUks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
@@ -158,25 +158,49 @@ export const STEALTH_SCRIPTS = {
158
158
  ].join('\n');
159
159
  }
160
160
  };
161
+ import { getLatestChromeVersion, generateUserAgent, generateUserAgentMac, generateUserAgentLinux, getUserAgentForPlatform, FALLBACK_VERSION } from './chrome-version.mjs';
162
+ // Re-export chrome-version functions for convenience
163
+ export { getLatestChromeVersion, generateUserAgent, generateUserAgentMac, generateUserAgentLinux, getUserAgentForPlatform, FALLBACK_VERSION };
161
164
  /**
162
165
  * User agent strings for different platforms
166
+ * Uses dynamic Chrome version with fallback
163
167
  */
164
168
  export const USER_AGENTS = {
165
- windows: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
166
- macos: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
167
- linux: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
169
+ get windows() {
170
+ return generateUserAgent(FALLBACK_VERSION, false);
171
+ },
172
+ get macos() {
173
+ return generateUserAgentMac(FALLBACK_VERSION);
174
+ },
175
+ get linux() {
176
+ return generateUserAgentLinux(FALLBACK_VERSION);
177
+ },
168
178
  /**
169
- * Get user agent for current platform
179
+ * Get user agent for current platform (sync version with fallback)
170
180
  */
171
181
  get current() {
172
- const platform = process.platform;
173
- switch (platform) {
174
- case 'win32': return this.windows;
175
- case 'darwin': return this.macos;
176
- default: return this.linux;
177
- }
182
+ return getUserAgentForPlatform(FALLBACK_VERSION);
178
183
  }
179
184
  };
185
+ // Cached dynamic user agents
186
+ let cachedDynamicUserAgents = null;
187
+ /**
188
+ * Get user agents with dynamic Chrome version (async)
189
+ * Fetches latest Chrome version from Google APIs
190
+ */
191
+ export async function getDynamicUserAgents() {
192
+ if (!cachedDynamicUserAgents) {
193
+ const chromeVersion = await getLatestChromeVersion();
194
+ cachedDynamicUserAgents = {
195
+ windows: generateUserAgent(chromeVersion, false),
196
+ macos: generateUserAgentMac(chromeVersion),
197
+ linux: generateUserAgentLinux(chromeVersion),
198
+ current: getUserAgentForPlatform(chromeVersion)
199
+ };
200
+ console.log(`[stealth-utils] Dynamic User-Agents loaded with Chrome ${chromeVersion}`);
201
+ }
202
+ return cachedDynamicUserAgents;
203
+ }
180
204
  /**
181
205
  * Get stealth flags with optional custom user agent
182
206
  */
@@ -190,6 +214,21 @@ export function getStealthFlags(userAgent) {
190
214
  }
191
215
  return flags;
192
216
  }
217
+ /**
218
+ * Get stealth flags with dynamic Chrome version (async)
219
+ * Fetches latest Chrome version from Google APIs
220
+ */
221
+ export async function getDynamicStealthFlags(userAgent) {
222
+ const flags = [...STEALTH_FLAGS];
223
+ if (userAgent) {
224
+ flags.push(`--user-agent=${userAgent}`);
225
+ }
226
+ else {
227
+ const dynamicAgents = await getDynamicUserAgents();
228
+ flags.push(`--user-agent=${dynamicAgents.current}`);
229
+ }
230
+ return flags;
231
+ }
193
232
  /**
194
233
  * Get the full stealth injection script
195
234
  */
@@ -201,6 +240,11 @@ export default {
201
240
  STEALTH_SCRIPTS,
202
241
  USER_AGENTS,
203
242
  getStealthFlags,
204
- getStealthScript
243
+ getDynamicStealthFlags,
244
+ getDynamicUserAgents,
245
+ getStealthScript,
246
+ getLatestChromeVersion,
247
+ generateUserAgent,
248
+ FALLBACK_VERSION
205
249
  };
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlYWx0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVhbHRoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILFlBQVksQ0FBQztBQUViOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMEI7SUFFbEQseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUUxQiwrQkFBK0I7SUFDL0IsZ0NBQWdDO0lBRWhDLDRCQUE0QjtJQUM1QixnQkFBZ0I7SUFFaEIsZ0NBQWdDO0lBQ2hDLDRCQUE0QjtJQUU1Qix3QkFBd0I7SUFDeEIseUJBQXlCO0NBQzFCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0I7O09BRUc7SUFDSCxpQkFBaUIsRUFBRTs7Ozs7R0FLbEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFoQjtJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLEVBQUU7Ozs7O0dBS2xCO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRTs7Ozs7OztHQU9wQjtJQUVEOztPQUVHO0lBQ0gscUJBQXFCLEVBQUU7Ozs7Ozs7R0FPdEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7R0FRaEI7SUFFRDs7T0FFRztJQUNILGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZWY7SUFFRDs7T0FFRztJQUNILGFBQWEsRUFBRTs7Ozs7Ozs7Ozs7R0FXZDtJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLEVBQUU7Ozs7Ozs7R0FPbkI7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxrQkFBa0I7U0FDeEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLE9BQU8sRUFBRSxpSEFBaUg7SUFDMUgsS0FBSyxFQUFFLHVIQUF1SDtJQUM5SCxLQUFLLEVBQUUsdUdBQXVHO0lBRTlHOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNsQyxRQUFRLFFBQVEsRUFBRTtZQUNoQixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNqQyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDNUI7SUFDSCxDQUFDO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFrQjtJQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFFakMsSUFBSSxTQUFTLEVBQUU7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDO1NBQU07UUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUNuRDtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLGVBQWUsQ0FBQyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVELGVBQWU7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLFdBQVc7SUFDWCxlQUFlO0lBQ2YsZ0JBQWdCO0NBQ2pCLENBQUMifQ==
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlYWx0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVhbHRoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILFlBQVksQ0FBQztBQUViOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMEI7SUFFbEQseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUUxQiwrQkFBK0I7SUFDL0IsZ0NBQWdDO0lBRWhDLDRCQUE0QjtJQUM1QixnQkFBZ0I7SUFFaEIsZ0NBQWdDO0lBQ2hDLDRCQUE0QjtJQUU1Qix3QkFBd0I7SUFDeEIseUJBQXlCO0NBQzFCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0I7O09BRUc7SUFDSCxpQkFBaUIsRUFBRTs7Ozs7R0FLbEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFoQjtJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLEVBQUU7Ozs7O0dBS2xCO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRTs7Ozs7OztHQU9wQjtJQUVEOztPQUVHO0lBQ0gscUJBQXFCLEVBQUU7Ozs7Ozs7R0FPdEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7R0FRaEI7SUFFRDs7T0FFRztJQUNILGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZWY7SUFFRDs7T0FFRztJQUNILGFBQWEsRUFBRTs7Ozs7Ozs7Ozs7R0FXZDtJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLEVBQUU7Ozs7Ozs7R0FPbkI7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-launcher",
3
- "version": "1.2.43",
3
+ "version": "1.2.44",
4
4
  "description": "Launch Brave Browser with ease from node. Based on chrome-launcher with Brave-specific support.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",