Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
strot — Web API向けAPIスクレイパーエージェント | Kitploit
ツール/GitHubGitHub/vertexcover-io/strot
偵察スクリプトと自動化APIセキュリティテスト情報収集ウェブセキュリティクローラー
GitHubvertexcover-io/strot

strot

Web API向けAPIスクレイパーエージェント

リポジトリを見る
1869ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

自然言語で任意のウェブサイトの内部APIをリバースエンジニアリング

License Python


問題点

最新のウェブサイトは隠されたAJAXコールを通じてデータを読み込みます:

  • データはHTMLにはなく、内部APIを介して取得されます
  • 手動でネットワークリクエストを検査する必要があります
  • 複雑なページネーションロジックがJavaScriptに埋め込まれています
  • APIは頻繁にエンドポイントやパラメータを変更します

解決策

Strotはウェブサイトを分析し、内部API呼び出しを自動的に発見します。

Strotが実際に行うこと:

  1. ウェブページを分析して、必要なデータを理解します
  2. そのデータを取得するAJAXリクエストをキャプチャします
  3. すべてのパラメータを検出 - ページネーション(limit/offset、カーソル、ページ番号)と動的パラメータ(並べ替え、フィルタリング、検索)
  4. JSONレスポンスを解析する抽出コードを生成します
  5. 完全なパラメータ制御を備えたウェブサイト自身のAPI呼び出しを再現するSourceを返します

🐳 今すぐ試す - セットアップ不要!

フルStrot体験(Web UI + API)をすぐに入手:

Patchright ブラウザを使用

root@kitploit:~
docker run -d --name browser-server -p 5678:5678 synacktra/patchright-headless-server
STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX \
  docker compose -f https://raw.githubusercontent.com/vertexcover-io/strot/refs/heads/main/docker-compose.yml up

または、Steel ブラウザを使用

root@kitploit:~
STROT_BROWSER_WS_URL=wss://connect.steel.dev?apiKey=ste-XXXXXX STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX \
  docker compose -f https://raw.githubusercontent.com/vertexcover-io/strot/refs/heads/main/docker-compose.yml up

その後アクセス:

  • 🌐 Webダッシュボード: http://localhost:3000 - ウェブサイト分析のためのビジュアルインターフェース
  • 🔌 REST API: http://localhost:1337 - プログラムによるアクセス

🐍 Pythonライブラリ

インストール

root@kitploit:~
pip install strot

または uv を使用:

root@kitploit:~
uv pip install strot

例1: レビューAPIをリバースエンジニアリング

root@kitploit:~
import strot
import asyncio
from pydantic import BaseModel

class Review(BaseModel):
    title: str | None = None
    username: str | None = None
    rating: float | None = None
    comment: str | None = None
    date: str | None = None

async def get_reviews():
    # Strot discovers the internal API that loads reviews
    source = await strot.analyze(
        url="https://www.getcleanpeople.com/product/fresh-clean-laundry-detergent/",
        query="Customer reviews with ratings and comments",
        output_schema=Review,
        code_executor="e2b" # Defaults to "unsafe"
    )

    # Use the same API call the website uses, with full parameter control
    async for reviews in source.generate_data(limit=500, offset=100, sortBy="date desc"):
        for review in reviews:
            print(f"{review['rating']}⭐ by {review['username']}: {review['comment']}")

if __name__ == "__main__":
    asyncio.run(get_reviews())

例2: 商品一覧APIをキャプチャ

root@kitploit:~
import strot
import asyncio
from pydantic import BaseModel

class Product(BaseModel):
    name: str | None = None
    price: float | None = None
    rating: float | None = None
    availability: str | None = None
    description: str | None = None

async def get_products():
    # Strot finds the AJAX endpoint that loads product listings
    source = await strot.analyze(
        url="https://blinkit.com/cn/fresh-vegetables/cid/1487/1489",
        query="Listed products with names and prices.",
        output_schema=Product
    )

    # Set code executor of your choice into source
    source.set_code_executor("e2b")

    # Access all products with custom filtering and sorting
    async for products in source.generate_data(limit=100, offset=0, category="vegetables", sortBy="price"):
        for product in products:
            print(f"{product['name']}: ${product['price']} ({product['rating']}⭐)")

if __name__ == "__main__":
    asyncio.run(get_products())

🔌 MCPサーバー

StrotはMCP(Model Context Protocol)サーバーを提供し、ClaudeなどのMCPクライアントがウェブサイトを分析し、内部APIを直接発見できるようにします。

セットアップ

root@kitploit:~
git clone https://github.com/vertexcover-io/strot.git
cd strot && uv sync --group mcp

環境変数を設定:

root@kitploit:~
export STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX
export STROT_BROWSER_MODE_OR_WS_URL=headless  # or 'headed' or ws://browser-url

ホスト型ブラウザを使用したい場合は、次のようにします:

Docker内でヘッドレスサーバーを実行

root@kitploit:~
docker run -d --name browser-server -p 5678:5678 synacktra/patchright-headless-server
export STROT_BROWSER_MODE_OR_WS_URL=ws://localhost:5678/patchright

または、リモートブラウザサーバーに接続:

root@kitploit:~
export STROT_BROWSER_MODE_OR_WS_URL=wss://...

使用法

