mirror of
https://github.com/daijro/camoufox.git
synced 2026-09-08 08:00:53 +00:00
navigator.maxTouchPoints could already be spoofed, but nothing moved with it, so a spoofed digitizer contradicted itself in two places a script reads in one line: (any-pointer: coarse) stayed false, and window.TouchEvent and window.Touch were absent entirely. Restore the aID branch in force-default-pointer.patch so the coarse bit joins the *any-pointer* set, and only when maxTouchPoints > 0. The primary pointer stays Fine|Hover: a touchscreen laptop still drives its trackpad, and reporting (pointer: coarse) would claim a phone while the accompanying desktop UA said otherwise. The host LookAndFeel value is still not consulted -- the capability set must not vary with the machine the browser runs on. Expose the touch interfaces by moving TouchEvent::PrefEnabled only, never LegacyAPIEnabled. dom.w3c_touch_events.legacy_apis.enabled is false everywhere but Android, so a real Windows touchscreen laptop exposes TouchEvent and Touch while 'ontouchstart' in window is false. Matching that shape matters more than exposing the whole touch API: a build that switches touch on wholesale is more detectable than one that does nothing. Rename mobile-fingerprint-spoofing.patch to touchscreen-fingerprint-spoofing .patch, since the rationale is the ordinary Windows touchscreen laptop rather than a phone, and carry the new TouchEvent.cpp hunk there beside the existing Navigator.cpp one. The rename moves it after navigator-spoofing.patch in basename order, so its Navigator.cpp hunk now lands with an offset; verified to still apply cleanly with no rejects. Warn at launch whenever navigator.maxTouchPoints is set, separately from the blanket navigator warning, because the knock-on effects reach past navigator into the CSS pointer media queries and the TouchEvent interfaces. tests/patches/touchscreen-digitizer.py checks all 16 signals and asserts that maxTouchPoints=0 still looks like a machine with no digitizer. It fails on a binary built without this change (13/16) and passes on one built with it. The reference values it carries are RECONSTRUCTED, not captured: the recording from the Dell XPS 15 9510 was not reachable from the build host, so eight values come from the specification and eight from Gecko's own gating logic. Each is marked in the table. Check them against the real capture when the reference machine is available; the capture wins. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W2RfR387Mh1JhZ9LZvkptP
60 lines
2.7 KiB
YAML
60 lines
2.7 KiB
YAML
navigator: >-
|
|
Manually setting navigator properties is not recommended.
|
|
Device information is automatically generated within Camoufox
|
|
based on the provided `os`.
|
|
|
|
locale: >-
|
|
Use the `locale` parameter in Camoufox instead of setting the config manually.
|
|
|
|
geolocation: >-
|
|
Please use the `geoip` parameter in Camoufox instead of setting your geolocation manually.
|
|
This can lead to detection if your target geolocation does not match your IP.
|
|
Pass `geoip=True` or a target IP (ex: geoip='123.45.67.89') to let Camoufox populate this data for you.
|
|
|
|
header-ua: >-
|
|
Do not set the header.User-Agent manually. Camoufox will generate a User-Agent for you.
|
|
|
|
viewport: >-
|
|
Manually setting screen & window properties is not recommended.
|
|
Screen dimensions are randomly generated within Camoufox
|
|
based on the provided screen constraints. See here:
|
|
https://github.com/daijro/camoufox/tree/main/pythonlib#browserforge-integration.
|
|
|
|
custom_fingerprint: >-
|
|
Passing your own fingerprint is not recommended.
|
|
BrowserForge fingerprints are automatically generated within Camoufox
|
|
based on the provided `os` and `screen` constraints.
|
|
|
|
proxy_without_geoip: >-
|
|
When using a proxy, it is heavily recommended that you pass `geoip=True`.
|
|
|
|
ff_version: >-
|
|
Spoofing the Firefox version will likely lead to detection.
|
|
If rotating the Firefox version is absolutely necessary, it would be more advisable to
|
|
rotate between older versions of Camoufox instead.
|
|
|
|
no_region: >-
|
|
Because you did not pass in a locale region, Camoufox will generate one for you.
|
|
This can cause suspicion if your IP does not match your locale region.
|
|
|
|
block_webgl: >-
|
|
Disabling WebGL is not recommended. Many WAFs will check if WebGL is enabled.
|
|
|
|
block_images: >-
|
|
Blocking image requests has been reported to cause detection issues on major WAFs.
|
|
|
|
custom_fonts_only: >-
|
|
Disabling OS-specific fonts while spoofing your OS will make your browser fingerprint inconsistent.
|
|
WAFs can detect this mismatch between your claimed OS and available system fonts.
|
|
|
|
disable_coop: >-
|
|
Disabling Cross-Origin-Opener-Policy (COOP) handling can potentially be detected by sophisticated WAFs.
|
|
|
|
max_touch_points: >-
|
|
Setting navigator.maxTouchPoints manually overrides Camoufox's touchscreen handling.
|
|
A non-zero value presents a touch digitizer: Camoufox adds `(any-pointer: coarse)` and
|
|
the TouchEvent/Touch interfaces to match a touchscreen laptop, while deliberately leaving
|
|
`(pointer: coarse)` false and `ontouchstart` absent, exactly as a real one does.
|
|
The rest of your fingerprint is not adjusted to suit, so a device that claims a digitizer
|
|
but reports a screen size no touchscreen laptop ships with is still inconsistent.
|