mirror of
https://github.com/daijro/camoufox.git
synced 2026-08-18 16:00:58 +00:00
c6a6c20670
* feat: update timezone, geolocation, and locale spoofing patches - timezone-spoofing.patch: per-context timezone via per-realm DateTimeInfo - geolocation-spoofing.patch: CAMOU_CONFIG backwards compatibility for geolocation - locale-spoofing.patch: add camoucfg LOCAL_INCLUDES - anti-font-fingerprinting.patch: add RoverfoxStorageManager exports to moz.build * feat: per-context audio fingerprinting and screen spoofing patches - audio-fingerprint-manager.patch: per-context audio fingerprinting (all 6 API methods) - screen-spoofing.patch: per-context screen dimensions with global MaskConfig fallback - Disable webrtc-ip-spoofing.patch (will re-enable after fixing) - Remove screen-hijacker.patch (superseded by screen-spoofing.patch) * fix: add global MaskConfig hooks for navigator.platform, hardwareConcurrency, and timezone (#443) Fixes issue where global CAMOU_CONFIG settings for navigator.platform, navigator.hardwareConcurrency, and timezone were not applied in the main window Navigator (only WorkerNavigator was patched via fingerprint-injection.patch). * fix: run nsJSUtils::SetTimeZoneOverride() after SpiderMonkey has Initialized to prevent SIGSEGV * Add fingerprint improvements for PR #3 - navigator-spoofing.patch: Global config fixes for platform/hardwareConcurrency/timezone - timezone-spoofing.patch: Persistence across page navigation via SetNewDocument hook - audio-fingerprint-manager.patch: Full 6-method coverage with self-destruct pattern - screen-spoofing.patch: Per-context dimensions with self-destruct pattern - webrtc-ip-spoofing.patch: Re-enabled with getStats() sanitization + comprehensive IPv6 regex * fix: simplify userContextId to BrowsingContext + add per-context docs * feat(navigator): Add per-context spoofing (platform, oscpu, hardwareConcurrency) with global fallback + docs update. * fix(navigator): use 2-arg GetUint(key, value) for RoverfoxStorageManager * fix(navigator): header line count build error * fix(navigator): move NavigatorManager.cpp into SOURCES for leakage error * fix(navigator): more line count build errors * fix(navigator): include nsTHashMap and nsHashKeys.h before RoverfoxStorageManager * feat(webgl): per-context spoofing patch * fix(webgl): changed GetCanvasElement() to mCanvasElement() for firefox version * fix(webgl): remove coupled self-destruct * feat(canvas): per-context spoofing * feat(font-list): per-context spoofing * fix(font-list): use GetOwnerWindow() instead of GetOwner() * feat(speech): per-context spoofing * fix(speech): add /dom/base inside local_includes * fix(speech): changed context to avoid conflicts * feat(navigator): add WorkerNavigator hooks for per-context platform and hardwareConcurrency in workers * feat(timezone): add per-context timezone override to workers * fix(canvas): add OffscreenCanvas userContextId support and skip zero pixels in canvas noise * fix(screen): hook nsMediaFeatures GetDeviceSize for per-context matchMedia device-width/height * fix(webgl): add OffscreenCanvas userContextId fallback in WebGL GetUserContextId * fix(canvas): make canvas noise use proper format for BGRA toDataURL path * fix(canvas): line count fixes * docs: updated hardware per-context documentation * Final Per-Context Hardware Fingerprint Spoofing (#9) * feat(navigator): Add per-context spoofing (platform, oscpu, hardwareConcurrency) with global fallback + docs update. * fix(navigator): use 2-arg GetUint(key, value) for RoverfoxStorageManager * fix(navigator): header line count build error * fix(navigator): move NavigatorManager.cpp into SOURCES for leakage error * fix(navigator): more line count build errors * fix(navigator): include nsTHashMap and nsHashKeys.h before RoverfoxStorageManager * feat(webgl): per-context spoofing patch * fix(webgl): changed GetCanvasElement() to mCanvasElement() for firefox version * fix(webgl): remove coupled self-destruct * feat(canvas): per-context spoofing * feat(font-list): per-context spoofing * fix(font-list): use GetOwnerWindow() instead of GetOwner() * feat(speech): per-context spoofing * fix(speech): add /dom/base inside local_includes * fix(speech): changed context to avoid conflicts * feat(navigator): add WorkerNavigator hooks for per-context platform and hardwareConcurrency in workers * feat(timezone): add per-context timezone override to workers * fix(canvas): add OffscreenCanvas userContextId support and skip zero pixels in canvas noise * fix(screen): hook nsMediaFeatures GetDeviceSize for per-context matchMedia device-width/height * fix(webgl): add OffscreenCanvas userContextId fallback in WebGL GetUserContextId * fix(canvas): make canvas noise use proper format for BGRA toDataURL path * fix(canvas): line count fixes * docs: updated hardware per-context documentation * feat(screen): screen avail per context * fix(font): align userContextId resolution to BrowsingContext * fix(audio): align userContextId resolution to BrowsingContext * Avoid macos caching (#11) * the property to undefined before deleting * undo webrtc undefined * feat: userContextId added to WordCacheKey * fix: hunk line counts for macos cache changes * fix: add WorkerPrivate fallback in OffscreenCanvas * fix(audio): transformation added to mSharedChannels path to ensure consistency * fix(webgl): added WorkerPrivate to ucid * fix(timezone): add ucid=0 fallback for worker timezone resolution * fix(audio): move seed lookup outside window guard for all 6 hooks * fix(canvas): add ucid=0 fallback and WorkerPrivate resolution for workers * fix(navigator): add setNavigatorUserAgent and ucid=0 fallback and WorkerNavigator for UA spoofing fix * fix(webgl): add ucid=0 fallback and WorkerPrivate resolution * fix(webgl): decouple vendor/renderer self-destruct * fix(navigator): add main-thread navigator.userAgent getter hook * fix(navigator): add MaskConfig hook for navigator.appVersion in main window * feat: Add Chakra Petch font for macOS to solidify detection on CreepJS * fix(fontconfig): rename to match Go launcher, add TTC aliases and update .gitignore * fix(navigator): oscpu missing MaskConfig global fallback * feat: add real fingerprint presets (65 firefox profiles) - mainly to test with, more will come when tested. * feat: use real fingerprint presets as default with BrowserForge as fallback * feat: add audio:seed and canvas:seed to property schema and validation * feat: add MaskConfig fallback to seed managers for cross-process worker consistency - don't need to disable fission * fix(font): moved mUserContextId declaration before mRounding in WordCacheKey so init order matches * fix(audio): line count correction * fix(canvas): line count fix * feat: add per-context fingerprinting API (NewContext/AsyncNewContext) + merge upstream - fix seed range - add oscpu derivation from platform, and timezone mapping in from_preset() - new real fingerprints preset support * feat: new presets + en-US only, stripped fonts/language, clamp DPR * feat: random 30-78% font subset generation for NewBrowser and NewContext * fix: add fission.autostart=true to camoufox.cfg - will be changing this soon with new update so processCount is not 1, so it will be undetectable * fix: update macos fonts.conf rendering settings * feat: cross-process fingerprint storage via Firefox Preferences API Replace RoverfoxStorageManager's per-process static HashMap with Firefox's built-in Preferences system. Values stored as CString prefs under "roverfox.s." namespace, auto-synced to all content processes by Firefox. Content processes can't set prefs directly (ENSURE_PARENT_PROCESS), so a single IPDL message (RoverfoxStoragePut) routes writes through the parent. Same public API — all 10 dependent patches require zero changes. Removes dom.ipc.processCount=1 from camoufox.cfg. Firefox now uses Playwright's default multi-process model (fresh process per page) with fission enabled, while fingerprint values remain accessible everywhere. * fix(cross-process): hunk headers and build fixes * fix(storage): add local write-through cache to RoverfoxStorageManager * fix(storage): add sync IPC read fallback for cross-process fingerprint propagation * fix(storage): add NS_IsMainThread guard to sync IPC fallback - prevent crashes * fix(storage): sync IPC + pref whitelist for cross-process fingerprint sync * feat: full documentation update, speech voices generated per context and BrowserForge primary fingerprint generation method for global and per context. * fix: Direct3D NVIDIA GTX 980 renderers incorrectly appearing on mac because of duplicates * Update .gitignore --------- Co-authored-by: PopcornDev1 <e.coiley@icloud.com> Co-authored-by: Build <build@local> Co-authored-by: Elliot Coiley <153072396+PopcornDev1@users.noreply.github.com>