brave-real-launcher 1.2.42 → 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.
- package/dist/brave-launcher.js +12 -1
- package/dist/brave-launcher.mjs +13 -2
- package/dist/chrome-version.d.ts +75 -0
- package/dist/chrome-version.js +163 -0
- package/dist/chrome-version.mjs +154 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +12 -2
- package/dist/index.mjs +4 -2
- package/dist/stealth-utils.d.ts +31 -8
- package/dist/stealth-utils.js +63 -13
- package/dist/stealth-utils.mjs +56 -12
- package/package.json +1 -1
package/dist/brave-launcher.js
CHANGED
|
@@ -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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
|
package/dist/brave-launcher.mjs
CHANGED
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21lLXZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hyb21lLXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsWUFBWSxDQUFDOzs7QUFFYiw0REFBNEQ7QUFDNUQsSUFBSSxhQUFhLEdBQWtCLElBQUksQ0FBQztBQUN4QyxJQUFJLGNBQWMsR0FBVyxDQUFDLENBQUM7QUFDL0IsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFNBQVM7QUFFbkQscUVBQXFFO0FBQ3hELFFBQUEsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBRWhEOzs7R0FHRztBQUNJLEtBQUssVUFBVSxzQkFBc0I7O0lBQ3hDLHVDQUF1QztJQUN2QyxJQUFJLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxjQUFjLENBQUMsR0FBRyxpQkFBaUIsRUFBRTtRQUNwRSxPQUFPLGFBQWEsQ0FBQztLQUN4QjtJQUVELG1DQUFtQztJQUNuQyxJQUFJO1FBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUN4Qix1RkFBdUYsRUFDdkYsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUNoQyxDQUFDO1FBQ0YsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhCLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNiLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBaUMsQ0FBQztZQUNsRSxJQUFJLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFHLENBQUMsQ0FBQywwQ0FBRSxPQUFPLEVBQUU7Z0JBQ3BCLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNoQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLG1EQUFtRCxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRixPQUFPLGFBQWEsQ0FBQzthQUN4QjtTQUNKO0tBQ0o7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXlDLEdBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ2pGO0lBRUQsb0NBQW9DO0lBQ3BDLElBQUk7UUFDQSxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFOUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEtBQUssQ0FDaEMscUZBQXFGLEVBQ3JGLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FDaEMsQ0FBQztRQUNGLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4QixJQUFJLGdCQUFnQixDQUFDLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksR0FBRyxNQUFNLGdCQUFnQixDQUFDLElBQUksRUFBc0QsQ0FBQztZQUMvRixJQUFJLE1BQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSwwQ0FBRSxNQUFNLDBDQUFFLE9BQU8sRUFBRTtnQkFDakMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDN0MsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsYUFBYSxFQUFFLENBQUMsQ0FBQztnQkFDNUUsT0FBTyxhQUFhLENBQUM7YUFDeEI7U0FDSjtLQUNKO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLHlDQUEwQyxHQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUNsRjtJQUVELGlEQUFpRDtJQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxhQUFhLElBQUksd0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLE9BQU8sYUFBYSxJQUFJLHdCQUFnQixDQUFDO0FBQzdDLENBQUM7QUF6REQsd0RBeURDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxXQUFtQjtJQUMvQyxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUZELDBDQUVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxhQUFxQixFQUFFLFNBQWtCLEtBQUs7SUFDNUUsSUFBSSxNQUFNLEVBQUU7UUFDUixPQUFPLDBGQUEwRixhQUFhLHVCQUF1QixDQUFDO0tBQ3pJO0lBQ0QsT0FBTywyRkFBMkYsYUFBYSxnQkFBZ0IsQ0FBQztBQUNwSSxDQUFDO0FBTEQsOENBS0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsYUFBcUI7SUFDdEQsT0FBTyxpR0FBaUcsYUFBYSxnQkFBZ0IsQ0FBQztBQUMxSSxDQUFDO0FBRkQsb0RBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsYUFBcUI7SUFDeEQsT0FBTyxpRkFBaUYsYUFBYSxnQkFBZ0IsQ0FBQztBQUMxSCxDQUFDO0FBRkQsd0RBRUM7QUFpQkQ7Ozs7O0dBS0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxhQUFxQixFQUFFLFNBQWtCLEtBQUs7SUFDcEYsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXBELE9BQU87UUFDSCxNQUFNLEVBQUU7WUFDSixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtZQUN2QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRTtZQUM1QyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRTtTQUNwRDtRQUNELGVBQWUsRUFBRTtZQUNiLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO1lBQzdDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFO1lBQzdDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFO1NBQ3JEO1FBQ0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3hDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUM3QyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQzNCLEtBQUssRUFBRSxLQUFLO0tBQ2YsQ0FBQztBQUNOLENBQUM7QUF0QkQsOERBc0JDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLGFBQXFCO0lBQ3pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsUUFBUSxRQUFRLEVBQUU7UUFDZCxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8saUJBQWlCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRCxPQUFPLENBQUMsQ0FBQyxPQUFPLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0wsQ0FBQztBQVBELDBEQU9DO0FBRUQsa0JBQWU7SUFDWCxzQkFBc0I7SUFDdEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkIsZ0JBQWdCLEVBQWhCLHdCQUFnQjtDQUNuQixDQUFDIn0=
|
|
@@ -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,
|
|
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,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFFBQVEsSUFBSSxhQUFhLEVBSTFCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLFdBQVcsRUFFWCx3QkFBd0IsRUFDeEIsV0FBVyxFQUNaLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELDhEQUE4RDtBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBDLE1BQU0sd0JBQXdCLENBQUM7QUFFbEcsb0RBQW9EO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQW1DLE1BQU0sc0JBQXNCLENBQUM7QUFFdkYsMkNBQTJDO0FBQzNDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDakIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QiwyQkFBMkI7QUFDM0IsT0FBTyxLQUFLLGFBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCw4REFBOEQ7QUFDOUQsT0FBTyxLQUFLLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQyJ9
|
package/dist/stealth-utils.d.ts
CHANGED
|
@@ -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;
|
package/dist/stealth-utils.js
CHANGED
|
@@ -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
|
|
168
|
-
|
|
169
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlYWx0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVhbHRoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILFlBQVksQ0FBQzs7O0FBRWI7OztHQUdHO0FBQ1UsUUFBQSxhQUFhLEdBQTBCO0lBRWxELHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFFMUIsK0JBQStCO0lBQy9CLGdDQUFnQztJQUVoQyw0QkFBNEI7SUFDNUIsZ0JBQWdCO0lBRWhCLGdDQUFnQztJQUNoQyw0QkFBNEI7SUFFNUIsd0JBQXdCO0lBQ3hCLHlCQUF5QjtDQUMxQixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUc7SUFDN0I7O09BRUc7SUFDSCxpQkFBaUIsRUFBRTs7Ozs7R0FLbEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFoQjtJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLEVBQUU7Ozs7O0dBS2xCO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRTs7Ozs7OztHQU9wQjtJQUVEOztPQUVHO0lBQ0gscUJBQXFCLEVBQUU7Ozs7Ozs7R0FPdEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7R0FRaEI7SUFFRDs7T0FFRztJQUNILGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZWY7SUFFRDs7T0FFRztJQUNILGFBQWEsRUFBRTs7Ozs7Ozs7Ozs7R0FXZDtJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLEVBQUU7Ozs7Ozs7R0FPbkI7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUks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
|
package/dist/stealth-utils.mjs
CHANGED
|
@@ -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
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
|
|
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
|
-
|
|
243
|
+
getDynamicStealthFlags,
|
|
244
|
+
getDynamicUserAgents,
|
|
245
|
+
getStealthScript,
|
|
246
|
+
getLatestChromeVersion,
|
|
247
|
+
generateUserAgent,
|
|
248
|
+
FALLBACK_VERSION
|
|
205
249
|
};
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlYWx0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVhbHRoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILFlBQVksQ0FBQztBQUViOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMEI7SUFFbEQseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUUxQiwrQkFBK0I7SUFDL0IsZ0NBQWdDO0lBRWhDLDRCQUE0QjtJQUM1QixnQkFBZ0I7SUFFaEIsZ0NBQWdDO0lBQ2hDLDRCQUE0QjtJQUU1Qix3QkFBd0I7SUFDeEIseUJBQXlCO0NBQzFCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0I7O09BRUc7SUFDSCxpQkFBaUIsRUFBRTs7Ozs7R0FLbEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFoQjtJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLEVBQUU7Ozs7O0dBS2xCO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRTs7Ozs7OztHQU9wQjtJQUVEOztPQUVHO0lBQ0gscUJBQXFCLEVBQUU7Ozs7Ozs7R0FPdEI7SUFFRDs7T0FFRztJQUNILGVBQWUsRUFBRTs7Ozs7Ozs7R0FRaEI7SUFFRDs7T0FFRztJQUNILGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZWY7SUFFRDs7T0FFRztJQUNILGFBQWEsRUFBRTs7Ozs7Ozs7Ozs7R0FXZDtJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLEVBQUU7Ozs7Ozs7R0FPbkI7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FB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
|
package/package.json
CHANGED