mcpField
S
Scrape-LE

Scrape-LE

ローカル
letools.devブラウザ自動化11 日前に更新

Scrape-LE について

Scrape-LEはヘッドレスChromiumでURLを確認し、スクレイパーを作る前に取得条件を評価する開発者向けツールです。ページ情報に加え、robots.txtの規則、レート制限、ボット対策の兆候、認証障壁を検出します。

主な機能

  1. 01ヘッドレスChromiumでURLを読み込み
  2. 02パスに対するrobots.txt規則を評価
  3. 03レート制限とボット対策の兆候を検出
  4. 04認証障壁とページエラーを報告
  5. 05ページ全体のスクリーンショットを保存

活用シーン

  1. 01スクレイパー実装前に対象ページを確認
  2. 02クローラーの許可範囲とクロール遅延を確認
  3. 03ブロックや認証が必要なページを診断

MCP 対応

MCPサーバーはstdio経由で `analyze_robots_txt` ツールを提供します。渡されたrobots.txtの内容とパスを評価し、URL取得やネットワークリクエストは行いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"nolindnaidoo-scrape-le": {
"command": "npx",
"args": [
"-y",
"scrape-le-mcp"
]
}
}
}
起動コマンドnpx -y scrape-le-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmscrape-le-mcp2.6.0

ツール

1

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
pathstringはい確認するパス。例:"/admin"。完全な URL も受け付け、パス部分に変換します。
agentstringいいえ評価対象のクローラー。例:"Googlebot"、"MyBot/1.0"。製品トークンで大文字と小文字を区別せずに照合します。省略すると、汎用ルールの結果を返します。
contentstringはいrobots.txt ファイルの内容。
maxResultsintegerいいえ返される拒否パスの上限(デフォルトは 500)。meta.truncated は、破棄された結果があるかどうかを示します。

詳細

Scrape-LE ロゴ

Scrape-LE:手間いらずのスクレイピング可否チェック

ヘッドレス Chromium で URL を読み込み、スクレイパーを書く前に妨げになる要因を確認できます
アンチボットベンダー、レート制限、robots.txt のルール、ログイン画面、コンソールエラー、スクリーンショット

VS Code Marketplace からインストール Open VSX のダウンロード数 npm の scrape-le-mcp npm の scrape-le crates.io の scrape-le LE Tools


VS Code の Scrape-LE

便利だと思いましたか? スターや評価を付けると、ほかの開発者にも見つけてもらいやすくなります — ★ GitHub · ★ Open VSX · ★ Marketplace

できること

Scrape-LE: Check URL Scrapeability を実行して URL を入力すると、実際のヘッドレス Chromium でページが読み込まれます。レポートは出力チャンネルに表示され、HTTP ステータス、ページタイトル、読み込み時間、コンソールエラー、ページ全体のスクリーンショット、4 種類の検出結果を確認できます。VS Code に加え、Cursor や VSCodium などの VS Code ベースのエディターでも動作します(Open VSX からインストールできます)。

初回のみ、Scrape-LE: Setup Browser を実行して Chromium をインストールします(約 130MB、Playwright のブラウザーキャッシュ内)。

インストール

場所利用できるものインストール
VS Codeエディター内で、キー操作ひとつで同じチェックを実行Marketplace
Cursor、VSCodium、Windsurf同じ拡張機能Open VSX
ターミナルまたは CI のステップ単一 URL または複数 URL のチェックを実行し、終了コードを取得npx scrape-le · npm または cargo install scrape-le · crates.io
Node 経由で利用する任意の MCP エージェントstdio 経由の analyze_robots_txtnpx scrape-le-mcp · npm

AI エージェントから使用する

同じエンジンがMCPサーバーとして動作するため、コマンドを実行する代わりにエージェントから直接呼び出せます。

エディター方法
VS Code 1.101+インストール不要です。拡張機能がエージェントモードに analyze_robots_txt を登録します
Claude Codeclaude mcp add scrape-le -- npx -y scrape-le-mcp
Cursor、Windsurf、その他すべてnpx scrape-le-mcp を指定します

Claude Code のエージェントが scrape-le MCP サーバーを呼び出している様子

analyze_robots_txt(content, path, agent?, maxResults?)

robots.txt の内容とパスを指定すると、ルールでそのパスのクロールが許可されているかを報告します。許可される場合は agent を指定するグループのルールを、そうでない場合は汎用の(User-agent: *)ルールを適用し、回答内の agent でどちらのルールを使ったかを示します。さらに、クロール遅延、クロールを許可しないパターン、サイトマップも返します。

