chromedevtools/débogage-des-cookies

Utilise Chrome DevTools MCP pour inspecter, déboguer et tester les cookies, l'état de session, les problèmes d'authentification et la conformité du consentement aux cookies. À utiliser pour diagnostiquer les erreurs 401/403, les redirections d'authentification, l'expiration de session, les problèmes d'en-tête Cookie/Set-Cookie, la conformité des bannières de consentement, ou les avertissements concernant les cookies tiers/SameSite/Partitionnés.

Qu'est-ce que débogage-des-cookies ?

Cette compétence, chromedevtools/débogage-des-cookies, exploite le protocole MCP de Chrome DevTools pour fournir un ensemble d'outils complet pour le débogage et l'audit des cookies directement dans le navigateur. Elle permet aux développeurs et agents IA de diagnostiquer les échecs d'authentification (401/403), de tester la conformité du consentement aux cookies, et d'auditer la sécurité des cookies, y compris les attributs SameSite et Partitionnés (CHIPS). La compétence fonctionne en orchestrant des appels aux outils DevTools tels que `list_network_requests`, `get_network_request`, `evaluate_script`, `new_page` avec `isolatedContext`, et `list_console_messages`. Elle prend en charge deux stratégies de session : l'onglet actif pour les sessions utilisateur en cours et un contexte isolé pour les tests vierges. En automatisant l'inspection des en-têtes de requête et de réponse, les appels API côté client, et les audits Lighthouse, elle permet des flux de travail précis pour identifier les cookies HttpOnly, les conflits de chemin/domaine, les problèmes de consentement des bannières, et les avertissements de cookies tiers. Son utilité réside dans le remplacement des vérifications manuelles répétitives par une approche structurée et automatisée, adaptée aux environnements de développement intégrés à un agent IA.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Concepts Fondamentaux

HttpOnly vs Stockage Côté Client

Les cookies marqués HttpOnly ne peuvent pas être consultés ou modifiés par JavaScript côté client (cookieStore ou document.cookie). Cependant, le navigateur attache automatiquement les cookies HttpOnly actifs aux en-têtes des requêtes HTTP sortantes (Cookie).

  • Pour inspecter les valeurs HttpOnly actuelles : Consultez l'en-tête de requête Cookie de toute requête HTTP sortante via get_network_request.
  • Pour inspecter comment les cookies ont été créés ou configurés : Consultez l'en-tête de réponse Set-Cookie des réponses de connexion ou d'authentification.
  • Pour inspecter les cookies non-HttpOnly : Utilisez evaluate_script avec l'API moderne cookieStore (async () => await cookieStore.getAll()).

Stratégie de Session : Onglet Actif vs Contexte Isolé

