🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Depuração Remota do Chrome: Configuração do CDP, Segurança e Automação

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

06-Aug-2026

TL;DR:

  • O depurador remoto do Chrome expõe um navegador Chromium em execução através do Protocolo DevTools do Chrome. Os clientes podem inspecionar alvos, enviar comandos, receber eventos e anexar bibliotecas de automação sem iniciar o navegador eles mesmos.
  • /json/version identifica o endpoint WebSocket em nível de navegador. /json e /json/list enumeram alvos de página, cada um com seu próprio webSocketDebuggerUrl.
  • A porta 9222 é uma interface de controle, não uma porta de aplicativo pública. Vincule-a ao loopback, use um diretório de dados de usuário isolado e nunca a anexe a um perfil real do dia a dia.
  • O Chrome atual requer um perfil não padrão para as opções de depuração remota. O Chrome 136 e versões mais recentes ignoram essas opções em relação ao diretório de dados padrão do Chrome como uma medida de segurança.
  • Puppeteer e Playwright podem se conectar a uma sessão existente do Chromium através do CDP. O Puppeteer aceita uma URL de navegador ou endpoint WebSocket; o Playwright fornece chromium.connectOverCDP() com uma conexão de menor fidelidade do que seu protocolo nativo.
  • O Cloud CDP remove operações do navegador local da máquina cliente. O Scrapeless Scraping Browser cria uma sessão remota isolada e retorna um endpoint WebSocket para Puppeteer ou Playwright.
  • Gratuito para começar. Novas contas Scrapeless incluem tempo de execução gratuito do Scraping Browser — inscreva-se em app.scrapeless.com.

A depuração remota do Chrome transforma uma instância do Chromium em execução em um alvo programável. DevTools, Puppeteer, Playwright, integrações com IDE e clientes CDP personalizados podem se conectar à mesma superfície de protocolo para inspecionar páginas, avaliar JavaScript, observar eventos de rede e realizar ações no navegador.

Esse poder cria uma fronteira de segurança. Um cliente com o endpoint WebSocket do navegador pode acessar domínios em nível de navegador e descobrir alvos de página. O endpoint deve ser tratado como uma credencial privilegiada de curta duração, mesmo quando está ouvindo apenas em uma máquina de desenvolvedor.

Este guia inicia uma instância do Chrome local isolada, inspeciona seus endpoints de descoberta JSON, anexa Puppeteer e Playwright, abrange o encaminhamento Android e, em seguida, compara o gerenciamento de porta local com uma sessão isolada do Scrapeless Scraping Browser.


O que é a depuração remota do Chrome?

A depuração remota do Chrome é um transporte que expõe a instrumentação do Chromium através do Protocolo DevTools do Chrome, ou CDP. O CDP é organizado em domínios como Browser, Page, Runtime, Network, DOM, e Target; um cliente envia comandos JSON e recebe eventos JSON através do WebSocket.

A referência oficial do Protocolo DevTools do Chrome define os domínios do protocolo e os endpoints de descoberta HTTP disponíveis quando o Chrome inicia com uma porta de depuração remota.

O protocolo tem dois níveis úteis de endpoint:

  • Endpoint do navegador. A URL termina em /devtools/browser/<id> e pode descobrir ou gerenciar alvos em todo o processo do navegador.
  • Endpoint da página. A URL termina em /devtools/page/<id> e controla uma aba ou outro alvo semelhante a uma página.

Os IDs opacos mudam com o processo do navegador e o ciclo de vida do alvo. Descubra-os em tempo de execução em vez de construí-los.


A segurança vem antes da configuração

A depuração remota do Chrome deve ser vinculada ao loopback e emparelhada com um perfil descartável. Expor a porta a uma LAN, entrada de contêiner, túnel ou interface pública dá a outro cliente um caminho para uma superfície de controle privilegiado do navegador.

O Chrome alterou o comportamento das opções de depuração remota na versão 136. A atualização de segurança da depuração remota do Chrome afirma que --remote-debugging-port e --remote-debugging-pipe são ignorados quando direcionados ao diretório de dados padrão do Chrome; uma --user-data-dir não padrão agora é necessária.

Aplique esses controles:

  • vincule o ouvinte a 127.0.0.1;
  • crie um --user-data-dir temporário para a sessão de depuração;
  • nunca use um perfil que contenha cookies pessoais, senhas salvas, dados de pagamento ou contas ativas;
  • não coloque a URL do WebSocket do navegador em logs, tickets, capturas de tela ou configurações compartilhadas;
  • execute o navegador sob uma conta de sistema operacional de baixo privilégio;
  • coloque automação remota atrás de infraestrutura autenticada em vez de publicar a porta 9222;
  • feche o navegador e remova o perfil temporário após a tarefa.

