Leapfrog

MCP de navegador multissessão para agentes de IA — modo furtivo, pool de sessões, humanização, 10x menos tokens que o Playwright

Documentação

Leapfrog

Leapfrog

Navegador multi-sessão MCP para agentes de IA.
36 ferramentas. 15 sessões paralelas. Stealth. HUD. Auto-aprimoramento. Até 10x menos tokens.

npm i leapfrog-mcp  |  Funciona com Claude Code, Cursor, Windsurf


O Problema

O Playwright MCP envia ~14.000 tokens para uma página com muito conteúdo como o Hacker News. A maior parte disso é ruído. Sua janela de contexto enche. Seu agente fica confuso. Você paga por isso.

O Leapfrog envia ~1.400 tokens. Mesma página. Mesma informação. Até 10x menos ruído.

┌─────────────────────────────────────────────────────┐
│  Playwright MCP                                     │
│  ████████████████████████████████████████  ~14,000   │
│                                                     │
│  Leapfrog                                           │
│  █████                                    ~1,400    │
└─────────────────────────────────────────────────────┘
          tokens per page (Hacker News, real test)

A economia varia de 2 a 10x dependendo da complexidade da página. Páginas com muito conteúdo apresentam os maiores ganhos. Formulários densos apresentam os menores. A mediana em sites reais é de ~4-5x.

Início Rápido

npx leapfrog-mcp --doctor          # verify everything works
npx leapfrog-mcp --stealth-audit   # test all 19 stealth patches
npx leapfrog-mcp --config          # print MCP config to paste

Adicione ao ~/.mcp.json (Claude Code) ou à configuração MCP do seu editor:

{
  "leapfrog": {
    "command": "npx",
    "args": ["-y", "leapfrog-mcp"],
    "env": {
      "LEAP_MAX_SESSIONS": "15",
      "LEAP_TILE": "true",
      "LEAP_HUD": "true",
      "LEAP_AUTO_CONSENT": "true"
    }
  }
}

O Leapfrog usa playwright-core (15MB) em vez de playwright (1.6GB) e não inclui um navegador. Ou:

  • Defina LEAP_CHANNEL=chrome para usar seu Chrome/Chromium instalado (recomendado)
  • Ou execute npx playwright-core install chromium para instalar o binário Chromium incluído
  • Ou defina LEAP_CDP_ENDPOINT para conectar a uma instância do Chrome já em execução

Matriz de Recursos

LeapfrogPlaywright MCPagent-browser
Tokens por página~1.200-2.500~3.800-15.000~300
Sessões paralelas1511
Isolamento de sessãoSimNãoNão
Multi-abas / popupsSimNãoNão
Interceptação de redeSimNãoNão
Captura de consoleSimSimNão
Stealth / anti-botSimNãoNão
Espera inteligente (5 tipos)SimBásicoNão
Recuperação de falhasSimNãoNão
Ações em lote (100/chamada)SimNãoNão
Injeção de script de inicializaçãoSimSimNão
Arrastar / enviar / redimensionarSimSimNão
Proxy por sessãoSimNãoNão
Humanização (opt-in)SimNãoNão
Reutilização de perfil de autenticaçãoSimNãoNão
Persistência de cookiesSimNãoNão
Classificação de páginas (18)SimNãoNão
Memória de sessãoSimNãoNão
Inteligência de APISimNãoNão
Espera adaptativa + nova tentativa automáticaSimNãoNão
Resolução automática de CAPTCHASimNãoNão
Auto-aprimoramento (9 dimensões)SimNãoNão
Gravar / reproduzirSimNãoNão
Extração de paginaçãoSimNãoNão
Snapshots incrementais (diff)SimNãoNão
CLI de autoteste stealthSimNãoNão
Proteção SSRFSimNãoNão

Stealth

O Leapfrog inclui 19 correções anti-detecção habilitadas por padrão (LEAP_STEALTH=true). Quatro modos:

  • true (padrão) — todas as 19 correções ativas
  • passive — remove apenas sinais de automação (webdriver, HeadlessChrome). NÃO falsifica identidade (WebGL, fontes, áudio). Melhor para sites onde a confiança importa mais que a evasão.
  • auto — bandit EXP3 por domínio seleciona a configuração stealth ideal com base no que funcionou antes
  • false — sem correções stealth