Choisissez l'environnement de session approprié pour éviter la contamination de l'état (par exemple, analytiques résiduelles ou jetons d'authentification) :

StratégieQuand l'utiliserMise en place / Nettoyage
Onglet Actif (Page Active)Diagnostiquer une session utilisateur active, une erreur 401/403 en direct, ou l'état actuel.Opère directement sur la page actuellement sélectionnée.
Page vierge (isolatedContext)Tester les bannières de consentement aux cookies, les premières visites, ou les garanties zéro-cookie.Appelez new_page avec un isolatedContext unique (ex: "consent-audit-1"). Une fois terminé, appelez close_page.

Capacités & Limitations Côté Client

ActionJavaScript Client (cookieStore / document.cookie)Outils DevTools Réseau & Contexte
Lire Non-HttpOnly✅ async () => await cookieStore.getAll()✅ get_network_request (Requête Cookie)
Lire HttpOnly❌ Bloqué par la sécurité du navigateur✅ get_network_request (Requête Cookie)
Inspecter les Attributs (Domain, Path, SameSite, Expires)✅ async () => await cookieStore.getAll()✅ get_network_request (Réponse Set-Cookie)
Modifier / Supprimer Non-HttpOnly✅ async () => await cookieStore.set(...)N/A
Modifier / Supprimer HttpOnly❌ Échec silencieux en JavaScript✅ Utilisez new_page(isolatedContext: ...) pour un état vierge

[!AVERTISSEMENT] Tenter d'effacer un cookie HttpOnly via JavaScript (cookieStore.delete ou document.cookie = "...; max-age=0") échouera silencieusement. Pour tester dans un état non authentifié ou vierge, créez toujours un nouveau contexte isolé en utilisant new_page avec isolatedContext.


Schémas de Travail

1. Diagnostiquer les Échecs d'Authentification & Redirections (401 / 403)

Lorsqu'une requête de page authentifiée échoue, retourne 401/403, ou redirige vers la connexion :

  1. Lister les Requêtes Récentes : Appelez list_network_requests avec includePreservedRequests: true.
  2. Trouver la Requête Cible : Localisez la requête en échec (401/403) ou la redirection (302/307).
  3. Inspecter l'En-tête Cookie Sortant : Appelez get_network_request avec le reqid.
    • Vérifiez si l'en-tête Cookie a été attaché et si les jetons requis (ex: SESSION_ID, auth_token) ont été envoyés.
  4. Déclencher une Inspection Active (si aucune requête récente n'existe) :
    • Si le cookie a été défini dans une session précédente et qu'aucun appel réseau n'est listé, déclenchez une requête :
      • Utilisez navigate_page avec reload: true, OU
      • Appelez evaluate_script avec () => fetch(window.location.href)
    • Ensuite, appelez get_network_request sur la nouvelle requête pour inspecter l'en-tête Cookie actif.
  5. Tracer la Requête de Définition : Si le cookie est manquant ou rejeté :
    • Vérifiez les réponses précédentes de connexion/établissement de liaison pour les directives Set-Cookie :
      • Incompatibilité de chemin : ex: Path=/api alors que la requête est vers /.
      • Incompatibilité de domaine : ex: Domain=api.example.com empêchant les cookies sur sub.example.com.
      • Drapeau Secure sur HTTP : Les cookies Secure ne sont jamais envoyés sur http:// non chiffré.
      • Blocage SameSite : Les cookies SameSite=Strict sont omis sur les navigations inter-sites.
      • Expiration : Vérifiez si Expires ou Max-Age ont expiré.

2. Test de Conformité de la Bannière de Cookies & Consentement

Pour vérifier qu'aucun cookie non essentiel ou de suivi n'est défini avant le consentement ou en cas de refus :

  1. Démarrer Propre : Ouvrez un nouveau contexte isolé avec un nom dédié :
    {"url": "<PAGE_URL>", "isolatedContext": "consent-test-1"}
    
  2. Enregistrer les Cookies de Base : Avant d'interagir avec la bannière, exécutez evaluate_script avec async () => await cookieStore.getAll().
  3. Inspecter les Requêtes Réseau Prématurées & Problèmes :
    • Appelez list_network_requests pour vous assurer qu'aucun beacon de suivi tiers n'a été déclenché avant le consentement.
    • Appelez list_console_messages avec types: ["issue"] pour vérifier les avertissements de suivi.
  4. Interagir avec la Bannière de Consentement :
    • Capturez un instantané avec take_snapshot pour localiser le uid du bouton "Refuser" ou "Tout Rejeter".
    • Cliquez sur le bouton avec click.
  5. Vérifier la Différence de Cookies :
    • Exécutez evaluate_script avec async () => await cookieStore.getAll() après le clic pour affirmer que seuls les cookies strictement nécessaires ou d'état de consentement existent.
  6. Tester la Révocation du Consentement (Audit du Cycle de Vie) :
    • Lors de l'audit du retrait du consentement ou des changements de préférences :
      • Localisez et cliquez sur le bouton "Paramètres des Cookies", "Gérer les Préférences", ou le déclencheur de confidentialité en pied de page (take_snapshot $\rightarrow$ click).
      • Désélectionnez les catégories non essentielles ou cliquez sur "Tout Révoquer" / "Enregistrer les Préférences".
      • Interrogez à nouveau cookieStore.getAll() pour vérifier que les cookies non essentiels précédemment acceptés ont été effacés ou ont expiré.
      • Appelez list_network_requests sur les actions suivantes pour vous assurer que les beacons de suivi ne sont plus déclenchés.
  7. Nettoyage du Contexte : Appelez close_page une fois l'audit terminé pour éviter que des cookies résiduels n'affectent les tâches suivantes.

3. Audit de la Sécurité des Cookies, SameSite & CHIPS (Cookies Partitionnés)

  1. Voie Rapide : Problèmes Natifs DevTools (Recommandé) :
    • Appelez list_console_messages avec :
      {
        "types": ["issue"],
        "includePreservedMessages": true
      }
      
    • Vérifiez les entrées CookieIssue, telles que :
      • SameSiteNoneInsecure : SameSite=None sans Secure.
      • ThirdPartyCookiePhaseout : Cookie tiers bloqué ou restreint.
      • SchemefulSameSite : Problèmes de cookies multi-schémas.
      • PartitionedCookies : Attributs de partitionnement CHIPS invalides.
  2. Audit Approfondi : Cookies Tiers Lighthouse :
    • Exécutez lighthouse_audit avec mode: "navigation" et outputDirPath: "/tmp/lh-report".
    • Extrayez l'audit spécifique des cookies sans charger le rapport complet dans le contexte :
      node -e "const r=require('/tmp/lh-report/report.json'); const a=r.audits['third-party-cookies']; console.log(JSON.stringify({score: a?.score, display
      

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.

Skills associés