MCP com Chrome: Automação com IA · Capítulo 3 de 16 · 30 min
Montar um laboratório que você pode jogar fora
Desde o Chrome 136 a porta de depuração não abre no perfil padrão; um perfil separado resolve isso em vinte minutos.
Este capítulo faz parte do curso gratuito MCP com Chrome: Automação com IA.
O que é: um laboratório de navegador que você pode jogar fora, montado em um perfil separado do Chrome que a equipe usa no dia a dia. Por que importa: apontar o agente para o navegador errado entrega a ele cookies, abas e sessões vivas; começar em um perfil descartável reduz o custo de um engano a quase zero. A sua decisão: exigir que todo experimento comece em perfil isolado e que exista um runbook escrito de qual conta vive em qual perfil. O que delegar: a instalação do servidor, a criação dos perfis e o preenchimento do runbook cabem ao time. O passo a passo para operar vem logo abaixo.
Glossário rápido
Perfil isolado (descartável)
Um perfil de navegador que nasce vazio e é apagado quando o navegador fecha, sem cookies seus e sem abas suas. É como um quarto de hotel: você usa e devolve sem deixar nada seu para trás. No chrome-devtools-mcp ele só existe com a flag --isolated, ligada à mão.
App-Bound Encryption e DBSC
Duas defesas do Chrome contra roubo de cookie. A App-Bound Encryption amarra os cookies ao próprio navegador para impedir que outro programa os leia; o Device Bound Session Credentials (DBSC), que veio depois, prende a sessão ao hardware da máquina, de modo que o cookie roubado não serve em outro dispositivo.
O mapa de risco do módulo 1 pede um lugar onde errar custe pouco, e o primeiro reflexo de quase todo mundo leva ao lugar errado. O comando que todo tutorial ensina aponta para o Chrome que você já usa todo dia, aquele logado em tudo, e nada acontece: a porta de depuração não sobe, sem erro claro nem mensagem que ajude.
Dá vontade de concluir que o ambiente quebrou. O Google fechou essa porta de propósito, e entender o motivo separa quem monta um laboratório seguro em vinte minutos de quem passa a tarde caçando um defeito que não existe.
# A tentativa que quase todo material antigo ensina: abrir a porta de
# depuração remota no Chrome de uso diário, que já está logado em tudo.
# Windows (PowerShell)
& "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
# Linux
google-chrome --remote-debugging-port=9222
# Conferência: se a porta tivesse subido, este endpoint responderia um JSON
# com a versão do navegador e o endereço do WebSocket de depuração.
curl http://127.0.0.1:9222/json/version
# Do Chrome 136 em diante, apontando para o perfil padrão, isso não responde.Por que o Chrome ignora a flag
A partir do Chrome 136, as flags --remote-debugging-port e --remote-debugging-pipe deixaram de ser respeitadas quando o alvo é o diretório de dados padrão do navegador. Elas passaram a exigir um --user-data-dir apontando para um diretório fora do padrão, que usa chave de criptografia diferente.
A motivação declarada foi o aumento de ataques que usam a depuração remota para extrair cookies, um vetor que ganhou importância justamente depois que o App-Bound Encryption passou a proteger o perfil. Ou seja: a porta fechada responde a um roubo que estava acontecendo, e o incômodo do desenvolvedor é efeito colateral.
Essa linha de defesa continuou em 2026 com o Device Bound Session Credentials (DBSC), que prende o cookie de sessão ao hardware da máquina, o TPM no Windows. Ele ficou geralmente disponível no Chrome 146 para Windows em 10 de abril de 2026 e entrou em rollout amplo em maio de 2026, com a mesma motivação de sempre, roubo de cookie por infostealer ou depuração remota, agora com o cookie inutilizável fora do dispositivo que o gerou.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Três saídas, três finalidades diferentes. Diretório de dados dedicado quando você precisa de sessão logada persistente, com uma conta de teste e nada além dela. Perfil temporário isolado quando a tarefa não precisa de login e você quer que tudo desapareça ao fechar o navegador. Chrome for Testing quando a operação é de pipeline, porque ele preserva o comportamento anterior das flags de depuração e é a recomendação oficial do time de segurança do Chrome para automação.
a tarefa precisa de sessão logada?
|
+-- NÃO --> perfil temporário isolado (--isolated)
| nasce vazio, morre ao fechar o navegador
| padrão para aprender e para site desconhecido
|
+-- SIM --> a sessão é de uma conta de teste?
|
+-- SIM --> diretório dedicado (--user-data-dir)
| logar à mão UMA vez, só o que a tarefa exige
|
+-- NÃO --> pare. não logue conta pessoal ou de produção
aqui. crie a conta de teste primeiro.Não tente copiar cookies do seu perfil pessoal para o perfil de laboratório. Além de frágil, o atalho esbarra na criptografia vinculada ao aplicativo e quebra a cada rotação de token, então você vai depurar sessão morta em vez de depurar o site. O caminho que funciona é logar à mão uma única vez no perfil dedicado e deixar aquela sessão viver ali.
O que conferir antes de instalar qualquer coisa
- Node.js na versão LTS mais recente e npm disponíveis no PATH.
- Chrome na versão estável corrente instalado na máquina, que em julho de 2026 é o Chrome 150. O bloqueio da porta de depuração no perfil padrão vale desde o Chrome 136 e continua em vigor.
- Sistema operacional Linux, macOS ou Windows, todos com suporte oficial.
- Navegador: apenas Google Chrome e Chrome for Testing têm suporte oficial. Firefox, Safari e Edge ficam fora por decisão de escopo do projeto; esperar uma atualização que os inclua não adianta.
# Conferência rápida do ambiente antes de instalar o servidor.
node --version # precisa ser a LTS mais recente
npm --version
# Versão do Chrome instalado (macOS e Linux)
google-chrome --version
# Windows (PowerShell): lê a versão do executável sem abrir o navegador
(Get-Item "C:\Program Files\Google\Chrome\Application\chrome.exe").VersionInfo.ProductVersionInstalar o chrome-devtools-mcp no Claude Code
Existem dois caminhos documentados. O que a documentação oficial do Chrome descreve para o Claude Code é o de plugin, em dois comandos dentro da sessão. O outro é registrar o servidor MCP (programa que liga o assistente ao navegador, como uma tomada padrão) direto pelo CLI, útil quando você quer o mesmo servidor disponível em todos os projetos do seu usuário.
# Caminho 1: plugin (o que a documentação oficial descreve para o Claude Code).
# Rode os dois comandos DENTRO da sessão do Claude Code.
/plugin marketplace add ChromeDevTools/chrome-devtools-mcp
/plugin install chrome-devtools-mcp@chrome-devtools-plugins
# Caminho 2: registrar o servidor MCP pelo CLI, no escopo do usuário.
claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest// Configuração canônica para qualquer cliente que aceite "mcpServers".
// O "--isolated" é o que torna esta sessão descartável: o servidor cria um
// diretório de dados temporário e o joga fora quando o navegador fecha.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--isolated"
]
}
}
}Comece sempre pelo modo isolado, mesmo que a sua tarefa real vá precisar de login depois. Nesse modo não existe cookie seu para vazar, nenhuma aba sua para o agente ler e nenhum estado que sobreviva a um erro seu. Você aprende a dirigir o servidor com o custo de um engano perto de zero, e só então decide, conscientemente, abrir mão dessa proteção.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Quando o descartável não serve, o dedicado entra
Auditar um painel administrativo, conferir o comportamento de uma área logada ou reproduzir um erro que só acontece depois do login exige sessão viva. Aí o perfil temporário atrapalha, porque você teria de logar de novo a cada execução.
A saída é um diretório de dados próprio, fora do padrão do Chrome, criado uma vez, logado à mão uma vez, e nunca usado para mais nada. Ele é o seu perfil de auditoria: existe uma conta ali, ela é de teste, e a lista do que jamais pode ser logado ali é tão importante quanto a do que está.
# Perfil de auditoria: diretório próprio, fora do padrão do Chrome.
# Crie uma vez, logue à mão uma vez, e não use para mais nada.
# macOS e Linux
mkdir -p ~/lab-chrome-auditoria
google-chrome \
--user-data-dir="$HOME/lab-chrome-auditoria" \
--remote-debugging-port=9222
# Windows (PowerShell)
New-Item -ItemType Directory -Force "$HOME\lab-chrome-auditoria" | Out-Null
& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--user-data-dir="$HOME\lab-chrome-auditoria" `
--remote-debugging-port=9222
# Agora a porta responde, porque o alvo não é o diretório de dados padrão.
curl http://127.0.0.1:9222/json/version// Conectar o servidor ao Chrome de auditoria que você acabou de subir.
// Repare: aqui NÃO existe "--isolated". Você está entregando ao agente uma
// sessão real, e essa troca precisa ser uma decisão anotada no runbook.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--browserUrl",
"http://127.0.0.1:9222"
]
}
}
}A documentação do Chrome é explícita: o servidor expõe o conteúdo do navegador ao agente, que passa a poder ler, inspecionar, depurar e modificar qualquer dado do browser, e ela recomenda evitar conectar agentes a sessões autenticadas com dados sensíveis. No caminho de conexão automática, a mesma documentação enumera o que isso significa na prática: abas abertas, session storage, local storage e cookies do perfil. Conectar ao perfil pessoal entrega ao agente as credenciais vivas de tudo que estiver aberto.
As duas saídas de dados que vêm ligadas por padrão
Antes de qualquer ataque acontecer, o laboratório já pode violar política interna sozinho. O servidor coleta estatísticas de uso por padrão, incluindo taxa de sucesso de invocação de ferramenta, latência e informações de ambiente. E as ferramentas de performance podem enviar URLs de trace para a API pública de dados de campo do Google.
Em URL interna, de homologação ou de painel administrativo, esse segundo item é o mais delicado, porque o endereço em si já entrega estrutura e nomenclatura da sua operação. Desligar os dois exige uma decisão explícita, escrita na configuração.
// Laboratório com as duas saídas de dados desligadas por decisão explícita.
// As flags cobrem a sessão; as variáveis de ambiente cobrem também a checagem
// automática de atualização, útil em máquina sem saída livre para a internet.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--isolated",
"--no-usage-statistics",
"--no-performance-crux"
],
"env": {
"CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS": "1",
"CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS": "1"
}
}
}
}Se o contexto ficar apertado, existe o modo --slim, que expõe apenas três ferramentas (navegação, execução de script e captura de tela) em vez do conjunto completo. Guarde o nome desde já: o custo de contexto do servidor é problema reconhecido pelo próprio projeto, e o módulo 4 abre essa conta com número e proveniência antes de você decidir quando ligar a contenção.
Existe issue pública relatando que, ao conectar o servidor a uma instância do Chrome com um número muito grande de abas, na ordem de duas mil, o navegador fica sem resposta e a queda acontece já na primeira chamada de ferramenta. É mais um argumento técnico, além do de segurança, para não apontar o agente para o navegador que você usa o dia inteiro.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Por que registrar isso por escrito
Daqui a três semanas você não vai lembrar qual perfil tem qual conta, e a pergunta vai aparecer no pior momento possível, com o agente já rodando. Pior: se outra pessoa herdar o laboratório, ela vai descobrir o escopo por tentativa e erro, logando coisas que não deveria.
Escreva hoje o runbook (o manual de bolso da operação, como a ficha de uma receita) em meia página, seguindo o modelo abaixo. Ele está certo quando qualquer pessoa do time responde em cinco segundos, só lendo, à pergunta que importa quando algo dá errado: o que exatamente esse agente conseguia alcançar?
# Runbook do laboratório de browser
Última revisão: 2026-07-19 · Responsável: <seu nome>
## Perfil de auditoria (persistente)
- Diretório de dados: `~/lab-chrome-auditoria`
- Canal do Chrome: estável
- Modo do servidor: `--browserUrl http://127.0.0.1:9222`
- Logado aqui: apenas `qa-lab@exemplo.com` (conta de teste, sem permissão de escrita em produção)
## Perfil descartável
- Modo do servidor: `--isolated`
- Estado: nasce vazio, é descartado ao fechar o navegador
- Uso: navegação em site desconhecido e qualquer exercício deste curso
## Jamais logar em nenhum dos dois
- E-mail pessoal
- Banco e qualquer serviço financeiro
- Gestor de senhas
- Painel administrativo de produção
## Saídas de dados
- Estatísticas de uso: DESLIGADAS (`--no-usage-statistics`)
- Envio de URL de trace para a base pública de performance: DESLIGADO (`--no-performance-crux`)
## Como derrubar tudo
1. Fechar a janela do Chrome de laboratório (o perfil isolado some sozinho).
2. Conferir que a porta 9222 não responde mais.
3. Se precisar zerar o perfil persistente, apagar o diretório de dados inteiro e logar de novo à mão.Critério de sucesso observável: (1) o perfil de laboratório abre com histórico vazio, sem e-mail pessoal, sem banco e sem painel de produção; (2) o servidor responde a uma navegação e devolve o snapshot da página; (3) o perfil temporário desaparece quando você fecha o navegador; (4) você consegue apontar, na sua configuração, a linha exata que desliga a telemetria e a que desliga o envio de URL de trace; (5) o runbook registra o caminho do diretório, o que está logado ali e a lista do que jamais pode ser logado.
Cabe a você tornar obrigatório o que aqui parece detalhe de operação: todo experimento começa em perfil isolado, nenhuma conta pessoal ou de produção entra no laboratório, e existe um runbook escrito dizendo qual conta vive em qual perfil. Aprovar essa disciplina custa meia página agora e evita a pergunta sem resposta no dia em que algo der errado com o agente já rodando.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoMCP para quem decidesugerido pelo grafo7 capítulos de “MCP com Chrome: Automação com IA” usam conceitos apresentados em “MCP para quem decide”.
- CursoNode.js: JavaScript no Servidorsugerido pelo grafo3 capítulos de “MCP com Chrome: Automação com IA” usam conceitos apresentados em “Node.js: JavaScript no Servidor”.
- CursoSetup Completo: do zero ao Claude Codesugerido pelo grafo3 capítulos de “MCP com Chrome: Automação com IA” usam conceitos apresentados em “Setup Completo: do zero ao Claude Code”.
- CursoVídeo com IA: Claude Code, Codex e ElevenLabssugerido pelo grafo3 capítulos de “MCP com Chrome: Automação com IA” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Setup Completo: do zero ao Claude CodeDeixe o Claude operar o seu Chrome (avançado, opcional)Examinar conexões de Deixe o Claude operar o seu Chrome (avançado, opcional)
- Setup de Vibecoding no MacDar ao Claude controle do Google ChromeExaminar conexões de Dar ao Claude controle do Google Chrome
- MCP para quem decideInventariar o que já roda nas máquinas do timeExaminar conexões de Inventariar o que já roda nas máquinas do time
- Claude Code CLI: Programação com IARevisar o plano antes de agir e ligar suas ferramentasExaminar conexões de Revisar o plano antes de agir e ligar suas ferramentas
Voltar ao capítulo anterior: Escolher a ferramenta de navegador pelo login que ela enxerga
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.