Elas cobrem os vetores que serviços de fingerprinting como CreepJS e fingerprint-pro realmente verificam:

  • Marcas de Client Hints (remove HeadlessChrome)
  • navigator.webdriver forçado para undefined
  • Fornecedor/renderizador WebGL (substitui SwiftShader por strings reais de GPU)
  • RTT de conexão (diferente de zero)
  • Tempo de dispensa de alertas (atraso em velocidade humana)
  • Deslocamento de altura externa/interna da janela
  • Preenchimento do array de tipos MIME
  • Inferência de plataforma a partir do user agent
  • Emulação de chrome.app
  • Proteção de contentWindow em iframes
  • Falsificação de codecs de mídia (canPlayType)
  • Substituição de document.hasFocus()
  • Remoção de comentários de URL de origem
  • Coexistência de UA personalizado + stealth (user agents personalizados não desabilitam mais o contexto stealth)
  • Detecção de Runtime.enable via CDP (filtro Error.prepareStackTrace)
  • Falsificação da API de Permissões (mais de 20 tipos de permissão)
  • Ruído de fingerprint do AudioContext (getChannelData/getFloatFrequencyData)
  • Prevenção de vazamento de IP via WebRTC (filtragem de candidatos ICE)
  • Falsificação de fingerprint por enumeração de fontes

Controle stealth por sessão: passe stealth: false em session_create para desabilitar em uma sessão específica.

Humanização (Experimental)

Defina LEAP_HUMANIZE=true para habilitar interação de navegador semelhante à humana. Isso é opt-in e adiciona latência em troca de um comportamento mais realista. Seis módulos:

  • Mouse — caminhos de curva Bezier com tempo baseado na Lei de Fitts e micro-tremor
  • Digitação — atrasos entre teclas com distribuição log-normal (mediana de 200ms), tempo de pressionamento, velocidade consciente de bigramas, digitação com sobreposição
  • Rolagem — simulação inercial com aceleração e desaceleração de momentum (física de touchpad/roda do mouse)
  • Pausa — atrasos de "pensamento" entre ações que simulam lacunas cognitivas
  • Fingerprint — geração coerente de fingerprint do navegador (plataforma, memória do dispositivo, GPU, fuso horário)
  • Utils — primitivas matemáticas compartilhadas (gaussiana Box-Muller, distribuições)

Classificação de Páginas

Toda chamada de navigate e snapshot classifica automaticamente o tipo de página usando pontuação ponderada de sinais (sem necessidade de LLM). 18 tipos:

login · search-results · product · product-list · checkout · article · dashboard · form · error · challenge · landing · documentation · profile · media · feed · qa · ecommerce · unknown

A classificação direciona uma extração de snapshot mais inteligente — páginas de login exibem campos de formulário, artigos exibem conteúdo, painéis exibem elementos interativos.

Inteligência do Harness

O harness rastreia cada ação em uma sessão e classifica os resultados:

  • Classificação de resultado de açãoSUCCESS, SILENT_CLICK, NAVIGATION, WRONG_ELEMENT, BLOCKED, ERROR, PENDING
  • Detecção de redirecionamento de bot — detecta quando um site redireciona para uma página de desafio ou bloqueio após uma ação
  • Detecção de loop — avisa quando o agente está preso clicando no mesmo elemento, alternando entre URLs ou repetindo ações
  • Memória de sessão — a ferramenta session_memory recorda ações após a compressão da janela de contexto

Persistência de Cookies

Perfis de navegador persistentes agora usam context.cookies() + addCookies() em vez de storageState(), que retorna vazio em contextos persistentes. O estado de autenticação sobrevive entre sessões.

Espera Adaptativa + Escalonamento Stealth

O Navigate tenta novamente automaticamente com estratégias alternativas quando as páginas falham ao carregar:

  1. Tente load (mais rápido) — se vazio, tente novamente com networkidle (limite de 10s)
  2. Se networkidle expirar (Amazon, sites com muitos anúncios), use domcontentloaded como alternativa
  3. Se bloqueado/desafiado, escale o stealth: atrasos aleatórios → aguarde desafio JS → alterne a sessão com novo fingerprint
  4. Sessões de perfil (autenticadas) nunca têm sua sessão destruída — limitadas ao Nível 2

Opt-out com autoRetry: false em navigate. Controle o escalonamento máximo com maxRetryLevel (0-5, padrão 3).

Gravar / Reproduzir

Exporte o histórico de ações de uma sessão como uma gravação reproduzível e reproduza-a em novas sessões:

  • session_export — cria JSON parametrizado ou script Playwright a partir do histórico da sessão. Referências @eN resolvidas para seletores CSS estáveis. Detecta automaticamente e-mails, senhas e URLs como {{placeholders}}.
  • session_replay — reproduz uma gravação com substituições de parâmetros. Suporta onError: 'stop' ou 'skip'.

Transforme fluxos de trabalho únicos do agente em automações reutilizáveis.

