chromedevtools/depuração-de-cookies

Usa o MCP do Chrome DevTools para inspecionar, depurar e testar cookies, estado de sessão, problemas de autenticação e conformidade com consentimento de cookies. Use ao diagnosticar erros 401/403, redirecionamentos de autenticação, expiração de sessão, problemas com cabeçalhos Cookie/Set-Cookie, conformidade com banners de consentimento ou avisos sobre cookies de terceiros/SameSite/Partitioned.

O que é depuração-de-cookies?

Esta skill capacita agentes de IA a realizar depuração avançada de cookies usando diretamente as ferramentas do Chrome DevTools através do protocolo MCP. Ela permite inspecionar cookies HttpOnly e não-HttpOnly, diagnosticar falhas de autenticação (401/403) analisando cabeçalhos de requisição e resposta, e realizar auditorias de conformidade de consentimento de cookies com contexto isolado para evitar contaminação de estado. Suporta fluxos de trabalho como teste de banners de consentimento, auditoria de segurança de cookies (SameSite, Secure, Partitioned) e verificação de atributos como Domain, Path e Expires. A skill é ideal para desenvolvedores que precisam entender o comportamento de cookies em cenários do mundo real, debugging de sessão e garantir conformidade com regulamentações de privacidade.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chromedevtools/chrome-devtools-mcp/tree/main/skills/cookie-debugging

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Conceitos Principais

HttpOnly vs Armazenamento do Lado do Cliente

Cookies marcados como HttpOnly não podem ser acessados ou modificados por JavaScript do lado do cliente (cookieStore ou document.cookie). No entanto, o navegador anexa automaticamente cookies HttpOnly ativos aos cabeçalhos de requisição HTTP de saída (Cookie).

  • Para inspecionar valores HttpOnly atuais: Veja o cabeçalho Cookie de qualquer requisição HTTP de saída via get_network_request.
  • Para inspecionar como os cookies foram criados ou configurados: Veja o cabeçalho Set-Cookie das respostas de login/auth.
  • Para inspecionar cookies não HttpOnly: Use evaluate_script com a API moderna cookieStore (async () => await cookieStore.getAll()).

Estratégia de Sessão: Aba Ativa vs Contexto Isolado

Escolha o ambiente de sessão correto para evitar contaminação de estado (ex.: tokens de análise ou autenticação residuais):

EstratégiaQuando UsarConfiguração / Encerramento
Aba Ativa (Página Ativa)Diagnosticando uma sessão de usuário ativa, erro 401/403 ao vivo ou estado atual.Opera diretamente na página atualmente selecionada.
Estado Limpo (isolatedContext)Testando banners de consentimento de cookies, primeiras visitas ou garantias de zero cookies.Chame new_page com um isolatedContext único (ex.: "consent-audit-1"). Ao finalizar, chame close_page.

Capacidades e Limitações do Lado do Cliente

AçãoJavaScript do Cliente (cookieStore / document.cookie)Ferramentas de Rede e Contexto do DevTools
Ler Não-HttpOnly✅ async () => await cookieStore.getAll()✅ get_network_request (Requisição Cookie)
Ler HttpOnly❌ Bloqueado pela segurança do navegador✅ get_network_request (Requisição Cookie)
Inspecionar Atributos (Domain, Path, SameSite, Expires)✅ async () => await cookieStore.getAll()✅ get_network_request (Resposta Set-Cookie)
Modificar / Excluir Não-HttpOnly✅ async () => await cookieStore.set(...)N/A
Modificar / Excluir HttpOnly❌ Falha silenciosa em JavaScript✅ Use new_page(isolatedContext: ...) para estado limpo

[!AVISO] Tentar limpar um cookie HttpOnly via JavaScript (cookieStore.delete ou document.cookie = "...; max-age=0") falhará silenciosamente. Para testar em um estado não autenticado ou limpo, sempre crie um novo contexto isolado usando new_page com isolatedContext.


Padrões de Fluxo de Trabalho

1. Diagnosticando Falhas de Autenticação e Redirecionamentos (401 / 403)

Quando uma requisição de página autenticada falha, retorna 401/403 ou redireciona para login:

  1. Listar Requisições Recentes: Chame list_network_requests com includePreservedRequests: true.
  2. Encontrar a Requisição Alvo: Localize a requisição com falha (401/403) ou redirecionamento (302/307).
  3. Inspecionar Cabeçalho Cookie de Saída: Chame get_network_request com o reqid.
    • Verifique se o cabeçalho Cookie foi anexado e se os tokens necessários (ex.: SESSION_ID, auth_token) foram enviados.
  4. Acionar Inspeção Ativa (Se não houver requisição recente) :
    • Se o cookie foi definido em uma sessão anterior e nenhuma chamada de rede está listada, acione uma requisição:
      • Use navigate_page com reload: true, OU
      • Chame evaluate_script com () => fetch(window.location.href)
    • Em seguida, chame get_network_request na nova requisição para inspecionar o cabeçalho Cookie ativo.
  5. Rastrear a Requisição de Definição: Se o cookie estiver ausente ou rejeitado:
    • Verifique as respostas de login/handshake anteriores por diretivas Set-Cookie:
      • Incompatibilidade de Path: ex.: Path=/api quando a requisição é para /.
      • Incompatibilidade de Domínio: ex.: Domain=api.example.com impedindo cookies em sub.example.com.
      • Flag Secure em HTTP: cookies Secure nunca são enviados sobre http:// não criptografado.
      • Bloqueio SameSite: cookies SameSite=Strict são omitidos em navegações entre sites.
      • Expiração: Verifique se Expires ou Max-Age expirou.

