Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
strot — Agente de Scraping de API para APIs Web | Kitploit
Ferramentas/GitHubGitHub/vertexcover-io/strot
ReconhecimentoScripting e AutomaçãoTestes de Segurança de APIsColeta de InformaçõesSegurança WebRastreador
GitHubvertexcover-io/strot

strot

Agente de Scraping de API para APIs Web

Ver Repositório
186há 9 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

Faça engenharia reversa da API interna de qualquer site usando linguagem natural

License Python


O Problema

Sites modernos carregam dados por meio de chamadas AJAX ocultas:

  • Os dados não estão no HTML - são buscados via APIs internas
  • Você precisa inspecionar requisições de rede manualmente
  • Lógica de paginação complexa escondida em JavaScript
  • APIs mudam endpoints e parâmetros frequentemente

A Solução

Strot analisa sites e descobre suas chamadas de API internas para você.

O que o Strot realmente faz:

  1. Analisa a página web para entender quais dados você quer
  2. Captura a requisição AJAX que busca esses dados
  3. Detecta todos os parâmetros - paginação (limit/offset, cursores, números de página) E parâmetros dinâmicos (ordenação, filtragem, pesquisa)
  4. Gera código de extração para interpretar a resposta JSON
  5. Retorna uma Source que replica as chamadas de API do próprio site com controle total de parâmetros

🐳 Experimente Agora - Sem Configuração Necessária!

Obtenha a experiência completa do Strot (Web UI + API) instantaneamente:

Usando navegador 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, usando o navegador 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

Em seguida, acesse:

  • 🌐 Painel Web: http://localhost:3000 - Interface visual para analisar sites
  • 🔌 API REST: http://localhost:1337 - Acesso programático

🐍 Biblioteca Python

Instalação

root@kitploit:~
pip install strot

Ou usando uv:

root@kitploit:~
uv pip install strot

Exemplo 1: Faça Engenharia Reversa da API de Avaliações

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

Exemplo 2: Capture a API de Listagem de Produtos

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

🔌 Servidor MCP

Strot fornece um servidor MCP (Model Context Protocol) que permite que clientes MCP como Claude analisem sites e descubram suas APIs internas diretamente.

Configuração

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

Defina as variáveis de ambiente:

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

Se você quiser usar um navegador hospedado, você pode fazer o seguinte:

Execute um servidor headless dentro do 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, conecte-se a um servidor de navegador remoto:

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

Uso

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

╭─ Comandos ─────────────────────────────────────────────╮
│ http             Inicia um servidor http.               │
│ sse              Inicia um servidor sse.                │
│ stdio            Inicia um servidor stdio.              │
│ streamable-http  Inicia um servidor http streamable.   │
╰────────────────────────────────────────────────────────╯

Com Claude Code

  • transporte 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
    
  • transportes sse, http, streamable-http

    Execute o servidor MCP com o transporte desejado em um terminal separado:

    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
    

    Adicione o servidor MCP ao Claude:

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

🧪 Avaliação

Teste e valide a precisão da análise do Strot em diferentes sites e componentes individuais. O sistema de avaliação suporta cinco tipos de entrada:

  • trabalhos existentes (avaliar trabalhos concluídos por ID)
  • novos trabalhos (criar e avaliar tarefas de análise completas)
  • detecção de requisições (testar combinações de URL e consulta)
  • detecção de parâmetros (testar análise de parâmetros individuais de requisição - parâmetros de paginação e dinâmicos)
  • extração estruturada (testar interpretação de resposta com esquemas específicos)

Ela compara resultados reais com resultados esperados, rastreando métricas como correspondência de URL de origem, detecção de chave de paginação, detecção de parâmetros dinâmicos e precisão na contagem de entidades. Todas as avaliações e suas etapas detalhadas de análise são armazenadas no Airtable.

Configuração

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

Configurar Airtable

  1. Crie uma nova base no Airtable:

    • Vá para Workspaces
    • Clique no botão Create no workspace desejado
    • Selecione Build an app on your own
    • Copie o Base ID da URL (ex.: appXXXXXXXXXXXXXX)
  2. Crie um Personal Access Token:

    • Vá para /create/tokens
    • Adicione os seguintes escopos:
      • data.records:read
      • data.records:write
      • schema.bases:read
      • schema.bases:write
    • Dê acesso à base que você criou no passo 1
    • Pressione Create token e copie o token (ex.: patXXXXXXXXXXXXXX)
  3. Defina as variáveis de ambiente:

Nota: As tabelas necessárias são criadas automaticamente com o esquema adequado quando você executa as avaliações.

Uso

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

Avalia múltiplas entradas baseadas em trabalhos ou tarefas a partir de um arquivo ou stdin.

╭─ Parameters ──────────────────────────────────────────────────────────────────╮
│ --file  -f  Caminho para o arquivo JSON/JSONL. Se não fornecido, lê da stdin.│
╰───────────────────────────────────────────────────────────────────────────────╯

Certifique-se de que o servidor da API está em execução se você estiver avaliando entradas baseadas em trabalhos.

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

🆘 Precisa de Ajuda?

  • 💬 GitHub Discussions - Faça perguntas
  • 🐛 Report Issues - Encontrou um bug?

📄 Licença

Licença MIT - Use como quiser!


Feito com ❤️ por Vertexcover Labs

Baixar ferramenta
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