Extração de Paginação

Extraia dados de várias páginas em uma única chamada de ferramenta:

  • Clique em próximo — detecta automaticamente botões "Próximo", links de paginação, botões "Carregar mais"
  • Rolagem infinita — rola e aguarda novo conteúdo via comparação de hash do DOM
  • Padrão de URL — incrementa ?page={page} ou padrões personalizados

Substitui 3-4 chamadas de ferramenta por página. Limite: 50 páginas, 100K caracteres no total. Para em: sem botão próximo, página vazia, conteúdo duplicado ou detecção de bot.

Snapshots Incrementais

A ferramenta diff retorna apenas o que mudou desde o último snapshot — adições, remoções, alterações. Economia massiva de tokens para fluxos de monitoramento e polling.

Sobreposições HUD (LEAP_HUD=true)

Ao executar com interface gráfica, o Leapfrog sobrepõe feedback visual em cada sessão:

  • Ripple de clique — círculo verde expansivo nas coordenadas do clique (apenas ações do agente)
  • Zoom no alvo — o navegador amplia para 1.15x no elemento clicado brevemente para que agentes (e humanos) possam acompanhar visualmente o que está acontecendo em janelas lado a lado
  • Rolar até o alvo — scrollIntoView antes dos cliques para que você veja o que o agente está prestes a clicar

Mínimo por design. Sem bordas, sem barras de status, sem sobreposição de cursor — apenas o feedback que importa.

Organização em Múltiplos Terminais (LEAP_TILE=true)

Múltiplas instâncias do Leapfrog compartilham a tela via coordenação baseada em arquivos. Cada instância rastreia suas próprias janelas e um TilesCoordinator atribui slots globais de grade — sem sobreposição, sem organização manual. Defina LEAP_TILE=true (ou LEAP_TILE=master para a instância primária). O espaçamento entre blocos é configurável com LEAP_TILE_PADDING (padrão 8px).

Intervenção Humana

O Leapfrog detecta automaticamente situações que precisam de um humano — CAPTCHAs, formulários de login, redirecionamentos OAuth, desafios Cloudflare — e tenta resolver sozinho antes de pausar.

  • Auto-resolve primeiro: clica em caixas de seleção do reCAPTCHA, botões de verificação do Cloudflare, botões genéricos de verificar/continuar, depois uma segunda tentativa — tudo antes de pedir ajuda
  • Solucionadores externos: defina LEAP_CAPTCHA_PROVIDER + LEAP_CAPTCHA_API_KEY para integração com CapSolver, 2Captcha ou NopeCHA
  • Aprende o que funciona: lembra qual método de resolução funcionou por domínio e tenta o método conhecido primeiro em novas visitas
  • Detecta reCAPTCHA, hCaptcha, Turnstile, formulários de login, redirecionamentos OAuth, desafios Cloudflare
  • O título da aba muda para "NEEDS HUMAN" quando intervenção é necessária
  • Ferramenta wait_for_human — o agente chama quando está travado, bloqueia até você resolver ou navegar além

Dispensa Automática de Consentimento de Cookies (LEAP_AUTO_CONSENT=true)

Dispensa automaticamente banners de consentimento de cookies em 10 frameworks (OneTrust, CookieBot, TrustArc, Quantcast, Didomi, Cookielaw, Osano, Usercentrics, + genérico) além de fallback por correspondência de texto. Cache de seletores por domínio para reprodução instantânea em novas visitas.

Tracing (LEAP_TRACE=true)

Tracing Playwright por sessão com screenshots + snapshots de DOM. Exporte arquivos ZIP visualizáveis em trace.playwright.dev via ferramenta session_export_trace. Salva automaticamente na destruição da sessão.

Auto-Aprimoramento

O Leapfrog aprende com cada visita. O conhecimento por domínio persiste em ~/.leapfrog/domains/{domain}.json — 9 dimensões, todas automáticas:

#DimensãoO que faz
1Estratégias de esperaAprende o método de espera ideal por domínio (networkidle vs domcontentloaded vs load) + média móvel de tempo
2Níveis stealthEscala automaticamente 0→3 quando bloqueios são detectados (2+ bloqueios em 1 hora). Começa no nível aprendido em novas visitas
3Seletores de consentimentoLembra seletores de dispensa de banners de cookies, clica automaticamente em novas visitas
4Resolução de desafiosRegistra qual método de CAPTCHA funcionou (caixa reCAPTCHA, verificação Cloudflare, etc.), tenta o método conhecido primeiro
5Supressão de elementos estáveisIdentifica elementos de navegação/rodapé/barra lateral vistos em 3+ visitas, suprime de snapshots (economia de 30-40% de tokens em domínios maduros)
6Correção de seletoresLembra fingerprints de elementos → seletores, corrige referências quebradas entre visitas
7Cache de endpoints de APIEndpoints de API descobertos persistem entre sessões
8Mapas de calor de interaçãoRastreia quais elementos os agentes realmente usam, suprime elementos não tocados (em breve)
9Seleção de estratégiaBandit adversarial (EXP3) para otimização de configuração stealth. Use LEAP_STEALTH=auto para habilitar.