O Chrome para Testes é o melhor binário de automação local quando um pipeline de build precisa de um navegador reproduzível, em vez do canal Chrome instalado de um desenvolvedor.


Pré-requisitos

Os exemplos locais requerem Chrome ou Chrome para Testes, Node.js e dois clientes CDP.

  • Uma versão atual do Chrome ou Chrome para Testes.
  • Uma versão do Node.js mantida.
  • curl e jq para inspecionar os endpoints de descoberta.
  • puppeteer-core e playwright-core para os exemplos de anexação.
  • @scrapeless-ai/sdk para o exemplo de sessão em nuvem.
  • Um diretório temporário que não contenha dados reais de perfil de usuário.
  • Uma chave de API Scrapeless apenas para a seção de sessão em nuvem.

Instale os pacotes em um projeto isolado:

bash Copy
npm install puppeteer-core playwright-core @scrapeless-ai/sdk

O projeto de verificação local instalou puppeteer-core 25.5.0, playwright-core 1.62.1 e @scrapeless-ai/sdk 1.11.0. As versões dos pacotes se movem independentemente, então fixe-as em produção após o teste de anexação passar para o canal Chrome do projeto.


Inicie o Chrome Com um Perfil de Debug Isolado

Inicie um processo separado do Chrome com um ouvinte de loopback e um novo diretório de dados do usuário. O comando macOS abaixo é executado sem cabeça para que a sessão seja fácil de testar a partir de um terminal.

bash Copy
DEBUG_PROFILE="$(mktemp -d)"

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --headless=new \
  --remote-debugging-address=127.0.0.1 \
  --remote-debugging-port=9222 \
  --user-data-dir="${DEBUG_PROFILE}" \
  about:blank

No Linux, substitua o caminho executável pelo google-chrome instalado ou pelo binário do Chrome para Testes. No Windows, invoque chrome.exe a partir do PowerShell e passe as mesmas quatro flags como argumentos separados.

Mantenha este terminal aberto. O Chrome possui o ouvinte de debug durante a vida útil do processo.


Inspecione /json/version e /json/list

O Chrome expõe metadados do navegador e descoberta de alvo na mesma porta de loopback. /json/version retorna o endpoint WebSocket de nível de navegador; /json e /json/list retornam alvos disponíveis.

bash Copy
curl --fail --silent http://127.0.0.1:9222/json/version \
  | jq '{Browser, "Protocol-Version", webSocketDebuggerUrl}'

curl --fail --silent http://127.0.0.1:9222/json/list \
  | jq 'map({id, type, title, url, webSocketDebuggerUrl})'

A resposta do navegador contém Browser, Protocol-Version, User-Agent, metadados de mecanismo e webSocketDebuggerUrl. Um registro da lista de alvos contém campos como id, type, title, url e seu webSocketDebuggerUrl de nível de página.

Não publique nenhum URL WebSocket. O ID do caminho não substitui o controle de acesso de rede ou autenticação.


O Puppeteer pode descobrir o endpoint WebSocket a partir da URL do navegador local e anexar sem iniciar outro processo do Chrome. A referência do endpoint do navegador Puppeteer mapeia webSocketDebuggerUrl em /json/version para Puppeteer.connect().

javascript Copy
import puppeteer from "puppeteer-core";

const browser = await puppeteer.connect({
  browserURL: "http://127.0.0.1:9222",
});

const pages = await browser.pages();
console.log({
  browser: await browser.version(),
  pageCount: pages.length,
  firstPageUrl: pages[0]?.url() ?? null,
});

browser.disconnect();

Use browser.disconnect() quando o cliente deve se desanexar enquanto o Chrome continua em execução. browser.close() pede ao processo do navegador remoto para desligar.


Conecte o Playwright Via CDP

O Playwright se conecta a um navegador Chromium existente através de chromium.connectOverCDP(). O método aceita tanto a URL de descoberta HTTP quanto um endpoint WebSocket do navegador.

javascript Copy
import { chromium } from "playwright-core";

const browser = await chromium.connectOverCDP("http://127.0.0.1:9222");
const contexts = browser.contexts();
const pages = contexts.flatMap((context) => context.pages());

console.log({
  contextCount: contexts.length,
  pageCount: pages.length,
  firstPageUrl: pages[0]?.url() ?? null,
});

