Extensões são pacotes .catplug com código JavaScript executado pelo QuickJS 2026-06-04, incorporado por JNI em um serviço Android isolado. Cada extensão tem seu próprio ambiente, seus dados em SQLite e suas permissões.
O que uma extensão pode fazer #
- Observar requests e responses com
cat.events.on. - Alterar mensagens antes do encaminhamento com
cat.proxy.onRequestecat.proxy.onResponse. - Enviar requests para destinos declarados com
cat.http.send. - Consultar APIs externas com credenciais protegidas com
cat.external.call. - Registrar comandos, menus de mensagem e abas nativas.
- Salvar dados e registrar achados com evidência.
- Participar de fluxos visuais como etapas e parsers.
O que uma extensão não pode fazer #
Não há Node.js, DOM, fetch, acesso geral a arquivos ou execução de processos. Use cat.http.parseUrl para URLs e cat.bytes para converter UTF-8. TLS usa a validação de certificados do Android e o SDK não pode desativá-la.
Pontos de integração #
Os hooks cobrem o proxy, o Proxy de Rede, o Repetir, o Intruso e o Descobridor. Toda mensagem informa sua origem em source:
source | Origem |
|---|---|
proxy | Tráfego do navegador interceptado |
network_proxy | Sessão do Proxy de Rede |
repetir | Envios do Repetir |
intruso | Envios do Intruso |
descobridor | Envios do Descobridor |
extension | Requests enviadas por extensões |
laboratory | Tráfego simulado do laboratório |
Requests de uma extensão não voltam aos próprios handlers; outras extensões podem processá-las conforme o escopo. Quando extensões processam o tráfego do proxy, as regras de substituição aplicáveis são executadas antes dos handlers, e a edição manual prevalece.
Ciclo de vida #
- Criar ou importar — em Configurações → Extensões, use o botão Criar (modelo básico ou exemplo Aurora), importe um
.catplugou crie o pacote na IDE web ou no CatSuite Studio para VS Code. - Validar — pacote, manifesto e código são validados antes de qualquer troca.
- Aprovar — instalações começam desativadas. Ao ativar, você revisa capacidades e destinos.
- Executar — hooks, comandos, menus e abas entram em ação.
- Atualizar — permissões ou destinos ampliados exigem nova aprovação.
Limites da API v1 #
| Recurso | Limite |
|---|---|
| Extensões ativas | 4 |
| Memória por ambiente | 32 MiB |
| Handler de alteração | 100 ms, síncrono |
| Chamadas HTTP simultâneas | 2 por extensão |
| Prazo HTTP total | 120 segundos |
| Resposta HTTP | até 8 MiB, com preview para o JavaScript |
| Preview editável | até 32 KiB |
| Script de entrada | até 128 KiB |
| Pacote | 10 MiB comprimido, 40 MiB expandido e 500 arquivos |
| Dados por extensão | 10 MiB, com 128 KiB por valor |
Corpos maiores, incompletos, comprimidos ou contínuos ficam somente para leitura. SSE e WebSocket preservam seu transporte, e túneis HTTPS sem descriptografia não fornecem conteúdo HTTP.
Primeira extensão #
cat.commands.register('lab.ola', {'pt-BR': 'Dizer olá', en: 'Say hello'}, () => {
cat.log({'pt-BR': 'Olá do laboratório.', en: 'Hello from the lab.'});
return {ok: true};
});Declare a permissão commands no manifesto e rode o comando no simulador da IDE de extensões.