Evicção LRU em 500 domínios. Inspecione com a ferramenta domain_knowledge.

Endurecimento SSRF

A validação de URL bloqueia IPs codificados em hexadecimal (0x7f000001), notação octal (0177.0.0.1), faixas CGNAT (100.64.0.0/10) e cadeias de redirecionamento que resolvem para endereços internos. Localhost e 127.0.0.0/8 são permitidos por padrão para fluxos de desenvolvimento local — defina LEAP_BLOCK_LOCALHOST=true para bloqueá-los.

O Ecossistema

O Leapfrog usa metáforas de lago para tornar as coisas memoráveis. Seu agente é o sapo.

ConceitoTermo LeapfrogO que significa
SessõesLagosContextos de navegador isolados — cookies, armazenamento, estado
AbasLíriosOnde o sapo pousa dentro de um lago
NavegarSaltarIr para uma URL, obter um snapshot compacto de volta
SnapshotsSuperfícieO que você vê na superfície — refs @eN interativos
Tráfego de redeOndulaçãoRequisições HTTP fluindo sob a superfície
Erros de consoleCroakAlgo deu errado no navegador
Modo furtivoCamuflagemPatches de evasão anti-bot

Todas as 36 Ferramentas

Gerenciamento de Lagos (11)

FerramentaO que faz
session_createAbrir um novo lago — cookies isolados, estado, viewport, locale, fuso horário, furtividade, proxy
session_destroyDrenar um lago e liberar o slot
session_listVer todos os lagos ativos com URLs e tempos ociosos
session_save_profileSalvar estado de autenticação em disco para lagos futuros
session_list_profilesListar perfis de autenticação salvos
pool_statusEstatísticas do pool, memória, uptime
session_healthO lago está saudável? Navegador conectado, página responsiva?
profile_listListar perfis de navegador persistentes salvos
profile_deleteExcluir um perfil de navegador persistente salvo e seus dados
profile_import_from_chromeImportar cookies e estado de um perfil Chrome instalado
profile_warmPré-aquecer um perfil carregando URLs-chave para estabelecer cookies/estado

Navegação e Snapshots (12)

FerramentaO que faz
navigateSaltar para uma URL, retornar um snapshot @eN compacto. Espera adaptativa + escalonamento furtivo integrados.
snapshotReler a superfície (escopo com seletor CSS)
diffSnapshot incremental — retorna apenas o que mudou desde o último snapshot
actClicar, preencher, digitar, marcar, selecionar, pressionar, rolar, passar o mouse, mover o mouse, arrastar, enviar arquivo, redimensionar, voltar, avançar
batch_actionsAté 100 ações sequenciais em uma única chamada MCP — elimina sobrecarga de ida e volta
paginateExtrair dados em várias páginas em uma chamada (clique-próximo, rolagem, padrão de URL)
add_init_scriptInjetar JS que executa antes de cada carregamento de página, persiste entre navegações
wait_forAguardar por elemento / texto / rede ociosa / navegação / expressão JS
screenshotCapturar PNG (página inteira ou elemento)
extractExtrair texto, HTML, título, URL ou avaliar JS
session_memoryRelembrar ações executadas nesta sessão — recupera contexto após compressão
session_exportExportar histórico da sessão como gravação JSON reproduzível ou script Playwright

Gerenciamento de Abas (3)

FerramentaO que faz
tabs_listListar todos os lírios em um lago
tab_switchSaltar para outro lírio (-1 para o popup mais recente)
tab_closeFechar um lírio (não é possível fechar o último)

Inteligência do Agente (3)

FerramentaO que faz
wait_for_humanPausar para intervenção humana — bloqueia até o usuário clicar em Concluído na sobreposição @..@
domain_knowledgeInspecionar o que o Leapfrog aprendeu sobre um domínio (estratégias de espera, níveis furtivos, endpoints)
session_export_traceExportar um arquivo ZIP de trace Playwright — visualizável em trace.playwright.dev

Inteligência de Rede e API (7)

