Claude Info
Безопасность

Playwright Bot Bypass

greekr4/playwright-bot-bypass

Claude Code скилл для обхода систем обнаружения ботов (Google CAPTCHA, Cloudflare и др.) на базе rebrowser-playwright. Поддерживает реальный GPU-фингерпринт, имитацию поведения человека, сохранение cookies и прокси. Работает с Node.js и Python.

Установка

terminal
bash
npx skills add greekr4/playwright-bot-bypass

README

playwright-bot-bypass v2.0

Claude Code скилл для обхода обнаружения ботов с использованием rebrowser-playwright и 8 стелс-патчами.

Установка

npx skills add greekr4/playwright-bot-bypass

Возможности

  • Прохождение всех тестов bot.sannysoft.com
  • Поиск в Google без CAPTCHA
  • Скрапинг Twitter/X без авторизации
  • Реальный GPU-фингерпринт (Apple M2, NVIDIA и др.)
  • 8 патчей фингерпринта (webdriver, plugins, languages, permissions, canvas и др.)
  • Имитация поведения человека (движение мыши, задержки при вводе)
  • Сохранение cookies и поддержка прокси
  • Работает с Node.js и Python

A/B-тест: bluer.co.kr (реальная защита от ботов)

Тестирование на Blue Ribbon Survey — сайте с активной защитой от ботов:

МетрикаСтелс (этот скилл)Обычный Playwright
HTTP-статус200 OK403 Forbidden
navigator.webdriverundefinedtrue
navigator.plugins3 (патч)0 (обнаружен)
navigator.languages[ko-KR, ko, en-US, en][en-US]
outerWidth - innerWidth16 (реальный Chrome)0 (headless)
chrome.runtimeПрисутствуетОтсутствует
WebGL RendererApple M2 (реальный GPU)SwiftShader (программный)
User-AgentЧистый ChromeHeadlessChrome

A/B-тест bot.sannysoft.com

Стандартный Playwright (обнаружен)rebrowser-playwright (обход)
DetectedStealth

Стелс-патчи (8 векторов)

#ПатчОбходит
1Удаление navigator.webdriverВсе детекторы ботов
2Объект chrome.runtimeCloudflare, sannysoft
3navigator.plugins (3 плагина)Cloudflare Bot Management
4navigator.languages (ko-KR, en)Akamai (перекрёстная проверка HTTP-заголовка)
5Нормализация Permissions APIPerimeterX
6hardwareConcurrency / deviceMemoryПродвинутые фингерпринтеры
7Смещение outerWidth / outerHeightОбнаружение headless-режима
8Шум canvas-фингерпринтаCloudflare Turnstile

Дополнительно: --disable-blink-features=AutomationControlled, --no-sandbox, реальный Chrome через channel: 'chrome'

Быстрый старт

Node.js (рекомендуется)

npm init -y && npm install rebrowser-playwright

Использование шаблона (рекомендуется)

js
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);  // Естественное движение мыши
  await humanType(page, 'input', 'query');  // Ввод текста как человек
  await humanDelay(300, 800);
} finally {
  await browser.close();
}

Параметры шаблона

js
createStealthBrowser({
  headless: false,              // Обязательно для стелс-режима (по умолчанию)
  viewport: { width: 1280, height: 800 },
  locale: 'ko-KR',             // Локаль браузера
  storageState: './session.json',  // Сохранение cookies
  proxy: { server: 'http://proxy:8080' }  // Поддержка прокси
});

Ручная настройка

js
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;
  // ... полный список патчей см. в SKILL.md
});

const page = await context.newPage();
try {
  await page.goto('https://google.com');
} finally {
  await browser.close();
}

Python

pip install undetected-chromedriver
py
import undetected_chromedriver as uc

driver = uc.Chrome()  # автоматически определяет версию Chrome
driver.get('https://google.com')

playwright-stealth для Python патчит только на уровне JS — WebGL по-прежнему показывает SwiftShader. Вместо него используйте undetected-chromedriver.

Результаты тестирования

Окружениеbot.sannysoft.comGoogle Searchbluer.co.kr
Стандартный PlaywrightОбнаруженCAPTCHA403
rebrowser-playwright (этот скилл)ПройденРаботает200
playwright-stealth (Python)ПройденCAPTCHA-
undetected-chromedriverПройденРаботает-

Включённые скрипты

skills/playwright-bot-bypass/ scripts/ stealth-template.mjs # Переиспользуемая стелс-фабрика (импортируется во всех примерах) bot-detection-test.mjs # Проверка обхода на bot.sannysoft.com examples/ stealth-google-search.mjs # Поиск в Google без CAPTCHA ab-test.mjs # Сравнение: обнаружен vs стелс stealth-twitter-scrape.mjs # Скрапинг профилей Twitter/X package.json # Зависимости (type: module) marketplace.json SKILL.md # Полная документация для агентов Claude Code

Требования

  • Node.js 18+ (ESM / .mjs)
  • Установленный Google Chrome (не только Chromium)
  • Режим с отображением окна (headless: false)

Устранение неполадок

ПроблемаРешение
ERR_MODULE_NOT_FOUNDВыполните npm install rebrowser-playwright в директории скрипта
Браузер не открываетсяПроверьте Chrome: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
WebGL показывает SwiftShaderУбедитесь, что импорт идёт из rebrowser-playwright, а не из playwright
Всё равно обнаруживаетсяДобавьте simulateMouseMovement() и humanDelay() между действиями
Процесс зависаетУбедитесь, что browser.close() находится в блоке finally

Лицензия

MIT

Похожие скиллы