サーバーはコンテンツを受け取ってデータを返すもので、ファイルを読み取ったり、独自にネットワークリクエストを送信したりすることはありません。npm では scrape-le-mcp として、MCP レジストリでは io.github.nolindnaidoo/scrape-le として公開されています。

手動で設定する — MCP 設定ファイルを使う任意のホスト

ほとんどのホストは JSON 設定ファイルを読み込みます。エントリーを 1 つ追加します。

{
  "mcpServers": {
    "scrape-le": {
      "command": "npx",
      "args": ["-y", "scrape-le-mcp"]
    }
  }
}

初回実行時に -y を指定すると、インストール確認を省略できます。リリースを追跡せず特定のバージョンに固定したい場合は、[email protected] のように指定します。

起動のたびに npx を実行したくない場合は、1 回だけインストールして、代わりにバイナリを指定してください。

npm install -g scrape-le-mcp
{
  "mcpServers": {
    "scrape-le": { "command": "scrape-le-mcp" }
  }
}

stdio 経由で MCP を通信し、環境変数、API キー、独自の設定は必要ありません。何かに組み込む前に動作を確認するには、次を実行します。

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npx -y scrape-le-mcp

ツールの一覧を出力して終了します。analyze_robots_txt が表示されれば、サーバーは動作しています。

CLI

同じチェックをターミナルまたはエージェントのループから実行できます。このリポジトリの crate/ にある Rust CLI は、拡張機能と同じ署名コーパス(crate/signatures/ と crate/fixtures/)を共有しているため、URL の判定が両者で食い違うと CI が失敗します。

scrape-le https://example.com/search   # summary on stderr, JSON on stdout when piped
scrape-le --input urls.txt             # a batch, streamed as it completes
scrape-le mcp                          # the same check over MCP on stdio

ターミナル上の scrape-le

npm(scrape-le)または crates.io(scrape-le)からインストールできます。 どちらも同じ scrape-le コマンドをインストールします。

npm 上の scrape-le crates.io 上の scrape-le

npm install -g scrape-le   # or run it once: npx scrape-le
cargo install scrape-le

終了コードが回答を示します。0 は問題なし · 1 は明確な否定 · 2 は質問の形式が不正です。

検出項目

検出項目動作
ボット対策ベンダーレスポンスヘッダー、スクリプトのソース、DOM 要素、window グローバルを調べ、Cloudflare(Turnstile チャレンジを含む)、reCAPTCHA、hCaptcha、DataDome、PerimeterX のフィンガープリントを検出します
レート制限X-RateLimit-* / RateLimit-* / Retry-After レスポンスヘッダー、および HTTP 429 を検出します
robots.txt<origin>/robots.txt を取得し、RFC 9309 の仕様に従って URL に対するルールを評価します。scrape-le.robotsTxt.agent が設定され、グループ名と一致する場合はそのグループを使用し、それ以外は User-agent: * を使用します。レポートにはどのグループが適用されたかが表示されます。グループ化されたエージェント、Allow / Disallow の最長一致、* ワイルドカード、$ アンカー、クロール遅延、サイトマップに対応します
認証HTTP 401/403、ログインフォーム(パスワードフィールドとユーザー名フィールド)、ページテキスト内の認証関連キーワード、最終 URL の認証関連パスセグメントを検出します

制限について:シグネチャは、公開されている統合パターンを基にしたベストエフォートのフィンガープリントです。ウィジェットが検出されても、そのページでチャレンジが表示される可能性があることを示すだけで、実際に表示されるとは限りません。また、問題が検出されなくても、そのサイトがスクレイピングを許可している証拠にはなりません。scrape-le.robotsTxt.agent が空の場合、評価されるのは User-agent: * のグループのみです。ページの検出では、読み込み後にネットワークがアイドル状態になるまで最大 5 秒待機します。そのため、それより後にレンダリングされるコンテンツは検出できない場合があります。

コマンド

コマンド説明
Scrape-LE: Check URL ScrapeabilityURL の入力を求め、すべてのチェックを実行します
Scrape-LE: Check Selected URL現在選択されている URL をチェックします(右クリックメニューからも実行できます)
Scrape-LE: Setup BrowserChromium ブラウザーをインストールまたは確認します
Scrape-LE: Open SettingsScrape-LE の設定を開きます
Scrape-LE: Help & Troubleshooting組み込みドキュメントを開きます

