CapMonster Cloud Patchright MCP Captcha Solver

Automação de navegador furtiva via Patchright com resolução de CAPTCHA integrada do CapMonster Cloud. Contorna Cloudflare Turnstile, reCAPTCHA v2/v3 e DataDome para fluxos de trabalho de scraping de ponta a ponta.

Documentação

capmonster-mcp-patchright

🛡️ Servidor MCP de navegador indetectável — 66 ferramentas, alimentado por Patchright, zero impressão digital CDP.

![npm] ![MCP]

Passa por Cloudflare / Akamai / Kasada / Datadome.

Fork do mcp-patchright que adiciona uma opção world: "main" por chamada ao browser_evaluate / browser_run_code_unsafe, para que os globais de janela definidos pela página fiquem visíveis e chamáveis. O padrão é o mundo isolado de stealth do Patchright (igual ao upstream); opte pelo main apenas quando o script da própria página precisar ver ou ser chamado pelo seu código avaliado. Todo o resto corresponde ao mcp-patchright upstream.

Por que Patchright, e não Playwright?

PlaywrightPatchright
Runtime.enable✅ envia (detectável)❌ removido
Console.enable✅ envia❌ removido
flag --enable-automation✅ presente❌ removido
navigator.webdrivertruefalse / undefined
Evasão anti-bot❌✅

Veja a comparação completa para detalhes.

Início rápido

npm i -g capmonster-mcp-patchright
capmonster-mcp-patchright --port 9321 --host 127.0.0.1

Com Claude / GPT / agentes

{
  "mcpServers": {
    "patchright": {
      "command": "npx",
      "args": ["capmonster-mcp-patchright", "--port", "9321", "--host", "127.0.0.1"]
    }
  }
}

Recursos

  • 66 ferramentas MCP — superfície completa de automação de navegador
  • world: "main" opt-in — browser_evaluate / browser_run_code_unsafe podem rodar no mundo real da página para ver/chamar globais definidos pela página (o padrão permanece isolado/stealth)
  • browser_find — busca no snapshot aria atual por texto/regex, mais barato que um browser_snapshot completo
  • browser_save_blob — salva um Blob/data URL produzido pelo código da página no disco
  • 3 transportes — stdio, SSE, Streamable HTTP (/mcp)
  • Perfis persistentes — perfil real do Chrome, reutilizável entre sessões
  • Multi-página — gerenciamento de abas (nova, listar, alternar, fechar)
  • Sessões HTTP com escopo por proprietário — isola abas por chamador com owner query/header
  • Anexo CDP — controla um Chrome já em execução
  • Rastreamento e interceptação de rede — lista/detalhe de requisições, alternância offline, bloqueio/mock de rotas
  • Importação/exportação de sessão — browser_storage_save / browser_storage_load (cookies + localStorage)
  • Armazenamento granular — CRUD por chave de cookie / localStorage / sessionStorage (browser_cookie_*, browser_localstorage_*, browser_sessionstorage_*)
  • Requisições de API autenticadas — browser_api_request reutiliza cookies de sessão (scraping híbrido)
  • Extração de texto/HTML — browser_get_visible_text / _html (leve em tokens)
  • Ciente de iframes — passe frameSelector para qualquer ferramenta de elemento (click/fill/type/hover/press/wait_for/select/drag) para agir dentro de um iframe
  • Exportação PDF — browser_save_pdf via CDP (funciona em modo headed/stealth)
  • Gravação de vídeo — browser_start com recordVideo, browser_video_save; .webm liberado em browser_close
  • Destaque de elementos — sobreposições browser_highlight / browser_hide_highlight para capturas de tela e gravações
  • Perfis stealth — proxy / geolocalização / locale / fuso horário / colorScheme
  • Captura de console — fluxo de mensagens de console em tempo real
  • Verificação de impressão digital — diagnósticos browser_fingerprint_check
  • Passkeys virtuais — cria, importa, lista e exclui credenciais WebAuthn com chaves privadas ocultas por padrão

Ferramentas

Comparação completa em HTML em /docs/tool-comparison.html.

  • browser_start
  • browser_status
  • browser_navigate
  • browser_new_page
  • browser_pages
  • browser_switch_page
  • browser_close_page
  • browser_snapshot
  • browser_find
  • browser_take_screenshot
  • browser_click
  • browser_fill
  • browser_type
  • browser_hover
  • browser_press_key
  • browser_wait_for
  • browser_evaluate
  • browser_fingerprint_check
  • browser_navigate_back
  • browser_select_option
  • browser_handle_dialog
  • browser_file_upload
  • browser_network_requests
  • browser_network_request
  • browser_console_messages
  • browser_resize
  • browser_drag
  • browser_fill_form
  • browser_run_code_unsafe
  • browser_add_init_script
  • browser_network_state_set
  • browser_api_request
  • browser_get_visible_text
  • browser_get_visible_html
  • browser_iframe_click
  • browser_iframe_fill
  • browser_route_block
  • browser_route_mock
  • browser_route_clear
  • browser_storage_save
  • browser_storage_load
  • browser_cookie_list
  • browser_cookie_get
  • browser_cookie_set
  • browser_cookie_delete
  • browser_cookie_clear
  • browser_localstorage_list
  • browser_localstorage_get
  • browser_localstorage_set
  • browser_localstorage_delete
  • browser_localstorage_clear
  • browser_sessionstorage_list
  • browser_sessionstorage_get
  • browser_sessionstorage_set
  • browser_sessionstorage_delete
  • browser_sessionstorage_clear
  • browser_passkey_install
  • browser_passkey_create
  • browser_passkey_list
  • browser_passkey_delete
  • browser_video_save
  • browser_highlight
  • browser_hide_highlight
  • browser_save_blob
  • browser_save_pdf
  • browser_close

Desenvolvimento

Sessões HTTP com escopo por proprietário

O modo HTTP exige um proprietário estável na URL do MCP (?owner=<id>) ou com o header X-Browser-Owner. Listagem de páginas, alternância, navegação e fechamento são restritos às abas desse proprietário. Exclua /owners?owner=<id> para fechar todas as abas de um chamador sem parar o navegador ou limpar o perfil.

npm install
npm run build
node dist/index.js

Lançamento

Instale a versão correspondente do Chromium uma vez, depois prepare um lançamento a partir das versões exatas de dependências em package-lock.json, execute a suíte completa de verificação, e inspecione o pacote sem publicá-lo:

npx patchright install chromium
npm run release:check
npm publish

Por padrão, browser_start inicia o Chromium via patchright como Chrome real com interface, com um perfil persistente em:

~/.maestro/stealth-playwright-mcp/profiles/default

Você pode substituir isso com o argumento da ferramenta userDataDir ou STEALTH_PLAYWRIGHT_USER_DATA_DIR.

Para anexar a um Chrome já em execução em vez de iniciar um, inicie o Chrome com depuração remota e passe cdpEndpoint para browser_start:

google-chrome --remote-debugging-port=9222 --user-data-dir=$HOME/.maestro/stealth-playwright-mcp/profiles/cdp
{ "cdpEndpoint": "http://127.0.0.1:9222" }

browser_snapshot retorna o snapshot aria de IA do Playwright. Use valores [ref=eN] desse snapshot com browser_click, browser_fill, browser_type, browser_hover, browser_press e browser_wait_for passando { "ref": "eN" }. Seletores CSS continuam suportados via { "selector": "..." }.

Exemplo de configuração MCP:

{
  "mcpServers": {
    "patchright": {
      "command": "node",
      "args": ["/path/to/capmonster-mcp-patchright/dist/index.js"]
    }
  }
}

Direção

Entregue:

  • ✅ diretórios de dados de usuário persistentes
  • ✅ anexo CDP ao Chrome real
  • ✅ perfis de proxy / fuso horário / locale / geolocalização
  • ✅ snapshots de acessibilidade para controle de página amigável a LLM
  • ✅ diagnósticos de impressão digital
  • ✅ interceptação de rede (bloqueio / mock)
  • ✅ importação/exportação de sessão (storageState)
  • ✅ exportação PDF
  • ✅ requisições de API autenticadas (reutiliza cookies do navegador)
  • ✅ extração leve de texto/HTML
  • ✅ ações em iframes
  • ✅ opt-in world: "main" para browser_evaluate / browser_run_code_unsafe
  • ✅ busca em snapshot aria (browser_find)
  • ✅ salvar saída Blob/data URL no disco (browser_save_blob)

Próximos passos:

  • backend rebrowser-playwright
  • sessões codegen
  • cliques baseados em coordenadas (visão)
  • rastreamento / gravação de vídeo