fix: randomize hardware fingerprint values across browser sessions
Replace static stealthChromiumScripts and stealthFirefoxScripts slices with builder functions that accept hardware profile structs. Each browser session now randomly selects from a pool of 6 realistic profiles per engine, and Chromium connection stats receive per-session jitter (±20ms RTT, ±2 Mbps downlink). This prevents anti-bot systems from correlating sessions via identical WebGL, connection, mozInnerScreen, and hardwareConcurrency fingerprints. Closes #71 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -74,9 +74,9 @@ func initBrowser(opt BrowserOptions) (*browserInitResult, error) {
|
||||
initScripts = append(initScripts, stealthCommonScripts...)
|
||||
switch opt.Browser {
|
||||
case BrowserChromium:
|
||||
initScripts = append(initScripts, stealthChromiumScripts...)
|
||||
initScripts = append(initScripts, buildChromiumStealthScripts(randomChromiumProfile())...)
|
||||
case BrowserFirefox:
|
||||
initScripts = append(initScripts, stealthFirefoxScripts...)
|
||||
initScripts = append(initScripts, buildFirefoxStealthScripts(randomFirefoxProfile())...)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user