Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

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

strot

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

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

人気

すべて見る →

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

すべてのツールを探索

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

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

自然言語で任意のウェブサイトの内部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 ブラウザを使用

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 ブラウザを使用

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ライブラリ

インストール

pip install strot

または uv を使用:

uv pip install strot

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

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をキャプチャ

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を直接発見できるようにします。

セットアップ

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

環境変数を設定:

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

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

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

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

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

export STROT_BROWSER_MODE_OR_WS_URL=wss://...

使用法

$ 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 トランスポート

    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サーバーを実行:

    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に追加:

    claude mcp add strot-mcp http://127.0.0.1:8888/sse --transport sse
    

🧪 評価

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

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

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

セットアップ

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. 環境変数を設定:

    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
    

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

使用法

$ 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サーバーが実行されていることを確認してください。

ツールをダウンロード