#765·camoufox

[Fingerprint] Relaunching with same fingerprint broken after v135.0.1-beta.24 (works in v135.0.1-beta.24)

Author: bilalbinkhan1122Created Sep 9, 2026Updated Sep 9, 2026

Relaunching Camoufox with the same fingerprint using launch_options() + from_options + persistent_context=True no longer produces a consistent fingerprint in any release after v135.0.1-beta.24. The same code works correctly in v135.0.1-beta.24.

Environment

  • Camoufox Browser Version: v152.0.4-beta.28+ (broken)
  • Also Broken In: All releases after v135.0.1-beta.24 (v146, v150, v152 series)
  • Camoufox Python Library: 0.5.5
  • Python: 3.x
  • OS: Windows 10/11

Working Version

  • Camoufox v135.0.1-beta.24 (March 15, 2025) — fingerprints persist correctly across relaunches

Broken Versions

All releases after v135.0.1-beta.24:

  • v146.x releases
  • v150.0.2
  • v152.0.4-beta.25 through v152.0.4-beta.30

Method Used for Fingerprint Persistence

python
import os
import json
from camoufox.sync_api import Camoufox, launch_options

user_data_dir = "./profile_data"
fingerprint_file = os.path.join(user_data_dir, "fingerprint.json")
os.makedirs(user_data_dir, exist_ok=True)

if os.path.exists(fingerprint_file):
    with open(fingerprint_file, 'r') as f:
        opts = json.load(f)
else:
    opts = launch_options(
        headless=False,
        user_data_dir=user_data_dir
    )
    with open(fingerprint_file, 'w') as f:
        json.dump(opts, f, indent=2)

with Camoufox(from_options=opts, persistent_context=True) as browser:
    page = browser.new_page()
    page.goto("https://abrahamjuliot.github.io/creepjs/")
    page.wait_for_timeout(60000)

Steps to Reproduce
1. Install Camoufox v135.0.1-beta.24 and run the script — confirm fingerprint persists
2. Upgrade to any release after v135.0.1-beta.24 (e.g. v152.0.4-beta.28)
3. Run the same script with the same user_data_dir
4. Note the CreepJS Visitor ID / Fingerprint ID on first run
5. Close the browser completely
6. Run the script again
7. Observe that the Fingerprint ID has changed
Expected Behavior
The fingerprint should remain identical across relaunches when using the same from_options and user_data_dir, as it does in v135.0.1-beta.24.
Actual Behavior
- Canvas hash changes between launches
- CreepJS shows a different Visitor ID
- The fingerprint is treated as a "first visit" each time
- Fingerprint consistency is broken in all releases after v135.0.1-beta.24
Regression
This worked in v135.0.1-beta.24 (March 15, 2025). The regression was introduced in the v146 release cycle.


Is there a plan to restore fingerprint persistence that was working in v135.0.1-beta.24?