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.
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?
| Playwright | Patchright | |
|---|---|---|
Runtime.enable | ✅ envia (detectável) | ❌ removido |
Console.enable | ✅ envia | ❌ removido |
flag --enable-automation | ✅ presente | ❌ removido |
navigator.webdriver | true | false / 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_unsafepodem 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 umbrowser_snapshotcompletobrowser_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
ownerquery/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_requestreutiliza cookies de sessão (scraping híbrido) - Extração de texto/HTML —
browser_get_visible_text/_html(leve em tokens) - Ciente de iframes — passe
frameSelectorpara qualquer ferramenta de elemento (click/fill/type/hover/press/wait_for/select/drag) para agir dentro de um iframe - Exportação PDF —
browser_save_pdfvia CDP (funciona em modo headed/stealth) - Gravação de vídeo —
browser_startcomrecordVideo,browser_video_save; .webm liberado embrowser_close - Destaque de elementos — sobreposições
browser_highlight/browser_hide_highlightpara 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_startbrowser_statusbrowser_navigatebrowser_new_pagebrowser_pagesbrowser_switch_pagebrowser_close_pagebrowser_snapshotbrowser_findbrowser_take_screenshotbrowser_clickbrowser_fillbrowser_typebrowser_hoverbrowser_press_keybrowser_wait_forbrowser_evaluatebrowser_fingerprint_checkbrowser_navigate_backbrowser_select_optionbrowser_handle_dialogbrowser_file_uploadbrowser_network_requestsbrowser_network_requestbrowser_console_messagesbrowser_resizebrowser_dragbrowser_fill_formbrowser_run_code_unsafebrowser_add_init_scriptbrowser_network_state_setbrowser_api_requestbrowser_get_visible_textbrowser_get_visible_htmlbrowser_iframe_clickbrowser_iframe_fillbrowser_route_blockbrowser_route_mockbrowser_route_clearbrowser_storage_savebrowser_storage_loadbrowser_cookie_listbrowser_cookie_getbrowser_cookie_setbrowser_cookie_deletebrowser_cookie_clearbrowser_localstorage_listbrowser_localstorage_getbrowser_localstorage_setbrowser_localstorage_deletebrowser_localstorage_clearbrowser_sessionstorage_listbrowser_sessionstorage_getbrowser_sessionstorage_setbrowser_sessionstorage_deletebrowser_sessionstorage_clearbrowser_passkey_installbrowser_passkey_createbrowser_passkey_listbrowser_passkey_deletebrowser_video_savebrowser_highlightbrowser_hide_highlightbrowser_save_blobbrowser_save_pdfbrowser_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"parabrowser_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