fingerprint entirely; the default OS is Windows. A persistent profile needs fingerprint.os.
When to override
Set the OS or device required by your task:Chrome version
Surfsky updates its browser build on Chrome’s release schedule. Generated user agents, Client Hints, and other version-dependent fingerprint fields update with the browser for both one-time and persistent profiles. The generated user agent uses Chrome’s reduced form,Chrome/<major>.0.0.0. A custom user_agent stays fixed across browser updates. If you set one, keep its major version aligned with the engine; Client Hints use the version from that value.
Fields
The OS and Android device fields are selected at creation; the profile update endpoint accepts a smaller set of fingerprint fields.
Accepted values
Look up renderer, screen, and Android model values before supplying them:Fields that follow the IP
When unset,timezone, languages, and geolocation are derived from the exit IP at each start. The IP lookup supplies the timezone and coordinates, and the country determines the languages. These values update when a persistent profile changes proxy location.
Explicit values remain fixed when the proxy changes. For example, timezone: "Europe/Berlin" still reports Berlin with a US exit IP. Use overrides when your task requires that difference.
Canvas and WebGL
Canvas and WebGL fingerprinting scripts render an image and hash its pixels. The result depends on the GPU and driver, so devices with the same hardware can share a hash. Sites can also compare it with the reported renderer. For the fingerprinting scripts used by Akamai, ThreatMetrix, Cloudflare, Google, and similar services, Surfsky returns canvas and WebGL images recorded on a real machine with the profile’s GPU. The images match the reported renderer and remain the same across sessions. No configuration is required. Canvases outside those scripts render as in stock Chrome. WebGPU is enabled, and its adapter information describes the same GPU as WebGL. You can check it on the browserleaks WebGPU page.Noise
Noise applies a per-profile adjustment to an API’s output, changing the resulting fingerprint hash. The adjustment is generated once and reused on every start. Different profiles can still produce the same hash, as can real devices.noise is off by default on desktop profiles. Android profiles use a fixed preset; a noise object sent for Android is ignored. Leave noise off unless a site links your profiles by one of these hashes. Test the target site before changing it on an existing profile, since a changed hash can affect device recognition.
Disabling a noise setting discards its adjustment. Enabling it again generates a new adjustment and hash for that API without recreating the profile.
Persistent profiles
A persistent profile keeps its fingerprint between starts. Update it while it is stopped if you need to change its settings.os, os_arch, and os_version are fixed for the life of the profile; create a new one for a different OS.
On a desktop profile you can change user_agent, screen, cpu, ram, renderer, media_devices, noise, and the connection fields (languages, timezone, geolocation, dns, webrtc). On an Android profile only the connection fields and user_agent take effect; hardware fields are ignored.
Changing hardware fields changes the device fingerprint even when cookies are restored. Updating renderer also changes the WebGL preset and recorded canvas images. Keep it stable unless the account needs a different device.
See Sessions for profile creation and Cookies for login persistence.
Mobile
Useos: "android" for an Android profile:
GET /fingerprint/device_models. device_model and device_type are accepted only with Android. Use a matching device type and screen instead of combining a phone model with desktop settings.
An Android profile always reports one microphone, one speaker, and front and back cameras. media_devices is ignored for it.