GitHub - greekr4/playwright-bot-bypass: Claude Code skill to bypass bot detection (Google CAPTCHA, etc.)
Key Points
- 1This project provides a streamlined integration layer that bundles rebrowser-playwright and real-headed Chrome to enhance the stealth capabilities of browser automation tasks.
- 2By prioritizing native hardware fingerprinting and removing ineffective JavaScript fakes, the tool successfully bypasses common automation detectors like sannysoft and bot-detector.
- 3It offers an agent-ready factory for Node.js and Python that enables developers to perform browser-based research while maintaining human-like signals and avoiding standard bot challenges.
The playwright-bot-bypass repository (v2.2) provides a standardized integration layer designed to enhance the stealth capabilities of browser automation tools, specifically for agents utilizing Claude Code. Rather than functioning as a new stealth engine, it acts as a "factory" that synthesizes established upstream projects—rebrowser-playwright, undetected-chromedriver, and native Chrome—into a cohesive, bot-resistant configuration.
Core Methodology and Technical Approach
The project’s effectiveness relies on three distinct layers that address modern fingerprinting and automation-detection techniques:- Environment and Runtime Integrity:
rebrowser-playwright to address the core CDP (Chrome DevTools Protocol) runtime leaks. By enforcing the REBROWSER_PATCHES_RUNTIME_FIX_MODE environment variable, the integration hides the navigator.webdriver flag and masks the Runtime.enable instrumentation typically exposed by headless browsers. It strictly uses channel: 'chrome' to ensure the browser identifies as a genuine Google Chrome installation, providing authentic WebGL, GPU fingerprints, canvas rendering, and PluginArray data that automated proxies cannot replicate.- Artifact Stripping:
context.addInitScript. This script executes upon every navigation to prune artifacts left by Playwright in the browser's global scope:\forall k \in \text{window} : \text{if } (\text{regex}_{\text{match}}(k, / \text{^\_\_pw} | \text{pwInitScripts} | \text{playwright} /i)) \implies \text{delete } \text{window}[k]
This process removes signatures like
window.__pwInitScripts that are commonly used by server-side detectors to identify automated environments.- Strategic Minimalism:
navigator.plugins, deviceMemory, or outerWidth modifications). The authors conclude that these manual overrides often introduce inconsistencies—such as mismatched hardware concurrency or illegal invocation crashes—which serve as secondary indicators of automation. By defaulting to the real browser's native values, the system avoids "tell-tale" fingerprinting markers that arise when fake values diverge from the underlying hardware profile.Automation and Human-like Behavior
To mitigate behavioral analysis, the skill provides helper functions for naturalistic interaction:- Mouse Simulation:
simulateMouseMovement(page)introduces non-linear coordinate changes. - Temporal Variation:
humanDelay(min, max)andhumanType()randomize latency to prevent deterministic timing signatures common in scripts.
Scope and Verification
The tool has been validated against a 9/9 coverage matrix, includingsannysoft, rebrowser-detector, deviceandbrowserinfo, browserscan, iphey, and creepjs. While highly effective at bypassing automation-framework detection and bot-checks (enabling access to public Reddit, YouTube, and X), it is not a silver bullet. The documentation explicitly distinguishes between fingerprinting/framework detection and reputation/behavioral blocks. It notes that it does not circumvent IP-based rate limiting, account-level checkpoints (e.g., Instagram/Facebook logins), or advanced server-side behavioral analysis.