playwright-scraper-skill について
playwright-scraper-skillは、静的ページからJavaScriptを使うページ、ボット対策のあるサイトまで扱うPlaywrightベースのスクレイピングスキルです。通常用とステルス用のスクリプトがあり、待機時間やブラウザー出力を設定できます。
主な機能
- 01サイトの保護レベルに応じた方式選択
- 02動的ページ向けPlaywrightスクリプト
- 03保護サイト向けステルス対策
- 04JSON、スクリーンショット、HTML出力
- 05環境変数によるスクリプト設定
活用シーン
- 01JavaScriptで動くページの内容取得
- 02Cloudflareのチャレンジがあるページのスクレイピング
- 03ページのスクリーンショットとHTMLの保存
- 04待機時間やブラウザー表示の調整
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ csy12138da/ playwright-scraper-skill --skill playwright-scraper-skillインストール後、Claude Code で/playwright-scraper-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdpackage.jsonscripts/playwright-simple.jsplaywright-stealth.js詳細
Playwright スクレイピングスキル
ボット対策機能を備えた Playwright ベースのウェブスクレイピングスキルです。対象ウェブサイトのボット対策レベルに応じて、最適な方法を選択してください。
🎯 ユースケース一覧
| 対象ウェブサイト | ボット対策レベル | 推奨方法 | スクリプト |
|---|---|---|---|
| 一般的なサイト | 低 | web_fetch ツール | N/A(組み込み) |
| 動的なサイト | 中 | Playwright Simple | scripts/playwright-simple.js |
| Cloudflare で保護されたサイト | 高 | Playwright Stealth ⭐ | scripts/playwright-stealth.js |
📦 インストール
cd playwright-scraper-skill
npm install
npx playwright install chromium
🚀 クイックスタート
1️⃣ 一般的なサイト(ボット対策なし)
静的サイトでは、組み込みの web_fetch ツールを使用します。
2️⃣ 動的なサイト(JavaScript が必要)
Playwright Simple を使用します。
node scripts/playwright-simple.js "https://example.com"
3️⃣ ボット対策で保護されたサイト(Cloudflare など)
Playwright Stealth を使用します。
node scripts/playwright-stealth.js "https://m.discuss.com.hk/#hot"
機能:
- 自動化の痕跡を隠します(
navigator.webdriver = false) - 実際の端末に合わせた User-Agent を使用します(iPhone、Android)
- 人間の動作を模倣するため、ランダムな待ち時間を挿入します
- スクリーンショットと HTML の保存に対応します
📖 スクリプトの説明
scripts/playwright-simple.js
- 用途: 一般的な動的ウェブサイト
- 速度: 高速(3~5 秒)
- ボット対策: なし
- 出力: JSON(タイトル、コンテンツ、URL)
scripts/playwright-stealth.js ⭐
- 用途: Cloudflare またはボット対策で保護されたサイト
- 速度: 中速(5~20 秒)
- ボット対策: 中~高(自動化を隠し、実際の端末に合わせた UA を使用)
- 出力: JSON + スクリーンショット + HTML ファイル
- 検証済み: Discuss.com.hk で成功率 100%
🔧 カスタマイズ
すべてのスクリプトで環境変数を使用できます。
# Set screenshot path
SCREENSHOT_PATH=/path/to/screenshot.png node scripts/playwright-stealth.js URL
# Set wait time (milliseconds)
WAIT_TIME=10000 node scripts/playwright-simple.js URL
# Enable headful mode (show browser)
HEADLESS=false node scripts/playwright-stealth.js URL
# Save HTML
SAVE_HTML=true node scripts/playwright-stealth.js URL
# Custom User-Agent
USER_AGENT="Mozilla/5.0 ..." node scripts/playwright-stealth.js URL
🛡️ ボット対策手法のまとめ
✅ 効果的なボット対策
navigator.webdriverを隠す — 必須です- 実際の端末に合わせた User-Agent — 実際の端末(iPhone、Android)を使用します
- 人間の動作を模倣する — ランダムな待ち時間やスクロールを取り入れます
- フレームワークの特徴を避ける — Crawlee や Selenium は簡単に検出されます
addInitScript(Playwright)を使用する — ページの読み込み前に挿入します
❌ 効果のないボット対策
- User-Agent だけを変更する — 不十分です
- 高水準のフレームワーク(Crawlee)を使用する — より簡単に検出されます
- Docker で隔離する — Cloudflare 対策には効果がありません
🔍 トラブルシューティング
問題:403 Forbidden
解決策: playwright-stealth.js を使用します
問題:Cloudflare のチャレンジページが表示される
解決策:
- 待ち時間を延ばします(10~15 秒)
headless: falseを試します(ヘッドフルモードのほうが成功率が高い場合があります)- プロキシ IP の使用を検討します
📚 参考資料
コメント
Markdown 対応