2. Teste de Banner de Consentimento e Conformidade de Cookies

Para verificar se nenhum cookie não essencial ou de rastreamento é definido antes do consentimento ou ao recusar:

  1. Iniciar Limpo: Abra um novo contexto isolado com um nome dedicado:
    {"url": "<PAGE_URL>", "isolatedContext": "consent-test-1"}
    
  2. Registrar Cookies de Base: Antes de interagir com o banner, execute evaluate_script com async () => await cookieStore.getAll().
  3. Inspecionar Requisições de Rede Prematuras e Problemas:
    • Chame list_network_requests para garantir que nenhum beacon de rastreamento de terceiros foi acionado antes do consentimento.
    • Chame list_console_messages com types: ["issue"] para verificar avisos de rastreamento.
  4. Interagir com Banner de Consentimento:
    • Capture um snapshot com take_snapshot para localizar o uid do botão "Recusar" ou "Rejeitar Todos".
    • Clique no botão com click.
  5. Verificar Diferença de Cookies:
    • Execute evaluate_script com async () => await cookieStore.getAll() após clicar para afirmar que apenas cookies estritamente necessários ou de estado de consentimento existem.
  6. Testar Revogação de Consentimento (Auditoria de Ciclo de Vida):
    • Ao auditar a retirada de consentimento ou mudanças de preferência:
      • Localize e clique no "Configurações de Cookie", "Gerenciar Preferências" ou no acionador de privacidade do rodapé (take_snapshot $\rightarrow$ click).
      • Desmarque categorias não essenciais ou clique em "Revogar Todos" / "Salvar Preferências".
      • Re-consulte cookieStore.getAll() para verificar se cookies não essenciais previamente aceitos foram limpos ou expirados.
      • Chame list_network_requests em ações subsequentes para garantir que beacons de rastreamento não sejam mais acionados.
  7. Encerrar Contexto: Chame close_page quando a auditoria estiver completa para evitar que cookies residuais afetem tarefas subsequentes.

3. Auditando Segurança de Cookies, SameSite e CHIPS (Cookies Particionados)

  1. Caminho Rápido: Problemas Nativos do DevTools (Recomendado):
    • Chame list_console_messages com:
      {
        "types": ["issue"],
        "includePreservedMessages": true
      }
      
    • Verifique entradas CookieIssue, como:
      • SameSiteNoneInsecure: SameSite=None sem Secure.
      • ThirdPartyCookiePhaseout: Cookie de terceiro bloqueado ou restrito.
      • SchemefulSameSite: Problemas de cookie entre esquemas.
      • PartitionedCookies: Atributos de particionamento CHIPS inválidos.
  2. Auditoria Profunda: Lighthouse Cookies de Terceiros:
    • Execute lighthouse_audit com mode: "navigation" e outputDirPath: "/tmp/lh-report".
    • Extraia a auditoria específica de cookies sem carregar o relatório completo no contexto:
      node -e "const r=require('/tmp/lh-report/report.json'); const a=r.audits['third-party-cookies']; console.log(JSON.stringify({score: a?.score, displayValue: a?.displayValue, details: a?.details}))"
      
    • Analise o resultado para identificar cookies de terceiros bloqueados e oportunidades de particionamento.

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

chromedevtools/a11y-debugging

Uses Chrome DevTools MCP for accessibility (a11y) debugging and auditing based on web.dev guidelines. Use when testing semantic HTML, ARIA labels, focus states, keyboard navigation, tap targets, and color contrast.

chromedevtools/chrome-devtools

Uses Chrome DevTools via MCP for efficient debugging, troubleshooting and browser automation. Use when debugging web pages, automating browser interactions, analyzing performance, or inspecting network requests. This skill does not apply to `--slim` mode (MCP configuration).

chromedevtools/chrome-devtools-cli

Use this skill to write shell scripts or run shell commands to automate tasks in the browser or otherwise use Chrome DevTools via CLI.

chromedevtools/debug-optimize-lcp

Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions "largest contentful paint", "page load speed", "CWV", or wants to improve how fast their hero image or main content renders.

chromedevtools/memory-leak-debugging

Diagnoses and resolves memory leaks in JavaScript/Node.js applications. Use when a user reports high memory usage, OOM errors, or wants to capture, compare, or inspect heap snapshots with Chrome DevTools MCP memory tools.

chromedevtools/troubleshooting

Uses Chrome DevTools MCP and documentation to troubleshoot connection and target issues. Trigger this skill when list_pages, new_page, or navigate_page fail, or when the server initialization fails.

Habilidades Relacionadas