In Camoufox, data is intercepted at the C++ implementation level, making the changes undetectable through JavaScript inspection.

To spoof fingerprint properties, pass a JSON containing properties to spoof to the [Python interface](https://github.com/daijro/camoufox/tree/main/pythonlib#camoufox-python-interface):

```py
>>> with Camoufox(config={"property": "value"}) as browser:
```

Config data not set by the user will be automatically populated using [BrowserForge](https://github.com/daijro/browserforge) fingerprints, which mimic the statistical distribution of device characteristics in real-world traffic.

!!!
Camoufox does **not** support injecting Chromium fingerprints. Any competent WAF will test for JavaScript behavior unique to V8, which is impossible to spoof.
!!!

---

### Getting started

Camoufox accepts the following properties:

[!ref Navigator](/fingerprint/navigator.md)
[!ref Cursor Movement](/fingerprint/cursor-movement.md)
[!ref Fonts](/fingerprint/fonts.md)
[!ref Screen](/fingerprint/screen.md)
[!ref Window](/fingerprint/window.md)
[!ref Document](/fingerprint/document.md)
[!ref HTTP Headers](/fingerprint/headers.md)
[!ref Geolocation & Intl](/fingerprint/geolocation.md)
[!ref WebRTC IP](/fingerprint/webrtc.md)
[!ref WebGL](/fingerprint/webgl.md)
[!ref Media & Audio](/fingerprint/media-audio.md)
[!ref Voices](/fingerprint/voices.md)
[!ref Addons](/fingerprint/addons.md)
[!ref Miscellaneous](/fingerprint/miscellaneous.md)
