From c80ea13877d9680c64dd53422a043ad566955da8 Mon Sep 17 00:00:00 2001 From: Luis Antonio Date: Mon, 22 Dec 2025 14:54:42 +0000 Subject: [PATCH] Added specific arguments for Linux and Windows machines --- .gitignore | 1 + src/browser/Browser.ts | 27 +++++++++++++++++++++------ src/config.jsonc | 2 +- src/functions/Login.ts | 7 ++++++- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index ef0935e..e08d662 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ accounts.main.jsonc .update-extract/ .update-happened .update-restart-count +src/config.jsonc diff --git a/src/browser/Browser.ts b/src/browser/Browser.ts index 59ae042..0d281a7 100644 --- a/src/browser/Browser.ts +++ b/src/browser/Browser.ts @@ -94,24 +94,39 @@ class Browser { '--no-first-run', '--no-default-browser-check', '--no-zygote', - '--single-process', // ANTI-DETECTION: Make WebDriver undetectable '--enable-features=NetworkService,NetworkServiceInProcess' ] - // Linux stability fixes - const linuxStabilityArgs = isLinux ? [ + // Platform-specific stability fixes + // CRITICAL: --single-process is unstable on Windows and causes context closure + const platformStabilityArgs = isLinux ? [ + '--single-process', // Safe on Linux with proper memory management '--disable-dev-shm-usage', '--disable-software-rasterizer', '--disable-http-cache', '--disk-cache-size=1' - ] : [] + ] : [ + // Windows-specific stability (avoid --single-process which crashes Chromium context) + '--disable-background-networking', + '--disable-preconnect', + '--disable-web-resources', + '--disable-component-extensions-with-background-pages', + '--disable-translate', + '--disable-sync-on-cellular', + '--disable-device-discovery-notifications', + '--disable-default-language', + '--disable-print-preview' + ] + + // CRITICAL: Windows needs longer timeout (120s) due to slower context initialization + const launchTimeout = isLinux ? 90000 : 120000 browser = await playwright.chromium.launch({ headless, ...(proxyConfig && { proxy: proxyConfig }), - args: [...baseArgs, ...linuxStabilityArgs], - timeout: isLinux ? 90000 : 60000 + args: [...baseArgs, ...platformStabilityArgs], + timeout: launchTimeout }) } catch (e: unknown) { const msg = (e instanceof Error ? e.message : String(e)) diff --git a/src/config.jsonc b/src/config.jsonc index 948c125..a626620 100644 --- a/src/config.jsonc +++ b/src/config.jsonc @@ -88,7 +88,7 @@ }, // === BROWSER === "browser": { - "headless": false, + "headless": true, "globalTimeout": "30s" }, "fingerprinting": { diff --git a/src/functions/Login.ts b/src/functions/Login.ts index ed7babc..a6c4130 100644 --- a/src/functions/Login.ts +++ b/src/functions/Login.ts @@ -46,6 +46,7 @@ const DEFAULT_TIMEOUTS = { rewardsPortalCheck: 8000, navigationTimeout: 30000, navigationTimeoutLinux: 60000, + navigationTimeoutWindows: 90000, // Windows is slower at initializing contexts (issue: context closure) bingVerificationMaxIterations: 10, bingVerificationMaxIterationsMobile: 8 } as const @@ -121,7 +122,11 @@ export class Login { maxAttempts = 3 ): Promise<{ success: boolean; recoveryUsed: boolean }> { const isLinux = process.platform === 'linux' - const navigationTimeout = isLinux ? DEFAULT_TIMEOUTS.navigationTimeoutLinux : DEFAULT_TIMEOUTS.navigationTimeout + const isWindows = process.platform === 'win32' + // CRITICAL FIX: Windows needs 90s timeout to avoid "Target page, context or browser has been closed" + const navigationTimeout = isWindows ? DEFAULT_TIMEOUTS.navigationTimeoutWindows : + isLinux ? DEFAULT_TIMEOUTS.navigationTimeoutLinux : + DEFAULT_TIMEOUTS.navigationTimeout let navigationSucceeded = false let recoveryUsed = false