負荷をかけないクロール:バジェットとレート制限

SpiderHeadは、既定で相手のサーバーに配慮して動作します。速度はホストあたり1秒に約2リクエスト、リクエストは範囲を限定した読み取り専用です。URLの上限は、サイトの規模の推測ではなく、明示的なバジェットとして設定します。

できること

自分で決めるバジェット

クロールは、指定した上限に達すると停止します。上限は、URL数(既定は200)、リンク深度(既定は5)、HTTPリクエストの試行回数の合計、任意で設定する実時間のバジェットです。URLのパターン、ファイル拡張子、メディアタイプによる対象と除外のルールで、範囲を絞ることもできます。プロジェクトのバジェットを超えるには、--approve-large-crawlが必要です。

  • --max-urlsは、サイトの規模の推測ではなく、明示的なバジェットです
  • 待ち時間は接続先に合わせて調整されます。サーバーが遅くなったりタイムアウトしたりすると、長くなります

設計段階から安全

ネットワークのツールは、名前で許可しない限り、プライベートやローカルの接続先をブロックします。クローラーが、指定したサイトに送るのは、範囲を限定した読み取り専用のリクエストだけで、User-Agentで自分の身元を名乗ります。また、タイムアウトが5回連続すると、自動的に停止します。

3ステップで、スキャンを1件保存

  1. URLのバジェットを設定する

    --max-urlsで、クロールが取得するページ数の上限を設定します(既定は200)。プロジェクトのバジェットを超えるには、--approve-large-crawlが必要です。

  2. ホストごとに間隔を取る

    既定の待ち時間は、リクエスト間で0.5秒です。ホストあたり1秒に約2リクエストになります。--max-urls-per-secondで速度を設定でき、サーバーに余裕がないときは、適応型のバックオフがクロールを遅くします。

  3. robots.txtとプライベートな接続先を守る

    robots.txtは既定で順守されます。プライベートやローカルのアドレスは、名前で許可するまでブロックされたままです。

この機能のチェック項目

チェック項目意味重要度根拠
SLOW_RESPONSEサーバーの応答に1.5秒を超える時間がかかったImportantページごとの応答時間と、1.5秒のしきい値との比較
BLOCKED_BY_ROBOTSURLがrobots.txtでブロックされているImportantクロールまたはSFのエクスポートで見つかったブロック対象のURL
IMPORTANT_URL_BLOCKED_BY_ROBOTS内部リンクを受けているページがrobots.txtでブロックされており、リンクの発見がそこで止まるImportantブロックされているURLと、その内部リンク
ROBOTS_BLOCKS_RESOURCESページのレンダリングに必要なJavaScriptやCSSが、robots.txtでブロックされているTipブロックされているリソースのURL
SITEMAP_NOT_IN_ROBOTSrobots.txtにSitemapディレクティブがないTiprobots.txtの内容

コマンド1つで実行

bash
seohead crawl-site --config-help

先にインストールします: インストールガイド。どのコマンドも、AIエージェント向けのMCPツールとして実行できます。

必要なもの

  • 開始URL
  • 任意:--max-urlsと--max-urls-per-second
  • 任意:待ち時間、深度、対象範囲を指定するクロール設定ファイル

制限事項

  • レート制限はホスト単位です。サーバーの処理能力までは把握していません
  • 適応型のバックオフは、応答の遅さに反応して動きます。負荷を予測することはできません
  • --robots ignoreはrobots.txtを無視します。自分が所有するサイトだけで使ってください

よくある質問

クローラーがサイトを重くすることはありませんか?
既定ではリクエスト間に0.5秒の待ち時間を入れ、サーバーが遅くなったりタイムアウトしたりすると、自動でバックオフします。タイムアウトが5回連続すると、クロールは停止します。
robots.txtに従いますか?
はい、既定では従います。--robots report_onlyは、robots.txtを取得してブロックされる対象を報告したうえで、クロールを続けます。--robots ignoreはrobots.txtを完全に無視するため、自分が所有するサイトだけで使ってください。
プライベートアドレスにあるステージングサイトをクロールできますか?
明示的に許可した場合だけです。SEOHEAD_ALLOW_PRIVATE_HOSTSで指定したホスト名を許可でき、SEOHEAD_ALLOW_PRIVATE_NETWORKS=1ですべてのプライベート範囲が開きます。
もっと速くクロールできますか?
はい。--max-urls-per-secondでホストあたりの最大速度を設定でき、speed.concurrencyで同時に処理するリクエスト数(既定は1)を増やせます。サーバーに余裕がないときは、適応型のバックオフでクロールが遅くなる場合もあります。増やすのは、自分で管理しているサーバーだけにしてください。