Agent Skills by ALSEL
Anthropic Claude個人生産性⭐ リポ 0品質スコア 50/100

playwright-bot-bypass

ユーザーが「ボット検知の回避」「CAPTCHAのスキップ」「ステルスブラウザ自動化」「検知されないPlaywright」「Googleのボットチェック回避」「rebrowser-playwright」などを求めた場合、またはボットを検知・ブロックするWebサイトの自動操作が必要な場合に使用するスキル。

description の原文を見る

This skill should be used when the user asks to "bypass bot detection", "avoid CAPTCHA", "stealth browser automation", "undetected playwright", "bypass Google bot check", "rebrowser-playwright", or needs to automate websites that detect and block bots.

SKILL.md 本文

Playwright ボット検出回避

rebrowser-playwright とステルス技術を使用してボット検出システムを回避します。bot.sannysoft.com をパスし、Cloudflare、Akamai、PerimeterX などの積極的なボット保護を備えたサイトの自動化を有効にします。

標準的な Playwright が検出される理由

検出ポイント標準的な Playwrightこのソリューション
navigator.webdrivertrue削除
WebGL RendererSwiftShader (ソフトウェア)実 GPU (Apple M2 など)
User Agent"HeadlessChrome" を含むクリーンな Chrome UA
chrome.runtime欠落完全なランタイムオブジェクト
navigator.plugins空配列3 つの標準プラグイン
navigator.languages['en-US'] のみAccept-Language ヘッダに一致
Permissions API不一致な状態実際の Chrome に一致するようにパッチ
outerWidth/Heightinner と同じ (chrome なし)実ブラウザのようにオフセット
Canvas フィンガープリント決定論的ノイズを注入

前提条件

  • Node.js 18+ (ESM サポート付き、.mjs ファイル対応)
  • Google Chrome がインストール済み (Chromium だけでなく)
  • ヘッドモード必須 (headless: false) — ディスプレイがないとステルスが機能しない

Chrome がインストールされていることを確認:

# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --version
# Linux
google-chrome --version

クイックスタート

1. インストール

npm init -y && npm install rebrowser-playwright

2. stealth-test.mjs を作成

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(() => {
  // Remove webdriver
  delete Object.getPrototypeOf(navigator).webdriver;

  // chrome.runtime
  if (!window.chrome) window.chrome = {};
  if (!window.chrome.runtime) {
    window.chrome.runtime = {
      PlatformOs: { MAC: 'mac', WIN: 'win', ANDROID: 'android', CROS: 'cros', LINUX: 'linux', OPENBSD: 'openbsd' },
      PlatformArch: { ARM: 'arm', X86_32: 'x86-32', X86_64: 'x86-64' }
    };
  }

  // Plugins (Cloudflare checks this)
  Object.defineProperty(navigator, 'plugins', {
    get: () => {
      const arr = [
        { name: 'Chrome PDF Plugin', filename: 'internal-pdf-viewer', description: 'Portable Document Format' },
        { name: 'Chrome PDF Viewer', filename: 'mhjfbmdgcfjbbpaeojofohoefgiehjai', description: '' },
        { name: 'Native Client', filename: 'internal-nacl-plugin', description: '' }
      ];
      arr.__proto__ = PluginArray.prototype;
      return arr;
    }
  });

  // Languages (must match Accept-Language header)
  Object.defineProperty(navigator, 'languages', {
    get: () => ['ko-KR', 'ko', 'en-US', 'en']
  });
});

const page = await context.newPage();

try {
  await page.goto('https://bot.sannysoft.com', { waitUntil: 'networkidle' });
  await page.screenshot({ path: '/tmp/stealth-test.png' });
  console.log('Screenshot saved: /tmp/stealth-test.png');
} finally {
  await browser.close();
}

3. 実行

node stealth-test.mjs

テンプレートの使用 (推奨)

