Ir para o conteúdo
CatSuite

Idioma

Escolha se o site segue o navegador ou se deve forçar português do Brasil ou inglês.

Baixar grátis

Fluxos visuais

Fluxos visuais com .catflow

Monte análises em grafo com etapas, parsers, condições e reuniões; aprovações por revisão, artefatos rastreáveis, checkpoints e limites.

4 min de leitura

Fluxos visuais transformam rotinas de análise em grafos reproduzíveis. Cada bloco recebe artefatos tipados, produz novos artefatos e registra duração, entradas, saídas, hashes e versões.

Começar #

  1. Abra Configurações → Extensões → Fluxos.
  2. Instale os modelos do laboratório e abra um fluxo.
  3. Revise a aprovação e execute a fixture.
  4. Toque na saída de uma etapa e depois na entrada da seguinte; apenas tipos compatíveis são aceitos.

A condição oferece rotas true e false, e a reunião espera as entradas selecionadas. Arraste, amplie, organize ou duplique blocos. O painel de propriedades fica na lateral em telas maiores e embaixo no celular.

Tipos de bloco #

BlocoFunção
captureentrada de tráfego capturado
filterseleciona artefatos
conditiondivide o fluxo em true e false
joinreúne ramos
parserinterpreta conteúdo por tipo MIME
requestenvia requests aprovadas
crawlerpercorre páginas com GET e HEAD
storagepersiste resultados
reportconsolida relatório
connectorexecuta uma capacidade do CatBridge
extensionexecuta uma etapa registrada por extensão

Artefatos #

TipoConteúdo típico
httpmensagem HTTP completa
endpointURL observada, com origem
jwtclaims decodificadas, sem verificação de assinatura
secretcandidato a segredo, mascarado
analysisanálise estruturada
findingachado com severidade e confiança
recordregistro genérico
javascriptfonte JavaScript estática
openapiespecificação OpenAPI

O host gera identidade, SHA-256, origem, versões, fontes e proteção de cada artefato. Copiar uma entrada cria uma nova evidência ligada à anterior, e metadados fornecidos pelo script não substituem os do host.

Registrar etapas e parsers #

JavaScript
cat.pipeline.registerStep({
  id: 'lab.inspecionar',
  title: {'pt-BR': 'Inspecionar', en: 'Inspect'},
  inputs: ['http'],
  outputs: ['http', 'analysis']
}, async ctx => {
  for (const entrada of ctx.inputs) {
    if (ctx.signal.aborted) return;
    ctx.emit('http', entrada.data);
    ctx.emit('analysis', {url: entrada.data.url, confidence: 'observed'});
  }
  ctx.progress(1);
});

cat.parsers.register({
  id: 'lab.json',
  title: {'pt-BR': 'Ler JSON', en: 'Parse JSON'},
  inputs: ['http'],
  outputs: ['record'],
  mimeTypes: ['application/json']
}, ctx => {
  for (const entrada of ctx.inputs) {
    if (!entrada.data.body.complete) throw new Error('E_BODY');
    ctx.emit('record', JSON.parse(cat.bytes.toText(entrada.data.body.bytes)));
  }
});

Declare pipeline.step ou parsers no manifesto e, para receber HTTP, também traffic.read. Apenas tipos declarados podem ser emitidos.

Contexto da etapa #

CampoDescrição
ctx.inputsartefatos de entrada
ctx.configconfiguração própria da etapa
ctx.runId, ctx.nodeIdidentidade da execução e do bloco
ctx.revisionIdrevisão aprovada em execução
ctx.protectionPUBLIC, PROTECTED ou SECRET
ctx.restoredestado do último checkpoint
ctx.checkpoint(estado)grava até 32 KiB de JSON
ctx.emit(tipo, dados)emite um artefato
ctx.progress(valor)progresso de 0 a 1
ctx.signal.abortedindica cancelamento

Checkpoints e retomada #

JavaScript
cat.pipeline.registerStep({
  id: 'lab.retomar',
  title: {'pt-BR': 'Retomar', en: 'Resume'},
  inputs: ['record'],
  outputs: ['record']
}, async ctx => {
  let feitos = ctx.restored?.feitos || 0;
  for (; feitos < ctx.inputs.length; feitos++) {
    if (ctx.signal.aborted) return;
    ctx.emit('record', ctx.inputs[feitos].data);
    await ctx.checkpoint({feitos: feitos + 1});
  }
});

Resultados, operações e checkpoints são gravados de forma incremental. A retomada reutiliza etapas concluídas. Uma operação de resultado desconhecido nunca é reenviada automaticamente; repeti-la exige autorização explícita depois de revisar possíveis efeitos duplicados. Checkpoints não tornam transações externas idempotentes por si só.

Aprovação e revisões #

O Flow ID é permanente. A revisão é o SHA-256 da definição executável, das dependências e da política efetiva; nome e posição visual não entram nesse hash. Salvar ou exportar sem mudanças executáveis preserva a ativação. Alterar código, configurações, escopo, métodos, proteção, capacidades ou limites exige nova aprovação, e revisões anteriores ficam arquivadas.

Envios precisam de network=true, execução com envios, destino permitido e capacidade própria. O tráfego gerado tem source=workflow, flowOrigin e pluginOrigin, e não reinicia o fluxo.

Falhas e histórico #

  • Uma falha bloqueia seus dependentes; ramificações independentes podem terminar.
  • Um ramo não escolhido fica ignorado.
  • O histórico mostra duração, progresso, entradas, saídas, erros, hashes e versões.
  • A comparação identifica resultados adicionados ou removidos e mudanças de versões.
  • Reproduzir cria uma execução nova, inicialmente sem rede.

Limites #

RecursoPadrãoTeto
Fluxos simultâneos24
Blocos por fluxo32128
Conexões64256
Fila128512
Artefatos por execução1.0005.000

Análises usam dois ambientes de 32 MiB, separados dos quatro ambientes do proxy. Uma execução tem até 15 minutos e tarefas de conector até 10 minutos. Saturação é registrada e não suspende o encaminhamento do proxy.

Modelos incluídos #

ModeloEtapas
Auditoria de identidadeCaptura → JWT → Segredos → Autorização → Relatório
Mapa de APICrawler → JavaScript → Endpoints → OpenAPI → Relatório
RamificaçõesCondição sobre Authorization, ramos de JWT e segredos, reunião e relatório
Auditoria de APICaptura → httpx → Katana → reunião → comparação OpenAPI → Schemathesis → relatório