await browser.close();

O Playwright documenta a anexação CDP como de menor fidelidade que seu protocolo nativo Playwright. A anexação CDP apenas para Chromium é apropriada quando o navegador já existe ou um provedor remoto expõe CDP; recursos avançados do Playwright devem ser testados contra o contrato de navegador remoto exato.

Obtenha sua chave de API no plano gratuito: app.scrapeless.com


Depuração Remota no Android

O Chrome no Android expõe seu socket de depuração através do encaminhamento ADB em vez de um ouvinte TCP público. Ative as opções de desenvolvedor e a depuração USB, conecte o dispositivo, aceite o prompt de autorização do dispositivo e abra o Chrome no dispositivo.

Nota: Este bloco requer um dispositivo Android com a depuração USB ativada; os comandos permanecem um pré-requisito de hardware no livro de verificação.

bash Copy
adb devices -l
adb forward tcp:9222 localabstract:chrome_devtools_remote
curl --fail --silent http://127.0.0.1:9222/json/version | jq .
curl --fail --silent http://127.0.0.1:9222/json/list | jq .

O guia de depuração remota do Chrome Android usa este padrão de encaminhamento de socket. chrome://inspect/#devices fornece o fluxo de trabalho visual do DevTools, enquanto os endpoints JSON encaminhados suportam um cliente CDP direto.

Remova a regra de encaminhamento e desative a depuração USB quando o dispositivo não estiver mais sob teste.


Trate o Endpoint CDP Como uma Credencial Privilegiada

Um endpoint CDP pode expor conteúdo da página, estado do navegador, cookies disponíveis para o perfil de depuração, atividade de rede e execução de JavaScript. O design mais seguro é tornar o endpoint de curta duração, privado e específico para uma tarefa isolada.

Evite esses padrões:

  • --remote-debugging-address=0.0.0.0 em uma estação de trabalho ou servidor;
  • uma regra de firewall que exponha a porta 9222 para a internet;
  • compartilhamento SSH ou de túnel sem autenticação e uma política de destino rigorosa;
  • anexar ao perfil de Chrome cotidiano padrão;
  • reutilizar um perfil de depuração entre usuários ou locatários;
  • armazenar URLs WebSocket do navegador em logs persistentes;
  • aceitar um URL WebSocket fornecido por uma página ou usuário não confiável sem permitir a lista de seu host.
    Para automação de equipe, coloque a criação de sessão atrás de um plano de controle autenticado. O trabalhador deve receber apenas o endpoint para sua própria sessão isolada, e o plano de controle deve impor duração, região, propriedade e concorrência.

O Navegador de Web Scraping Sem Sobrecarga substitui o processo local do Chrome e a porta TCP exposta por uma sessão de navegador em nuvem isolada. O SDK atual constrói um browserWSEndpoint específico da sessão, e Puppeteer ou Playwright se conectam a esse endpoint via CDP.

O SDK mantém a criação da sessão separada do cliente CDP:

Nota: O passo de anexar exige um SCRAPELESS_API_KEY propriedade do leitor; a construção do SDK e a geração do endpoint foram verificadas localmente, enquanto a conexão em nuvem ao vivo permanece uma pré-condição de credenciais.

javascript Copy
import { Scrapeless } from "@scrapeless-ai/sdk";
import { chromium } from "playwright-core";

const client = new Scrapeless({
  apiKey: process.env.SCRAPELESS_API_KEY,
});

const { browserWSEndpoint } = client.browser.create({
  sessionName: "cdp-guide",
  sessionTTL: 180,
  proxyCountry: "US",
});

const browser = await chromium.connectOverCDP(browserWSEndpoint);
const context = browser.contexts()[0];
const page = context.pages()[0] ?? await context.newPage();

await page.goto("https://example.com", {
  waitUntil: "domcontentloaded",
});
console.log({ title: await page.title(), url: page.url() });

await browser.close();

O endpoint é uma credencial de sessão. Mantenha-o dentro do processo, feche o navegador quando a tarefa terminar e crie uma sessão separada para cada trabalhador ou inquilino independente.

Para um fluxo de trabalho de descoberta de página que conecta Playwright a um endpoint CDP em nuvem, veja o método de descoberta de link renderizado. A documentação do Navegador de Scraping contém as opções de sessão e conexão atuais.


Diagnosticar Problemas de Conexão

As falhas de depuração remota do Chrome se tornam mais fáceis de isolar quando as verificações seguem as camadas de conexão.