scripts/stealth-template.mjs は、すべてのパッチが事前適用された再利用可能なファクトリを提供します:

import { createStealthBrowser, humanDelay, humanType, simulateMouseMovement } from './scripts/stealth-template.mjs';

const { browser, page } = await createStealthBrowser();

try {
  await page.goto('https://example.com');

  // 人間らしいマウス移動 (Cloudflare Turnstile を回避)
  await simulateMouseMovement(page);

  // 即座入力ではなく人間らしいタイピング
  await humanType(page, 'input[name="q"]', 'search query');
  await humanDelay(300, 800);
} finally {
  await browser.close();
}

テンプレートオプション

const { browser, context, page } = await createStealthBrowser({
  headless: false,             // ステルス必須 (デフォルト)
  viewport: { width: 1280, height: 800 },  // デフォルト
  locale: 'ko-KR',            // ブラウザロケール (デフォルト)
  userAgent: null,             // カスタム UA (オプション)
  storageState: './session.json',  // Cookie 永続化 (オプション)
  proxy: { server: 'http://proxy:8080' }   // プロキシ (オプション)
});

// セッションを再利用用に保存
import { saveSession } from './scripts/stealth-template.mjs';
await saveSession(context, './session.json');

適用されるステルスパッチ

テンプレートは addInitScript を通じてこれらのパッチを適用します:

#パッチ対象
1navigator.webdriver 削除すべてのボット検出器
2chrome.runtime オブジェクトCloudflare、sannysoft
3navigator.plugins (3 つのプラグイン)Cloudflare Bot Management
4navigator.languages (ko-KR,en)Akamai (HTTP ヘッダとクロスチェック)
5Permissions API 正規化PerimeterX
6hardwareConcurrency / deviceMemory高度なフィンガープリンター
7outerWidth / outerHeight オフセットヘッドレス検出
8Canvas フィンガープリントノイズCloudflare Turnstile

加えて起動引数: --disable-blink-features=AutomationControlled--no-sandbox

スクリプト

  • scripts/stealth-template.mjs — 再利用可能なステルスブラウザファクトリ (すべてのサンプルがこれをインポート)
  • scripts/bot-detection-test.mjs — bot.sannysoft.com での回避を検証

サンプル

  • examples/stealth-google-search.mjs — CAPTCHA なしの Google 検索
  • examples/ab-test.mjs — 検出 vs ステルスの並行比較
  • examples/stealth-twitter-scrape.mjs — Twitter/X プロフィールスクレイピング

注意: ab-test.mjs には rebrowser-playwrightplaywright の両方が必要です:

npm install rebrowser-playwright playwright && npx playwright install chromium

すべてのスクリーンショットは予測可能なパスのため /tmp/ に保存されます。

制限事項

  • headless: false (ディスプレイ付きのヘッドモード) が必須
  • 実際の Google Chrome がインストール済みである必要 (channel: 'chrome')
  • 一部サイトは動作パターンベースで検出される可能性あり — humanDelayhumanTypesimulateMouseMovement を使用
  • CAPTCHA 自体は回避しない、トリガーされるのを防ぐだけ
  • TLS/JA3 フィンガープリントは channel: 'chrome' で処理 (実 Chrome バイナリを使用)

Python サポート

undetected-chromedriver (推奨)

pip install undetected-chromedriver
import undetected_chromedriver as uc

# Chrome バージョンを一致させる: chrome://version を確認
driver = uc.Chrome()  # バージョンを自動検出

driver.get("https://www.google.com")
search_box = driver.find_element("name", "q")
search_box.send_keys("your search query")
search_box.submit()

Python playwright-stealth は JS レベルでのみパッチ — WebGL は引き続き SwiftShader を表示。代わりに undetected-chromedriver を使用してください。

代替: Python から Node.js を呼び出し

import subprocess
result = subprocess.run(['node', 'stealth-script.mjs', query], capture_output=True)

トラブルシューティング

問題解決策
ERR_MODULE_NOT_FOUNDスクリプトと同じディレクトリで npm install rebrowser-playwright を実行
ブラウザが開かないChrome がインストールされていることを確認 (前提条件を参照)
WebGL が SwiftShader を表示インポートが playwright からではなく rebrowser-playwright からであることを確認
依然として検出されるアクション間に simulateMouseMovement()humanDelay() を追加
プロセスがハングbrowser.close()finally ブロック内にあることを確認
SyntaxError: awaitファイルは .mjs であるか、package.json に "type": "module" が必要

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
greekr4
リポジトリ
greekr4/playwright-bot-bypass
ライセンス
MIT
最終更新
不明

Source: https://github.com/greekr4/playwright-bot-bypass / ライセンス: MIT

関連スキル

汎用個人生産性⭐ リポ 7,456

newsblur-cli

ターミナルからNewsBlurを管理できます。フィードの閲覧、ストーリーの検索、記事の保存・共有、インテリジェンス分類器の学習、新しいフィードの発見、ワークフローの自動化がNewsBlur CLIで実現します。ユーザーがNewsBlurアカウントを操作したい場合、フィードの確認、購読管理、またはニュース読み込みに関するスクリプト構築時に活用してください。

by samuelclay
汎用個人生産性⭐ リポ 58,643

caveman-compress

自然言語のメモリファイル(CLAUDE.md、todos、preferences)を「原始人形式」に圧縮し、入力トークンを削減します。技術的な内容、コード、URL、構造はすべて保持したまま圧縮します。圧縮版が元のファイルを上書きし、人間が読める形のバックアップはFILE.original.mdとして保存されます。トリガー:/caveman-compress FILEPATH または「compress memory file」

by JuliusBrussee
ALSEL独自Anthropic Claude個人生産性

find-skills

日本語の意図から Agent Skills を発見する。「楽天SEOのスキル探して」「PDFを処理したい」「データ分析を自動化したい」などの日本語リクエストに対応。Claude Code (CLI)、Codex、Gemini CLI、claude.ai (Web) いずれでも動作。日本最大の Agent Skills データベース「Agent Skills by ALSEL」(11,000件超、全件日本語化、ダウンロード可能スキル8,600件超) から、ユーザーの意図に合うスキルを推薦・インストール案内する。

by 株式会社ALSEL
汎用個人生産性⭐ リポ 39,967

planning-and-task-breakdown

仕事を順序立てたタスクに分割します。仕様書や要件が明確にあり、実装可能なタスクに分解する必要がある場合に利用してください。タスクが大きすぎて着手しづらい場合、スコープを見積もる必要がある場合、または並列で作業を進められる場合に活用できます。

by addyosmani
Anthropic Claude個人生産性⭐ リポ 132,723

docx

このスキルは、ユーザーがWord文書(.docxファイル)を作成、読み込み、編集、操作したいときに使用します。以下の場合に実行してください:「Word文書」「.docx」などの記述、または目次・見出し・ページ番号・レターヘッドなどのフォーマットを含む専門的な文書の作成リクエスト。また、.docxファイルのコンテンツ抽出・再編成、文書への画像挿入・置換、Word形式での検索置換、変更履歴やコメント機能の使用、コンテンツを整形したWord文書への変換の場合も対象です。ユーザーが「レポート」「メモ」「手紙」「テンプレート」などの成果物をWord形式または.docxファイルで求める場合はこのスキルを使用してください。PDF、スプレッドシート、Google Docs、文書作成と無関係なコーディングタスクには使用しないでください。

by anthropics
汎用個人生産性⭐ リポ 39,967

idea-refine

アイデアを反復的に改善します。構造化された発散的思考と収束的思考を通じて、アイデアを洗練させることができます。「idea-refine」または「ideate」を使用してトリガーします。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: greekr4 · greekr4/playwright-bot-bypass · ライセンス: MIT