root@kitploit:~
$ uv run strotmcp
Usage: strotmcp COMMAND

╭─ Commands ─────────────────────────────────────────────╮
│ http             Start an http server.                 │
│ sse              Start an sse server.                  │
│ stdio            Start a stdio server.                 │
│ streamable-http  Start a streamable http server.       │
╰────────────────────────────────────────────────────────╯

Claude Codeの場合

  • stdio トランスポート

    root@kitploit:~
    claude mcp add strot-mcp "uv run strotmcp stdio" --transport stdio \
      --env STROT_ANTHROPIC_API_KEY=$STROT_ANTHROPIC_API_KEY STROT_BROWSER_MODE_OR_WS_URL=$STROT_BROWSER_MODE_OR_WS_URL
    
  • sse、http、streamable-http トランスポート

    別のターミナルで希望のトランスポートを使用してMCPサーバーを実行:

    root@kitploit:~
    uv run strotmcp sse --port 8888
    # uv run strotmcp http --host 0.0.0.0
    # uv run strotmcp streamable-http --host 127.0.0.1 --port 8777
    

    MCPサーバーをClaudeに追加:

    root@kitploit:~
    claude mcp add strot-mcp http://127.0.0.1:8888/sse --transport sse
    

🧪 評価

Strotの分析精度をさまざまなウェブサイトと個々のコンポーネントでテストおよび検証します。評価システムは5つの入力タイプをサポートしています:

  • 既存ジョブ(IDで完了したジョブを評価)、
  • 新規ジョブ(完全な分析タスクを作成して評価)、
  • リクエスト検出(URLとクエリの組み合わせをテスト)、
  • パラメータ検出(個々のリクエストパラメータ分析をテスト - ページネーションと動的パラメータの両方)、
  • 構造化抽出(特定のスキーマでレスポンス解析をテスト)。

実際の結果と期待される結果を比較し、ソースURL一致、ページネーションキー検出、動的パラメータ検出、エンティティ数精度などの指標を追跡します。すべての評価とその詳細な分析ステップはAirtableに保存されます。

セットアップ

root@kitploit:~
git clone https://github.com/vertexcover-io/strot.git
cd strot && uv sync --group eval

Airtableのセットアップ

  1. 新しいAirtableベースを作成:

    • Workspaces に移動
    • 希望のワークスペースの Create ボタンをクリック
    • Build an app on your own を選択
    • URLからベースIDをコピー(例:appXXXXXXXXXXXXXX)
  2. 個人アクセストークンを作成:

    • /create/tokens に移動
    • 以下のスコープを追加:
      • data.records:read
      • data.records:write
      • schema.bases:read
      • schema.bases:write
    • ステップ1で作成したベースへのアクセスを許可
    • Create token を押してトークンをコピー(例:patXXXXXXXXXXXXXX)
  3. 環境変数を設定:

    root@kitploit:~
    export STROT_AIRTABLE_BASE_ID=appXXXXXXXXXXXXXX
    export STROT_AIRTABLE_TOKEN=patXXXXXXXXXXXXXX
    
    # set the following if you wish to evaluate separate tasks
    export STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX
    

注:評価を実行すると、必要なテーブルが適切なスキーマで自動的に作成されます。

使用法

root@kitploit:~
$ uv run stroteval
Usage: stroteval [OPTIONS]

Evaluate multiple job-based or task-based inputs from a file or stdin.

╭─ Parameters ──────────────────────────────────────────────────────────────────╮
│ --file  -f  Path to the JSON/JSONL file. If not provided, reads from stdin.   │
╰───────────────────────────────────────────────────────────────────────────────╯

ジョブベースの入力を評価する場合は、APIサーバーが実行されていることを確認してください。

root@kitploit:~
echo '[
  {
    "job_id": "existing-job-uuid",
    "expected_source": "https://api.example.com/reviews",
    "expected_pagination_keys": ["cursor", "limit"],
    "expected_dynamic_keys": ["sortBy", "category"],
    "expected_entity_count": 243
  },
  {
    "site_url": "https://example.com/category/abc",
    "query": "Listed products with name and prices",
    "expected_source": "https://api.example.com/products",
    "expected_pagination_keys": ["limit", "offset"],
    "expected_dynamic_keys": ["category", "sortBy"],
    "expected_entity_count": 100
  },
  {
    "request": {
      "method": "GET",
      "url": "https://example.com/api/products",
      "type": "ajax",
      "queries": {"page": "2", "limit": "50", "sortBy": "price", "category": "electronics"}
    },
    "expected_pagination_keys": ["page", "limit"],
    "expected_dynamic_keys": ["sortBy", "category"]
  },
  {
    "response": {
      "value": "",
      "request": {
        "method": "GET",
        "url": "https://example.com/api/reviews",
        "type": "ajax"
      },
      "preprocessor": {"element_selector": ".reviews-container"}
    },
    "output_schema_file": "review_schema.json",
    "expected_entity_count": 10
  }
]' | uv run stroteval

🆘 ヘルプが必要ですか?

  • 💬 GitHub Discussions - 質問する
  • 🐛 バグを報告 - バグを見つけましたか?

📄 ライセンス

MITライセンス - 自由に使用してください!


Vertexcover Labs が ❤️ を込めて作成

ツールをダウンロード