4444# Stealth fingerprint / persona
4545# -----------------------------------------------------------------------------
4646# The `chromium` command is Tilion Fortress (a stealth stock-Chromium fork); its
47- # launcher applies the Windows persona itself via --uxr-* + TILION_TZ/LANG. The
48- # seed/timezone/locale machinery below feeds that (TZ/locale) and the opt-in
49- # BROWSER=fingerprint path (fingerprint-chromium, which consumes CLOAK_SEED). The
50- # goal either way is to present as a regular *Windows Chrome* session to bot
51- # classifiers (Akamai BMP, Cloudflare Bot Management, reCAPTCHA Enterprise)
52- # rather than headless-Chrome-on-Linux.
47+ # launcher applies a persona via --uxr-* + TILION_TZ/LANG. The seed/timezone/locale
48+ # machinery below feeds that (TZ/locale) and the opt-in BROWSER=fingerprint path
49+ # (fingerprint-chromium, which consumes CLOAK_SEED). The goal is to present as a
50+ # regular, COHERENT desktop Chrome session to bot classifiers (Akamai BMP, Cloudflare
51+ # Bot Management, reCAPTCHA Enterprise, Kasada) rather than headless-Chrome-on-Linux.
52+ # The default persona is LINUX (PERSONA below): this box's real substrate — TLS/JA4
53+ # shape, DejaVu-only fonts, SwiftShader/Vulkan renderer — is Linux, so a Linux persona
54+ # has nothing to contradict; a Windows persona over it is the tell classifiers catch.
5355#
5456# --fingerprint-platform=windows spoofs navigator.platform, userAgentData,
5557# the User-Agent string, and Sec-CH-UA-Platform to Windows. That alone is a
@@ -306,11 +308,7 @@ elif [[ "$BROWSER" == "fortress" ]]; then
306308 " --uxr-audio-seed=$(( (CLOAK_SEED * 6271 ) % 8999999 + 1000000 )) "
307309 )
308310
309- # Default WINDOWS: it is ~70% of desktop Chrome (rarity is a signal, and upstream
310- # says the same), and it is the persona this image is coherent with — the Dockerfile
311- # bundles Windows fonts and renames every Noto face to a Windows family. PERSONA=linux
312- # opts in to the flags below for experimentation, accepting the font mismatch.
313- persona=" ${PERSONA:- windows} "
311+ persona=" ${PERSONA:- linux} "
314312 if [[ " $persona " == " linux" ]]; then
315313 cloak_flags+=(
316314 " --uxr-platform=Linux x86_64"
@@ -319,23 +317,10 @@ elif [[ "$BROWSER" == "fortress" ]]; then
319317 " --uxr-ua-arch=x86"
320318 " --uxr-ua-bitness=64"
321319 " --uxr-ua-brand=Google Chrome"
320+ " --uxr-ua-platform-version=${CLOAK_KERNEL_VERSION:- 6.8.0} "
322321 )
323322 fi
324- # GPU coherence (GPU_PERSONA=intel). Fortress's default persona claims a
325- # discrete NVIDIA RTX 3060 via --uxr-webgl-vendor/-renderer/-webgpu-description while
326- # actually rendering through SwiftShader (--use-angle=swiftshader + its own Vulkan ICD).
327- # FORTRESS-INTEGRATION.md flags that hardware-GPU-on-software-renderer pair as exactly
328- # what strict detectors cross-check, and recommends overriding it to go coherent.
329- #
330- # MEASURED on Fortress 150 in this image, same boot/profile shape:
331- # swiftshader (honest software renderer) -> Sannysoft 29/30, CreepJS 50%
332- # intel (UHD 630 integrated GPU claim) -> Sannysoft 30/30, CreepJS 50%
333- #
334- # Intel integrated is the default because it removes the visible SwiftShader
335- # software-renderer tell without moving CreepJS. It is still a spoof over a
336- # software backend; GPU_PERSONA=swiftshader remains available when strict
337- # renderer honesty is preferred over consumer-laptop plausibility.
338- case " ${GPU_PERSONA:- intel} " in
323+ case " ${GPU_PERSONA:- swiftshader} " in
339324 swiftshader)
340325 cloak_flags+=(
341326 " --uxr-webgl-vendor=Google Inc. (Google)"
@@ -346,11 +331,6 @@ elif [[ "$BROWSER" == "fortress" ]]; then
346331 )
347332 ;;
348333 intel)
349- # Hypothesis: a claim is judged partly on whether the CAPABILITIES match. An RTX
350- # 3060 over a software renderer is a big lie; Intel integrated is the single most
351- # common GPU on real Windows laptops and its limits sit far closer to
352- # SwiftShader's, so the same spoof has less to contradict. D3D11 also matches the
353- # Windows persona.
354334 cloak_flags+=(
355335 " --uxr-webgl-vendor=Google Inc. (Intel)"
356336 " --uxr-webgl-renderer=ANGLE (Intel, Intel(R) UHD Graphics 630 (0x00003E9B) Direct3D11 vs_5_0 ps_5_0, D3D11)"
@@ -361,7 +341,7 @@ elif [[ "$BROWSER" == "fortress" ]]; then
361341 ;;
362342 nvidia) ;; # the wrapper's own default persona (RTX 3060 claim), for comparison
363343 esac
364- echo " [stealth] browser: Tillion Fortress (stable stealth Chromium 150) — persona=$persona gpu=${GPU_PERSONA:- intel } ; TILION_TZ=$CLOAK_TIMEZONE TILION_LANG=$TILION_LANG "
344+ echo " [stealth] browser: Tillion Fortress (stable stealth Chromium 150) — persona=$persona gpu=${GPU_PERSONA:- swiftshader } ; TILION_TZ=$CLOAK_TIMEZONE TILION_LANG=$TILION_LANG "
365345else
366346 # CloakBrowser was removed; only 'fortress' (default) and 'fingerprint' remain.
367347 echo " [start-chromium] unknown BROWSER='$BROWSER ' (valid: fortress [default], fingerprint). CloakBrowser was removed from this image." >&2
0 commit comments