Randomize static fingerprint values across browser sessions #71
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent Epic: #68
Problem
Every browser session created by go-extractor has identical fingerprint values hardcoded in the stealth init scripts:
Intel Inc./Intel Iris OpenGL Engine{ effectiveType: '4g', rtt: 50, downlink: 10, saveData: false }Anti-bot systems that fingerprint across sessions can trivially identify go-extractor instances because every session looks identical. Real browsers show natural variation in hardware, plugins, and network conditions.
Proposed Solution
Create a hardware profile pool (5-10 realistic profiles):
Randomly select a profile per session and inject its values into the stealth scripts
Replace static script slices with a dynamic builder:
Add slight randomization within profiles for connection stats (RTT ±20ms, downlink ±2Mbps) to avoid even profile-level fingerprinting
Files to Modify
stealth.go— hardware profiles, dynamic script builderbrowser_init.go— select random profile at session creationstealth_test.go— test profile selection and script generationReferences
Starting work on this issue. Plan:
stealthChromiumScriptsandstealthFirefoxScriptsvars with builder functions that accept a hardware profile structbrowser_init.goto call builders instead of referencing static slicesBranch:
feature/71-randomize-fingerprintsWork finished. PR #74 implements fingerprint randomization:
stealthChromiumScripts/stealthFirefoxScriptswith builder functions accepting hardware profile structs#74