デフォルトでは、どのコマンドにもキーは割り当てられていません。エディターの Keyboard Shortcuts で、任意のキーを割り当ててください。

設定

設定デフォルト値説明
scrape-le.browser.timeout30000ページ読み込みのタイムアウト(ミリ秒、5000~120000)
scrape-le.browser.viewport.width1280ビューポートの幅
scrape-le.browser.viewport.height720ビューポートの高さ
scrape-le.browser.userAgent""カスタム User-Agent(空の場合は Chromium のデフォルト)
scrape-le.retry.userAgentsfalseチェックがブロックされた場合、または失敗した場合に、一般的な User-Agent で再試行し、成功したものを報告します
scrape-le.screenshot.enabledtrueチェックごとにページ全体のスクリーンショットを保存します
scrape-le.screenshot.path.vscode/scrape-leスクリーンショットのディレクトリ(ワークスペース相対パスまたは絶対パス)
scrape-le.screenshot.formatpngpng または jpeg
scrape-le.screenshot.quality90JPEG の品質(0~100、png の場合は無視されます)
scrape-le.checkConsoleErrorstrue読み込み中にコンソールエラーとページエラーを記録します
scrape-le.detections.antiBottrueボット対策ベンダーを検出します
scrape-le.detections.rateLimittrueレート制限を検出します
scrape-le.detections.robotsTxttruerobots.txt を取得して評価します
scrape-le.robotsTxt.agent""クローラーが robots.txt で使用するエージェント(例:Googlebot、MyBot/1.0)。空の場合、またはいずれのグループ名とも一致しない場合は、User-agent: * のルールが使用されます
scrape-le.detections.authenticationtrue認証ウォールを検出します
scrape-le.notificationsLevelimportantall = すべての通知、important = 警告とエラー、silent = エラーのみ
scrape-le.statusBar.enabledtrueステータスバー項目を表示します

言語

英語以外に 12 言語に対応しています。

ドイツ語 · スペイン語 · フランス語 · インドネシア語 · イタリア語 · 日本語 · 韓国語 · ポルトガル語(ブラジル) · ロシア語 · ウクライナ語 · ベトナム語 · 中国語(簡体字)

両方の部分が対象です。マニフェスト(コマンドタイトル、設定名と説明)と、拡張機能の実行中に表示されるすべての内容(通知、ステータスバー、クイックピック、プロンプト)が翻訳されています。拡張機能は VS Code の表示言語に従うため、エディターの現在の設定と自動的に一致します。独自の設定はありません。

プライバシーとセキュリティ

  • ネットワークアクセスは機能の一部であり、範囲が限定されています。 チェックで接続するのは、入力した URL(ヘッドレス Chromium で読み込み、ブラウザーと同様にそのページのリソースを取得します)と、そのオリジンの /robots.txt の 2 つだけです。それ以外にデータが送信されることはありません。テレメトリーや分析もありません。
  • スクリーンショットはローカルに保存され、ワークスペース内の設定済みパスに書き込まれます。
  • MCP サーバーはネットワークリクエストを一切行いません。拡張機能とは異なり、意図的にそうしています。fetchRobotsTxt は任意のオリジンから URL を組み立てますが、エージェントのループ内では SSRF の脆弱性につながり得ます。URL を指定する呼び出し元はユーザーではなくモデルだからです。サーバーは、すでに取得済みの robots.txt の内容を分析します。また、どのツールも url 引数を受け取らないことをテストで検証しています。
  • エラー通知では、ホームディレクトリと認証情報に見える文字列を伏せます。
  • チェック対象のサイトを尊重してください。スクレイピング可能かどうかのレポートは情報であり、許可ではありません。
  • 評価を促すプロンプトは 1 回、最大 2 回までです。 3 回目の正常な使用時に、拡張機能は評価するかどうかを一度だけ尋ねます。Later を選択するか、通知を閉じた場合は、20 回目にもう一度尋ねます。Don't Ask Again を選択すると、以後は表示されません。notificationsLevel を important または silent に自分で設定すると、この機能は無効になります。回数は VS Code の拡張機能ストレージに保存され、外部に送信されることはありません。Rate を選択すると、ブラウザーでインストール元の一覧(VS Code Marketplace または Open VSX)が開きます。

ドキュメント