FerramentaO que faz
network_logVer tráfego HTTP — filtrar por URL, método, status, content-type
console_logLer saída do console do navegador, filtrada por nível
network_interceptBloquear, simular ou registrar requisições por padrão de URL
api_discoverListar APIs JSON que a página chamou, classificadas por categoria (dados, rastreamento, autenticação, CDN, anúncios)
api_exportGerar uma especificação OpenAPI v3 a partir do tráfego de API observado
executeExecutar um script Playwright em um ambiente sandbox — substitui 5-20 idas e voltas MCP sequenciais
session_replayReproduzir uma gravação na sessão atual com substituições de parâmetros

Variáveis de Ambiente

VariávelPadrãoDescrição
LEAP_MAX_SESSIONS15Máximo de sessões concorrentes
LEAP_IDLE_TIMEOUT1800000Tempo limite de ociosidade da sessão em ms (30 min). Defina 0 para desativar.
LEAP_HEADLESStrueDefina false para assistir ao navegador
LEAP_HEADEDfalseDefina true para assistir ao navegador (alternativa positiva a LEAP_HEADLESS)
LEAP_CHANNEL(chromium incluído)Defina chrome para usar seu Chrome instalado
LEAP_CDP_ENDPOINT(nenhum)Conectar a uma instância Chrome em execução (ex.: http://localhost:9222)
LEAP_EXTENSIONS(nenhum)Caminhos separados por vírgula para extensões de navegador a carregar
LEAP_ALLOW_JStruePermitir avaliação de JS em extract e wait_for
LEAP_STEALTHtrueModo furtivo: true | passive | auto | false. Veja a seção Furtividade.
LEAP_STEALTH_PROFILESfalseHabilitar patches furtivos em sessões de perfil (autenticadas)
LEAP_CDP_STEALTHtrueEvasão de detecção CDP (filtragem Runtime.enable)
LEAP_HUMANIZEfalseExperimental. Movimento de mouse semelhante ao humano, cadência de digitação e comportamento de rolagem.
LEAP_ALLOW_EXECUTEtruePermitir a ferramenta execute (scripts Playwright em sandbox)
LEAP_BLOCK_LOCALHOSTfalseBloquear localhost/127.x.x.x (permitido por padrão para desenvolvimento local)
LEAP_PROFILES_DIR~/.leapfrog/chrome-profilesDiretório para perfis de navegador persistentes
LEAP_TILEfalseOrganizar sessões em grade (true | master | false)
LEAP_TILE_PADDING8Espaçamento entre janelas organizadas (px)
LEAP_MULTI_TILEfalseCoordenação de organização multi-terminal entre instâncias Leapfrog
LEAP_SCREEN_WIDTH(automático)Largura de tela explícita para cálculos de organização
LEAP_SCREEN_HEIGHT(automático)Altura de tela explícita para cálculos de organização
LEAP_HUDfalseClique com ondulação, zoom no alvo, rolagem até o alvo em ações do agente
LEAP_AUTO_CONSENTtrueDispensar automaticamente banners de consentimento de cookies (10 frameworks + fallback)
LEAP_TRACEfalseRastreamento Playwright por sessão (capturas de tela + snapshots DOM)
LEAP_RECORDfalseGravação de sessão (exportação de histórico de ações)
LEAP_REBROWSERfalseHabilitar integração Rebrowser
LEAP_AUTO_WARMfalsePré-aquecer perfis automaticamente carregando URLs-chave na criação da sessão
LEAP_CAPTCHA_PROVIDER(nenhum)Solucionador de CAPTCHA externo: capsolver | 2captcha | nopecha
LEAP_CAPTCHA_API_KEY(nenhum)Chave de API para o provedor de CAPTCHA configurado
LEAP_MAX_SESSIONS_PER_CLIENT(nenhum)Limite de pool de sessão por cliente
LEAP_LOG_LEVELinfodebug / info / warn / error

Testes

 769 passing across 31 suites

Gerenciamento de sessão, mecanismo de snapshot, diferenciador de snapshot, inteligência de rede, gerenciamento de abas, segurança, proteção SSRF, patches furtivos (19), furtividade aprimorada, humanização (mouse, digitação, rolagem), classificação de páginas, inteligência de harness, inteligência de API, executor de scripts, ações estendidas, sobreposições HUD, intervenção humana, consentimento de cookies, conhecimento de domínio, cura de seletores, elementos estáveis, gerenciador de tiles, regressão de bugs, smoke de integração, testes de estresse, benchmarks.

npm test

Requisitos

  • Node.js >= 20
  • Chromium — use o Chrome do sistema (LEAP_CHANNEL=chrome) ou instale via npx playwright-core install chromium

Licença

MIT