Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
strot — Agent de scraping pour API Web | Kitploit
Outils/GitHubGitHub/vertexcover-io/strot
ReconnaissanceScripting et AutomatisationTests de Sécurité des APICollecte d'InformationsSécurité WebCrawler
GitHubvertexcover-io/strot

strot

Agent de scraping pour API Web

Voir le dépôt
18il y a 9 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Rétro-concevez l'API interne de n'importe quel site web avec le langage naturel

License Python


Le Problème

Les sites web modernes chargent les données via des appels AJAX cachés :

  • Les données ne sont pas dans le HTML - elles sont récupérées via des API internes
  • Vous devez inspecter manuellement les requêtes réseau
  • Logique de pagination complexe enfouie dans le JavaScript
  • Les API changent fréquemment de points de terminaison et de paramètres

La Solution

Strot analyse les sites web et découvre leurs appels API internes pour vous.

Ce que Strot fait réellement :

  1. Analyse la page web pour comprendre quelles données vous voulez
  2. Capture la requête AJAX qui récupère ces données
  3. Détecte tous les paramètres - pagination (limite/décalage, curseurs, numéros de page) ET paramètres dynamiques (tri, filtrage, recherche)
  4. Génère du code d'extraction pour analyser la réponse JSON
  5. Renvoie une Source qui reproduit les appels API du site web avec un contrôle complet des paramètres

🐳 Essayez-le maintenant - Aucune configuration requise !

Obtenez l'expérience complète de Strot (interface web + API) instantanément :

En utilisant le navigateur 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

Ou, en utilisant le navigateur 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

Ensuite, visitez :

  • 🌐 Tableau de bord web : http://localhost:3000 - Interface visuelle pour analyser les sites web
  • 🔌 API REST : http://localhost:1337 - Accès programmatique

🐍 Bibliothèque Python

Installation

root@kitploit:~
pip install strot

Ou avec uv :

root@kitploit:~
uv pip install strot

Exemple 1 : Rétro-ingénierie de l'API des avis

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())

Exemple 2 : Capture de l'API de liste de produits

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())

🔌 Serveur MCP

Strot fournit un serveur MCP (Model Context Protocol) qui permet aux clients MCP comme Claude d'analyser directement les sites web et de découvrir leurs API internes.

Configuration

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

Définissez les variables d'environnement :

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

Si vous souhaitez utiliser un navigateur hébergé, vous pouvez procéder comme suit :

Exécutez un serveur headless dans 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

Ou, connectez-vous à un serveur de navigateur distant :

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

Utilisation

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.       │
╰────────────────────────────────────────────────────────╯

Avec Claude Code

  • Transport 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
    
  • Transports sse, http, streamable-http

    Exécutez le serveur MCP avec le transport souhaité dans un terminal séparé :

    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
    

    Ajoutez le serveur MCP à Claude :

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

🧪 Évaluation

Testez et validez la précision de l'analyse de Strot sur différents sites web et composants individuels. Le système d'évaluation prend en charge cinq types d'entrée :

  • tâches existantes (évaluer des tâches terminées par leur ID),
  • nouvelles tâches (créer et évaluer des tâches d'analyse complètes),
  • détection de requêtes (tester des combinaisons d'URL et de requêtes),
  • détection de paramètres (tester l'analyse des paramètres d'une requête individuelle - paramètres de pagination et dynamiques),
  • extraction structurée (tester l'analyse des réponses avec des schémas spécifiques).

Il compare les résultats réels aux résultats attendus, en suivant des métriques telles que la correspondance des URL sources, la détection des clés de pagination, la détection des paramètres dynamiques et la précision du nombre d'entités. Toutes les évaluations et leurs étapes d'analyse détaillées sont stockées dans Airtable.

Configuration

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

Configurer Airtable

  1. Créez une nouvelle base Airtable :

    • Allez dans Workspaces
    • Cliquez sur le bouton Create dans l'espace de travail souhaité
    • Sélectionnez Build an app on your own
    • Copiez l'ID de la base depuis l'URL (ex. appXXXXXXXXXXXXXX)
  2. Créez un jeton d'accès personnel :

    • Allez dans /create/tokens
    • Ajoutez les portées suivantes :
      • data.records:read
      • data.records:write
      • schema.bases:read
      • schema.bases:write
    • Donnez l'accès à la base créée à l'étape 1
    • Appuyez sur Create token et copiez le jeton (ex. patXXXXXXXXXXXXXX)
  3. Définissez les variables d'environnement :

Remarque : Les tables requises sont automatiquement créées avec le schéma approprié lorsque vous exécutez des évaluations.

Utilisation

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.   │
╰───────────────────────────────────────────────────────────────────────────────╯

Assurez-vous que le serveur API est en cours d'exécution si vous évaluez des entrées basées sur des tâches.

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

🆘 Besoin d'aide ?

  • 💬 Discussions GitHub - Posez vos questions
  • 🐛 Signaler des problèmes - Vous avez trouvé un bug ?

📄 Licence

Licence MIT - Utilisez-la comme vous le souhaitez !


Fait avec ❤️ par Vertexcover Labs

Télécharger l’outil
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