内容場所
ツールが扱える内容 — 範囲、出力の契約、拒否、対象外事項crate/SPEC.md
拡張機能の構築と内部構成 — アーキテクチャ、不変条件、ツールチェーン、リリースAGENTS.md
CLI の構築と内部構成crate/AGENTS.md
変更内容CHANGELOG.md · crate/CHANGELOG.md
このツールのページと、ほかの 15 個のツールletools.dev/tools/scrape-le

パフォーマンス

入力サイズ検出数時間レートスキャン速度
ヘッダー署名スキャン2.83 MB20,0007.24 ms2,762,876/sec390.5 MB/s
robots.txt パスマッチ3.32 MB60,00014.41 ms4,164,654/sec230.4 MB/s

Apple M5 Pro、24 GB RAM、Node 24.3.0 で、ウォームアップ後に 7 回実行した中央値です。入力はチェックインせず、scripts/benchmark.ts で生成するため、上記のサイズは実測値そのものです。bun run benchmark で再現できます。

これらの数値はマシン固有であり、CI では検証されません。ビルドを左右するベンチマークでわかるのは、実行環境の負荷状況だけです。

テスト

指標カバレッジ
ステートメント76.08%
分岐68.02%
関数82.75%
行78.97%

40 ファイルにわたる 527 件のテストケースに加え、実際の VS Code 拡張機能ホストで実行する統合テストスイートと、ビルドした .vsix をクリーンなプロファイルにインストールするエンドツーエンドテストがあります。

実行結果(coverage/coverage-summary.json と coverage/test-results.json)から scripts/coverage-readme.js で生成しています。このセクションにずれがあると CI は失敗します。bun run test:coverage で再現でき、ケース数は vitest の出力値です。

LE ファミリーのその他のツール

あらゆるモデルが直面する作業に対応する、単機能ツールが16個あります。それぞれに Rust CLI と MCP サーバーが付属します。詳細はこちら:letools.dev

取り出す

  • String-LE — コードベース内のすべての文字列を抽出し、人が読めるようにします
  • Numbers-LE — コードベース内のすべてのハードコードされた数値を抽出し、人が確認できるようにします
  • Units-LE — 単位付きの数量をすべて抽出して正規化し、曖昧なものは名前を示して対象外にします
  • Dates-LE — すべての日付とタイムスタンプ、およびそれぞれが解決される正確な時点を抽出します
  • IDs-LE — UUID、ULID、NanoID、ObjectId、Snowflakeをすべて抽出し、内部に含まれる時刻をデコードします
  • IPs-LE — IPアドレス、CIDRブロック、MACアドレスをすべて抽出し、正規化してスコープ別に分類します
  • URLs-LE — コードベース内のすべてのURLを、プロトコルと正確な位置情報とともに抽出します
  • Paths-LE — コードベース内のすべてのファイルパスを抽出し、現在も何かを指しているかどうかを示します
  • Colors-LE — コードベース内のすべての色を抽出し、パレットにない色を示します

チェックする

  • Regex-LE — コードベース内のすべての正規表現を検出し、壊滅的なバックトラッキングを引き起こす可能性があるものを報告します
  • Versions-LE — リポジトリ内のマニフェスト間で、同じ依存関係のバージョン制約が異なる箇所を検出します
  • i18n-LE — プロジェクトで使用している i18n ライブラリを特定し、そのライブラリのルールに基づいてカタログを監査します
  • Scrape-LE — スクレイパーを書く前にページをスクレイピングできるか確認し、判定できない場合はその旨を示します

保護する

  • Secrets-LE — コードベース内のハードコードされた認証情報を検出し、レポートに表示することはありません
  • EnvSync-LE — ディレクトリツリー内の dotenv ファイルを比較し、どのファイルにどのキーがないかを示します
  • Unicode-LE — 意味を隠す Unicode を検出します。双方向制御文字、不可視文字、ホモグリフ、混在スクリプトが対象です

それぞれが独立しています。共有クレートも、公開されたコアもありません。2つのツールが同じ答えにたどり着くとすれば、それはその答えが2度正しかったからです。

お問い合わせ — nolindnaidoo.com · GitHub · LinkedIn

nolindnaidoo によるその他のプロジェクト

Rust — pixelcoords と pixelactions は一連のループを構成します。pixelcoords が 場所 に答え、pixelactions がそこで 操作 します。それぞれ独自のツールと独自の方針を持ち、LE ファミリーには属しません。

ライセンス

MIT © nolindnaidoo

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。