Sintoma Camada provável Verificação
A porta está fechada Inicialização do navegador Confirme o processo, o caminho do executável, as flags e o diretório de dados do usuário isolado
/json/version está indisponível Ouvidor ou endereço Confirme o endereço de loopback e a propriedade da porta
O endpoint do navegador existe, mas os alvos estão vazios Ciclo de vida do alvo Abra uma página e inspecione /json/list
Puppeteer não consegue anexar Cliente ou endpoint Confirme browserURL ou use a URL WebSocket do navegador de /json/version
Playwright anexa com recursos ausentes Fidelidade do protocolo Teste a API necessária contra o CDP e compare com a conexão nativa do Playwright
A lista Android está vazia Autorização do ADB Confirme a depuração USB, aprovação do dispositivo, estado do Chrome e encaminhamento de soquete
O endpoint em nuvem é rejeitado Configuração da sessão Confirme se a chave da API, a duração do endpoint e a URL gerada pelo SDK permanecem intactas

Verifique o endpoint de descoberta antes de depurar o código da aplicação. Se /json/version não identificar o navegador esperado, uma alteração a nível de biblioteca não pode corrigir a configuração do ouvidor ou do perfil.


A depuração remota do Chrome é um canal de controle de alto privilégio construído sobre CDP. Inicie o Chrome com um ouvidor de loopback e perfil descartável, descubra o endpoint do navegador de /json/version, liste os alvos de página através de /json/list e anexe apenas clientes confiáveis.

Use CDP local para desenvolvimento e ambientes de teste restritos. Use um plano de controle de navegador em nuvem autenticado quando as equipes precisarem de sessões isoladas, ciclo de vida gerenciado, roteamento regional ou trabalhadores remotos sem abrir uma porta de estação de trabalho. A página de preços do Scrapeless fornece o caminho atual para a execução do Navegador de Scraping.


Pronto para Mover Seu Fluxo de Trabalho CDP Para uma Sessão em Nuvem Isolada?

Junte-se à nossa comunidade para reivindicar um plano gratuito e conectar-se com desenvolvedores construindo fluxos de trabalho seguros de automação de navegador: Discord · Telegram.

Inscreva-se em app.scrapeless.com para obter gratuitamente a execução do Navegador de Scraping e conectar Puppeteer ou Playwright a um endpoint CDP em nuvem de curta duração.


FAQ

Q: A depuração remota do Chrome é segura?

A depuração remota do Chrome é segura apenas quando o endpoint é privado, de curta duração e anexado a um perfil isolado. Vincule ao loopback, use um diretório de dados do usuário não padrão, proteja a URL WebSocket e nunca exponha a porta 9222 publicamente.

Q: Raspagem através do CDP é legal?

O CDP é um protocolo de controle do navegador; a legalidade depende dos dados-alvo, método de acesso, jurisdição, termos e uso. Limite a coleta a dados públicos ou autorizados, respeite as regras do site e controles de acesso, minimize dados pessoais e consulte um advogado para projetos de alto risco.

Q: Preciso de um proxy para a depuração remota do Chrome?
O CDP local não requer um proxy, mas um destino pode precisar de um caminho de rede regional permitido. O Scrapeless Scraping Browser pode criar a sessão remota com um país de proxy documentado, de modo que o cliente CDP não opere uma camada de proxy separada.

Q: O que devo fazer quando a página mostrar uma tela de validação de tráfego?

Mantenha o destino e sua página inicial em uma sessão autorizada, fixe o país necessário, carregue a página inicial primeiro e, em seguida, navegue até a página pública de destino. Confirme o cabeçalho visível antes da extração e pare se a página exigir acesso privado ou uma ação fora da política do projeto.

Q: O que acontece quando o DOM ou os seletores mudam?

Reinspecione a página renderizada e aperte os seletores em torno de atributos estáveis, nomes acessíveis ou padrões de URL duráveis. Trate os campos ausentes como anuláveis até que o seletor atualizado passe em um teste de nível de conteúdo.

Q: Quanta concorrência um scraper CDP deve usar?

Comece com uma sessão isolada por trabalhador e aumente o trabalho paralelo somente após medir o tempo de carregamento da página, memória, limites de destino e taxas de aceitação no host real.

Q: Posso usar o CDP sem um agente baseado em modelo, e posso reutilizar sua URL WebSocket?

Puppeteer e Playwright podem usar o CDP diretamente sem um agente baseado em modelo. Os IDs WebSocket do navegador e da página são opacos e específicos da sessão, então descubra-os em tempo de execução e não reutilize um endpoint após o término da sessão do navegador.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo