A community-driven registry for the Claude Code ecosystem. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Claude Code skill to bypass bot detection (Google CAPTCHA, etc.)
Claude Code skill to bypass bot detection using
rebrowser-playwrightwith 8 stealth patches.
npx skills add greekr4/playwright-bot-bypass
Tested against Blue Ribbon Survey — a site with active bot protection:
| Metric | Stealth (this skill) | Normal Playwright |
|---|---|---|
| HTTP Status | 200 OK | 403 Forbidden |
navigator.webdriver | undefined | true |
navigator.plugins | 3 (patched) | 0 (detected) |
navigator.languages | [ko-KR, ko, en-US, en] | [en-US] |
outerWidth - innerWidth | 16 (real chrome) | 0 (headless) |
chrome.runtime | Present | Missing |
| WebGL Renderer | Apple M2 (real GPU) | SwiftShader (software) |
| User-Agent | Clean Chrome | HeadlessChrome |
| Standard Playwright (Detected) | rebrowser-playwright (Bypassed) |
|---|---|
![]() | ![]() |
| # | Patch | Bypasses |
|---|---|---|
| 1 | navigator.webdriver removal | All bot detectors |
| 2 | chrome.runtime object | Cloudflare, sannysoft |
| 3 | navigator.plugins (3 plugins) | Cloudflare Bot Management |
| 4 | navigator.languages (ko-KR, en) | Akamai (cross-checks HTTP header) |
| 5 | Permissions API normalization | PerimeterX |
| 6 | hardwareConcurrency / deviceMemory | Advanced fingerprinters |
| 7 | outerWidth / outerHeight offset | Headless detection |
| 8 | Canvas fingerprint noise | Cloudflare Turnstile |
Plus: --disable-blink-features=AutomationControlled, --no-sandbox, real Chrome via channel: 'chrome'
npm init -y && npm install rebrowser-playwright
import { createStealthBrowser, humanDelay, humanType, simulateMouseMovement } from './scripts/stealth-template.mjs';
const { browser, page } = await createStealthBrowser();
try {
await page.goto('https://example.com');
await simulateMouseMovement(page); // Natural mouse movement
await humanType(page, 'input', 'query'); // Human-like typing
await humanDelay(300, 800);
} finally {
await browser.close();
}
createStealthBrowser({
headless: false, // Required for stealth (default)
viewport: { width: 1280, height: 800 },
locale: 'ko-KR', // Browser locale
storageState: './session.json', // Cookie persistence
proxy: { server: 'http://proxy:8080' } // Proxy support
});
import { chromium } from 'rebrowser-playwright';
const browser = await chromium.launch({
headless: false,
channel: 'chrome',
args: ['--disable-blink-features=AutomationControlled', '--no-sandbox']
});
const context = await browser.newContext({
locale: 'ko-KR',
extraHTTPHeaders: { 'Accept-Language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7' }
});
await context.addInitScript(() => {
delete Object.getPrototypeOf(navigator).webdriver;
// ... see SKILL.md for full patch list
});
const page = await context.newPage();
try {
await page.goto('https://google.com');
} finally {
await browser.close();
}
pip install undetected-chromedriver
import undetected_chromedriver as uc
driver = uc.Chrome() # auto-detects Chrome version
driver.get('https://google.com')
Python
playwright-stealthonly patches at JS level — WebGL still shows SwiftShader. Useundetected-chromedriverinstead.
| Environment | bot.sannysoft.com | Google Search | bluer.co.kr |
|---|---|---|---|
| Standard Playwright | Detected | CAPTCHA | 403 |
| rebrowser-playwright (this) | Pass | Works | 200 |
| playwright-stealth (Python) | Pass | CAPTCHA | - |
| undetected-chromedriver | Pass | Works | - |
skills/playwright-bot-bypass/
scripts/
stealth-template.mjs # Reusable stealth factory (all examples import this)
bot-detection-test.mjs # Verify bypass at bot.sannysoft.com
examples/
stealth-google-search.mjs # Google search without CAPTCHA
ab-test.mjs # Side-by-side detected vs stealth
stealth-twitter-scrape.mjs # Twitter/X profile scraping
package.json # Dependencies (type: module)
marketplace.json
SKILL.md # Full documentation for Claude Code agents
.mjs)headless: false)| Problem | Fix |
|---|---|
ERR_MODULE_NOT_FOUND | Run npm install rebrowser-playwright in your script directory |
| Browser not opening | Verify Chrome: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version |
| WebGL shows SwiftShader | Confirm import is from rebrowser-playwright, not playwright |
| Still getting detected | Add simulateMouseMovement() and humanDelay() between actions |
| Process hangs | Ensure browser.close() is in a finally block |
MIT
ML engineering — model training, deployment, MLOps, monitoring
DevOps practices — CI/CD, containers, monitoring, infrastructure automation
Professional skills marketplace with production-ready skills for enhanced development
Self-learning system that captures corrections and syncs them to CLAUDE.md and AGENTS.md