Skip to content

feat: canvas fingerprint noise + stealth patches#27

Merged
drewstone merged 1 commit intomainfrom
feat/canvas-noise-stealth-patches
Mar 19, 2026
Merged

feat: canvas fingerprint noise + stealth patches#27
drewstone merged 1 commit intomainfrom
feat/canvas-noise-stealth-patches

Conversation

@drewstone
Copy link
Copy Markdown
Contributor

Summary

  • Canvas fingerprint randomization: per-session noise injection into toDataURL()/toBlob() readback defeats static fingerprint matching used by PerimeterX, DataDome, and similar anti-bot systems
  • Expanded permissions API: patch covers geolocation, camera, microphone, payment-handler (not just notifications) — bots commonly miss these, triggering detection heuristics
  • Persistent context headless fix: was hardcoded to false, now respects launchPlan.headless from profile/CLI

Test plan

  • pnpm build passes
  • Run headless against PerimeterX-protected sites (Dreamstime) to measure canvas noise impact
  • Verify wallet mode still works (persistent context path)
  • Verify headed mode unaffected

…x headless fix

Three stealth improvements:

1. Canvas fingerprint randomization: inject per-session noise into
   toDataURL()/toBlob() readback so each session has a unique canvas
   fingerprint. Defeats PerimeterX/DataDome static fingerprint matching.

2. Expanded permissions API patch: cover geolocation, camera, microphone,
   payment-handler in addition to notifications. Bots commonly miss these,
   triggering detection heuristics.

3. Fix persistent context headless bug: was hardcoded to false instead of
   using launchPlan.headless. Now respects profile/CLI setting.
@drewstone drewstone merged commit 8ce7a91 into main Mar 19, 2026
5 checks passed
drewstone added a commit that referenced this pull request Mar 19, 2026
Unpublished since 0.10.0:
- feat: screenX/screenY CDP fix for Cloudflare Turnstile (#29)
- fix: boost output tokens near max turns (#28)
- feat: canvas fingerprint noise + stealth patches (#27)
- fix: headless UA override — platform-agnostic Akamai bypass (#26)
- fix: nightly CI — Xvfb headed stealth + system Chrome (#25)
- feat: retry malformed JSON with minimal context (#24)
- feat: three-tier history compression -22% cost (#23)
- feat: headless passthrough + Docker benchmark runner (#22)
- feat: WebVoyager + WebArena benchmark adapters (#20)
- fix: graceful recovery from execute wall-clock timeouts (#21)
- feat: showcase command for marketing asset capture (#18)
- feat: research pipeline + speed-v1 experiment results (#19)
- feat: design rip, compare, and extract-tokens overhaul (#17)
- feat: CDP connection, browser profiles, and asset downloader (#16)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant