NAME
EV::WebKit::Fingerprint - profile data behind EV::WebKit's fingerprint option
DESCRIPTION
The preset device profiles (windows-chrome, macos-safari, iphone-safari, pixel-chrome), their validation, and the marshalling that hands them to the bundled web-process extension. Used by EV::WebKit. You do not normally touch it directly: pass fingerprint => to "new" in EV::WebKit and read "fingerprint" in EV::WebKit back, which is also where the profile keys, the override rules and the Ceiling -- what this spoof does and does not hide -- are documented.
Two of its functions are re-exported as methods for convenience: EV::WebKit->fingerprint_profiles lists the preset names, and EV::WebKit->fingerprint_available reports whether the compiled extension was found. Prefer those.
FUNCTIONS
None of these are exported; call them fully qualified if you must.
available
my $ok = EV::WebKit::Fingerprint::available();
True if the compiled web-process extension (evwk_fp.so) was located -- in an installed dist via File::ShareDir, or the in-tree share/ during development. Without it fingerprint => croaks.
profiles
my @names = EV::WebKit::Fingerprint::profiles();
The preset names, sorted.
resolve
my $fp = EV::WebKit::Fingerprint::resolve('windows-chrome');
my $fp = EV::WebKit::Fingerprint::resolve({ profile => 'macos-safari', ... });
Expands a preset name, or a hashref of overrides over a profile base, into the full profile hash. The base is required in the hashref form: there is no neutral profile to override, and half a device is an incoherent one. Croaks on a missing or unknown preset, an unknown key, or a value of the wrong shape -- deliberately, so a typo cannot silently produce a half-spoofed and therefore incoherent device.
gvariant
my $v = EV::WebKit::Fingerprint::gvariant($fp, $seed, \%extra);
Marshals a resolved profile into the a{sv} GVariant the extension reads at startup. $seed is optional and enables readback noise. \%extra is optional and carries entries the extension needs whether or not a profile was asked for -- the frame-addressing bootstrap goes over on it -- so $fp may be undef.
curl_target, identity_headers, high_entropy_headers
Support for network_fingerprint =>: the libcurl-impersonate target matching a preset, and the identity / client-hint headers that must be forced over that target's defaults so the JS and HTTP layers agree.