fix: deduplicate CLI flags when user args overlap with stealth defaults

Bump version to 0.3.9. Extract shared buildArgs into js/src/args.ts (DRY),
guard console.debug behind DEBUG=cloakbrowser env var, strengthen caplog assertion.
This commit is contained in:
Cloak-HQ
2026-03-05 18:44:18 +01:00
parent 9c533e4120
commit 3880d30d0f
9 changed files with 211 additions and 52 deletions
+1 -1
View File
@@ -1 +1 @@
__version__ = "0.3.8"
__version__ = "0.3.9"
+28 -7
View File
@@ -549,18 +549,39 @@ def _build_args(
timezone: str | None = None,
locale: str | None = None,
) -> list[str]:
"""Combine stealth args with user-provided args and locale flags."""
result = []
"""Combine stealth args with user-provided args and locale flags.
Deduplicates by flag key (everything before '=').
Priority: stealth defaults < user args < dedicated params (timezone/locale).
"""
seen: dict[str, str] = {}
if stealth_args:
result.extend(get_default_stealth_args())
for arg in get_default_stealth_args():
seen[arg.split("=", 1)[0]] = arg
if extra_args:
result.extend(extra_args)
for arg in extra_args:
key = arg.split("=", 1)[0]
if key in seen:
logger.debug("Arg override: %s -> %s", seen[key], arg)
seen[key] = arg
# Timezone/locale flags are independent of stealth_args — always inject when set
if timezone:
result.append(f"--fingerprint-timezone={timezone}")
key = "--fingerprint-timezone"
flag = f"{key}={timezone}"
if key in seen:
logger.debug("Arg override: %s -> %s", seen[key], flag)
seen[key] = flag
if locale:
result.append(f"--lang={locale}")
return result
key = "--lang"
flag = f"{key}={locale}"
if key in seen:
logger.debug("Arg override: %s -> %s", seen[key], flag)
seen[key] = flag
return list(seen.values())
def _parse_proxy_url(proxy: str) -> dict[str, Any]: