Gestion des cookies dans Puppeteer : préservation de session, émulation d'authentification et limitations
Maîtrisez la gestion des cookies dans Puppeteer pour la persistance des sessions et l'authentification, tout en connaissant ses limitations et ses bonnes pratiques.

Vous souhaitez rationaliser la gestion des sessions et les tests d'authentification avec Marionnettiste? Voici ce que vous devez savoir pour gérer efficacement les cookies :
- Pourquoi les cookies sont importants : Ils stockent les données de session, les préférences et les informations de connexion.
- Ce que tu peux faire: Enregistrez des sessions, testez l'authentification, gérez les états et imitez même le comportement réel des utilisateurs.
- Comment gérer: Puppeteer vous permet de définir, d'obtenir et de supprimer des cookies par programmation.
- Défis à surveiller : Risques de sécurité, limitations du navigateur et gestion du cycle de vie des cookies.
Caractéristiques principales:
- Persistance de la session : Enregistrez et rechargez les cookies pour conserver les états de connexion.
- Automatisation de l'authentification : Utilisez des cookies pour contourner les étapes de connexion répétitives.
- Cas d'utilisation pratiques : Automatisez les paniers d'achat, testez les rôles des utilisateurs et bien plus encore.
Petit conseil: Enregistrez les cookies au format JSON, utilisez des contextes de navigateur distincts et surveillez les dates d'expiration pour éviter les problèmes.
Découvrez comment définir, récupérer et sécuriser les cookies dans Puppeteer tout en tenant compte de ses limites.
Notions de base sur les cookies Marionnettiste
Principes fondamentaux des cookies
Les cookies servent à stocker des informations d'état lors des interactions. Dans Puppeteer, ils fonctionnent comme des cookies web classiques, mais sont gérés par programmation à l'aide de méthodes spécifiques, au niveau de la page et du navigateur.
Lorsqu'un site web installe un cookie, celui-ci est automatiquement inclus dans les en-têtes des futures requêtes adressées à ce site, garantissant ainsi la continuité de la session. Puppeteer propose deux méthodes principales pour gérer les cookies :
| Méthode | Interet | Domaine |
|---|---|---|
| page.cookies() | Récupère les cookies de la page actuelle | Spécifique à la page |
| page.setCookie() | Définit les cookies avant la navigation sur la page | Spécifique à la page |
| contexte.addCookies() | Définit des cookies pour plusieurs pages | Contexte du navigateur |
En comprenant ces méthodes, vous pouvez gérer efficacement les cookies, qu'il s'agisse de les définir, de les récupérer ou de les supprimer.
Propriétés des cookies
Les cookies sont dotés de plusieurs attributs qui définissent leur comportement et leurs paramètres de sécurité :
| Propriétés | Description | Exemple d'utilisation |
|---|---|---|
| Nom | Identifiant du cookie | ID de session |
| Valeur | Données stockées dans le cookie | jeton utilisateur123 |
| Domaine | Domaine où le cookie est valide | .example.com |
| Chemin | Chemin URL du cookie | /tableau de bord |
| Expire le | Date et heure d'expiration | 03/30/2025 12h00 HNE |
| Sécurisés | Limite l'utilisation aux connexions HTTPS | vrai ou faux |
| HttpOnly | Restreint l'accès au côté serveur uniquement | vrai ou faux |
| MêmeSite | Contrôle le comportement intersite | Strict, laxiste ou aucun |
Les cookies dans Puppeteer peuvent être conservés jusqu'à leur expiration ou uniquement le temps de la session de navigation en cours. De plus, les cookies définis dans un contexte de navigateur ne sont pas partagés avec un autre, garantissant ainsi l'isolation entre les tâches.
Pour les meilleures pratiques :
- Enregistrez les cookies au format JSON pour une réutilisation facile.
- Actualisez régulièrement les cookies pour éviter les problèmes d'expiration.
- Utilisez des contextes de navigateur distincts pour différentes tâches d’automatisation.
- Gardez un œil sur la taille des cookies pour éviter les limites de stockage.
Ensuite, apprenez à gérer ces cookies par programmation dans Puppeteer.
Tutoriel NodeJS Puppeteer n° 9 : Enregistrer et réutiliser les cookies
Gestion des cookies dans Puppeteer
Apprenez à gérer les cookies dans Puppeteer grâce à ces méthodes pratiques. Ces techniques sont essentielles à la gestion des données de session et de l'authentification, qui seront approfondies dans les tâches connexes.
Paramétrage des cookies
Utilisez le page.setCookie() Pour définir un ou plusieurs cookies. Cela permet de maintenir efficacement l'état de la session. Voici comment procéder :
<span class="hljs-comment">// Setting a single cookie</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setCookie</span>({
<span class="hljs-attr">name</span>: <span class="hljs-string">'sessionToken'</span>,
<span class="hljs-attr">value</span>: <span class="hljs-string">'abc123xyz'</span>,
<span class="hljs-attr">domain</span>: <span class="hljs-string">'.example.com'</span>,
<span class="hljs-attr">path</span>: <span class="hljs-string">'/'</span>,
<span class="hljs-attr">expires</span>: <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">floor</span>(<span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>() / <span class="hljs-number">1000</span>) + <span class="hljs-number">3600</span>, <span class="hljs-comment">// 1 hour from now</span>
<span class="hljs-attr">httpOnly</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">secure</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">sameSite</span>: <span class="hljs-string">'Strict'</span>
});
<span class="hljs-comment">// Setting multiple cookies</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setCookie</span>([
{
<span class="hljs-attr">name</span>: <span class="hljs-string">'userPrefs'</span>,
<span class="hljs-attr">value</span>: <span class="hljs-string">'darkMode'</span>,
<span class="hljs-attr">domain</span>: <span class="hljs-string">'.example.com'</span>
},
{
<span class="hljs-attr">name</span>: <span class="hljs-string">'language'</span>,
<span class="hljs-attr">value</span>: <span class="hljs-string">'en-US'</span>,
<span class="hljs-attr">domain</span>: <span class="hljs-string">'.example.com'</span>
}
]);
Paramètres clés des cookies à garder à l’esprit :
| Paramètre | Requis | Description |
|---|---|---|
| Le nom | Oui | L'identifiant du cookie |
| La valeur | Oui | Données stockées dans le cookie |
| domaine | Oui | Le domaine auquel il s'applique |
| chemin | Non | Chemin d'URL auquel il s'applique |
| expire | Non | Horodatage d'expiration |
| http uniquement | Non | Limite l'utilisation du serveur |
| sécurisée | Non | Nécessite HTTPS |
Obtenir des cookies
Récupérer les cookies avec le page.cookies() Méthode. Vous pouvez récupérer tous les cookies ou vous concentrer sur un domaine spécifique :
<span class="hljs-comment">// Get all cookies</span>
<span class="hljs-keyword">const</span> allCookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-comment">// Get cookies for a specific domain</span>
<span class="hljs-keyword">const</span> domainCookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>(<span class="hljs-string">'https://example.com'</span>);
Pour extraire la valeur d'un cookie spécifique, utilisez une fonction d'assistance comme celle-ci :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">getCookieValue</span>(<span class="hljs-params">page, cookieName</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">const</span> targetCookie = cookies.<span class="hljs-title function_">find</span>(<span class="hljs-function"><span class="hljs-params">cookie</span> =></span> cookie.<span class="hljs-property">name</span> === cookieName);
<span class="hljs-keyword">return</span> targetCookie ? targetCookie.<span class="hljs-property">value</span> : <span class="hljs-literal">null</span>;
}
Suppression des cookies
Vous pouvez supprimer les cookies individuellement ou en masse :
<span class="hljs-comment">// Remove a specific cookie</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">deleteCookie</span>({
<span class="hljs-attr">name</span>: <span class="hljs-string">'sessionToken'</span>,
<span class="hljs-attr">domain</span>: <span class="hljs-string">'.example.com'</span>
});
<span class="hljs-comment">// Clear all cookies</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">deleteCookie</span>(...<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>());
Pour une maintenance continue, pensez à automatiser la suppression des cookies expirés :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">cleanupExpiredCookies</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">const</span> now = <span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>() / <span class="hljs-number">1000</span>;
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> cookie <span class="hljs-keyword">of</span> cookies) {
<span class="hljs-keyword">if</span> (cookie.<span class="hljs-property">expires</span> && cookie.<span class="hljs-property">expires</span> < now) {
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">deleteCookie</span>({
<span class="hljs-attr">name</span>: cookie.<span class="hljs-property">name</span>,
<span class="hljs-attr">domain</span>: cookie.<span class="hljs-property">domain</span>
});
}
}
}
Toujours utiliser await avec des opérations de cookies pour assurer une exécution correcte et éviter les conditions de course.
sbb-itb-23997f1
Gestion de session
Stockage et récupération des cookies
Pour maintenir la persistance des sessions, vous pouvez enregistrer les cookies dans un fichier JSON et les recharger si nécessaire. Voici une méthode pratique :
<span class="hljs-keyword">const</span> fs = <span class="hljs-built_in">require</span>(<span class="hljs-string">'fs'</span>);
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">saveCookies</span>(<span class="hljs-params">page, filePath</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
fs.<span class="hljs-title function_">writeFileSync</span>(filePath, <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">stringify</span>(cookies, <span class="hljs-literal">null</span>, <span class="hljs-number">2</span>));
}
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">loadCookies</span>(<span class="hljs-params">page, filePath</span>) {
<span class="hljs-keyword">const</span> cookieData = fs.<span class="hljs-title function_">readFileSync</span>(filePath);
<span class="hljs-keyword">const</span> cookies = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">parse</span>(cookieData);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setCookie</span>(...cookies);
}
Considérations clés:
- Mettre à jour les cookies après des actions critiques.
- Validez le fichier avant de charger les cookies.
- Stockez le fichier dans un endroit sûr.
- Vérifiez régulièrement l'intégrité du fichier.
Gestion de l'état de session
Pour aller plus loin dans la gestion des cookies, la gestion active des sessions garantit la validité de l'authentification des utilisateurs. Voici comment gérer efficacement les sessions :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">manageSession</span>(<span class="hljs-params">page, cookiePath</span>) {
<span class="hljs-keyword">let</span> sessionValid = <span class="hljs-literal">false</span>;
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">if</span> (fs.<span class="hljs-title function_">existsSync</span>(cookiePath)) {
<span class="hljs-keyword">await</span> <span class="hljs-title function_">loadCookies</span>(page, cookiePath);
sessionValid = <span class="hljs-keyword">await</span> <span class="hljs-title function_">validateSession</span>(page);
}
<span class="hljs-keyword">if</span> (!sessionValid) {
<span class="hljs-keyword">await</span> <span class="hljs-title function_">performAuthentication</span>(page);
<span class="hljs-keyword">await</span> <span class="hljs-title function_">saveCookies</span>(page, cookiePath);
}
} <span class="hljs-keyword">catch</span> (error) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">'Session management error:'</span>, error);
}
}
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">validateSession</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">return</span> cookies.<span class="hljs-title function_">some</span>(<span class="hljs-function"><span class="hljs-params">cookie</span> =></span>
cookie.<span class="hljs-property">name</span> === <span class="hljs-string">'sessionToken'</span> &&
cookie.<span class="hljs-property">expires</span> > (<span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>() / <span class="hljs-number">1000</span>)
);
}
Bonnes pratiques pour la gestion des sessions :
- Gardez une trace des délais d’expiration des cookies.
- Gérez les interruptions de session inattendues avec élégance.
- Stockez les cookies en toute sécurité pour empêcher tout accès non autorisé.
- Utilisez des contextes de navigateur distincts pour différentes tâches.
Pour les sessions de longue durée, pensez à les diviser en segments plus petits avec des ensembles de cookies distincts pour améliorer la fiabilité et réduire les problèmes potentiels.
Authentification avec cookies
Les cookies peuvent simplifier et sécuriser le processus d’authentification lorsqu’ils sont associés à des techniques de gestion de session.
Automatisation de la connexion
Gagnez du temps en utilisant des cookies pour stocker et réutiliser les jetons d'authentification, évitant ainsi de remplir plusieurs fois les formulaires de connexion. Voici un exemple :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">handleLogin</span>(<span class="hljs-params">page, cookiePath</span>) {
<span class="hljs-keyword">const</span> authenticationStatus = <span class="hljs-keyword">await</span> <span class="hljs-title function_">validateAuthStatus</span>(page);
<span class="hljs-keyword">if</span> (!authenticationStatus.<span class="hljs-property">isValid</span>) {
<span class="hljs-keyword">await</span> <span class="hljs-title function_">performLogin</span>(page);
<span class="hljs-keyword">await</span> <span class="hljs-title function_">saveCookiesToFile</span>(page, cookiePath);
}
}
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">validateAuthStatus</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">return</span> {
<span class="hljs-attr">isValid</span>: cookies.<span class="hljs-title function_">some</span>(<span class="hljs-function"><span class="hljs-params">cookie</span> =></span>
cookie.<span class="hljs-property">name</span> === <span class="hljs-string">'authToken'</span> &&
cookie.<span class="hljs-property">expires</span> > (<span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>() / <span class="hljs-number">1000</span>)
)
};
}
Une fois l’authentification de base établie, vous pouvez intégrer l’authentification multifacteur pour plus de sécurité.
Authentification multi-facteurs
La gestion de l'authentification multifacteur (AMF) avec cookies implique le suivi des états de vérification. Voici comment procéder :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">handleMFAAuthentication</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForSelector</span>(<span class="hljs-string">'#mfa-input'</span>);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">type</span>(<span class="hljs-string">'#mfa-input'</span>, <span class="hljs-title function_">getMFAToken</span>()); <span class="hljs-comment">// Replace with your MFA token provider</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">click</span>(<span class="hljs-string">'#verify-button'</span>);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForNavigation</span>();
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">return</span> cookies.<span class="hljs-title function_">some</span>(<span class="hljs-function"><span class="hljs-params">c</span> =></span> c.<span class="hljs-property">name</span> === <span class="hljs-string">'mfa_verified'</span>);
} <span class="hljs-keyword">catch</span> (error) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">'MFA verification failed:'</span>, error);
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}
}
Renforcez ces processus en suivant les pratiques de sécurité clés.
Meilleures pratiques de sécurité
Pour garantir une gestion sécurisée des cookies d’authentification, tenez compte des mesures suivantes :
| Mesure de sécurité | Mise en œuvre |
|---|---|
| Expiration des cookies | Surveillez l'attribut d'expiration et actualisez les jetons avant leur expiration. |
| Isolation de domaine | Utilisez des contextes de navigateur distincts pour différents domaines d’authentification. |
| Transport sécurisé | Activez l'option « Sécurisé » pour limiter la transmission des cookies au protocole HTTPS uniquement. |
| Contrôle d'Accès | Utilisez l'indicateur HttpOnly pour empêcher les scripts côté client d'accéder aux cookies. |
| Stratégie de sauvegarde | Créez des sauvegardes des cookies avant d'effectuer des modifications. |
Voici un exemple de sécurisation programmatique des cookies d'authentification :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">secureAuthCookies</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">return</span> cookies.<span class="hljs-title function_">map</span>(<span class="hljs-function"><span class="hljs-params">cookie</span> =></span> ({
...cookie,
<span class="hljs-attr">secure</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">httpOnly</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">sameSite</span>: <span class="hljs-string">'Strict'</span>
}));
}
Pour maintenir des états d’authentification sécurisés, concentrez-vous sur ces pratiques :
- Mettez régulièrement à jour les jetons d’authentification.
- Gérer correctement les erreurs d’authentification.
- Surveillez les domaines de cookies pour détecter les modifications non autorisées.
- Utilisez des chaînes d’agent utilisateur réalistes pour éviter la détection.
Limites connues
Lorsque vous utilisez Puppeteer pour la gestion des cookies, il existe des contraintes importantes à prendre en compte. Les comprendre vous aidera à mieux planifier et à éviter les problèmes potentiels.
Restrictions du navigateur
Puppeteer hérite de certaines limitations liées aux mesures de sécurité des navigateurs, ce qui peut affecter la gestion des cookies. Par exemple, il n'existe aucun événement intégré pour détecter les modifications de cookies ; des vérifications manuelles sont donc nécessaires.
| Restriction | Impact | Solution |
|---|---|---|
| Aucun événement de modification de cookie | Impossible de détecter automatiquement les modifications des cookies | Configurer des contrôles périodiques pour surveiller l'état des cookies |
| Isolation du contexte | Les cookies dans un contexte de navigateur ne sont pas accessibles dans un autre | Créer des systèmes de gestion des cookies distincts pour chaque contexte |
| Opérations asynchrones | Des conditions de course peuvent survenir lors de la gestion des cookies | Utilisez async/await avec une gestion des erreurs appropriée. |
| Aucune sauvegarde intégrée | Aucun moyen natif de sauvegarder les cookies | Sauvegarder manuellement les cookies si nécessaire |
Ces contraintes rendent indispensable la mise en œuvre de pratiques de gestion des cookies rigoureuses.
Limites d'accès au domaine
Un autre défi réside dans la gestion des cookies entre domaines ou sous-domaines. Une configuration incorrecte des attributs de domaine peut entraîner des problèmes d'authentification. Voici un exemple de validation des cookies pour un domaine spécifique :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">validateDomainCookies</span>(<span class="hljs-params">page, targetDomain</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">return</span> cookies.<span class="hljs-title function_">filter</span>(<span class="hljs-function"><span class="hljs-params">cookie</span> =></span> {
<span class="hljs-keyword">const</span> cookieDomain = cookie.<span class="hljs-property">domain</span>.<span class="hljs-title function_">startsWith</span>(<span class="hljs-string">'.'</span>) ?
cookie.<span class="hljs-property">domain</span>.<span class="hljs-title function_">slice</span>(<span class="hljs-number">1</span>) : cookie.<span class="hljs-property">domain</span>;
<span class="hljs-keyword">return</span> cookieDomain === targetDomain;
});
}
Défis du cycle de vie des cookies
La gestion du cycle de vie des cookies est essentielle pour maintenir la stabilité des sessions et éviter les interruptions. Voici quelques stratégies pour gérer les problèmes courants liés au cycle de vie :
1. Gestion des expirations
Surveillez les dates d’expiration des cookies et actualisez-les avant leur expiration :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">handleCookieExpiration</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">const</span> currentTime = <span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>() / <span class="hljs-number">1000</span>;
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> cookie <span class="hljs-keyword">of</span> cookies) {
<span class="hljs-keyword">if</span> (cookie.<span class="hljs-property">expires</span> && cookie.<span class="hljs-property">expires</span> - currentTime < <span class="hljs-number">300</span>) {
<span class="hljs-keyword">await</span> <span class="hljs-title function_">refreshCookie</span>(page, cookie);
}
}
}
2. Nettoyage des cookies
Nettoyez régulièrement les cookies obsolètes pour garantir des performances optimales et éviter les erreurs de session :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">performCookieCleanup</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">const</span> cookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">const</span> outdatedCookies = cookies.<span class="hljs-title function_">filter</span>(<span class="hljs-function"><span class="hljs-params">cookie</span> =></span>
cookie.<span class="hljs-property">expires</span> && (cookie.<span class="hljs-property">expires</span> < <span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>() / <span class="hljs-number">1000</span>)
);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">deleteCookies</span>(...outdatedCookies);
} <span class="hljs-keyword">catch</span> (error) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">'Cookie cleanup failed:'</span>, error);
}
}
3. Récupération de l'État
La récupération de l'état des cookies est essentielle pour maintenir des sessions ininterrompues. Voici comment restaurer les cookies à partir d'une sauvegarde :
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">recoverCookieState</span>(<span class="hljs-params">page, backupPath</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">const</span> currentCookies = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">cookies</span>();
<span class="hljs-keyword">if</span> (<span class="hljs-title function_">invalidCookieState</span>(currentCookies)) {
<span class="hljs-keyword">const</span> backupCookies = <span class="hljs-keyword">await</span> <span class="hljs-title function_">loadCookiesFromBackup</span>(backupPath);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setCookie</span>(...backupCookies);
}
} <span class="hljs-keyword">catch</span> (error) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">'State recovery failed:'</span>, error);
}
}
Résumé
Exploitez pleinement la gestion des cookies de Puppeteer en comprenant ses atouts et ses limites. Une gestion adéquate des cookies est essentielle pour maintenir des sessions persistantes, garantir une authentification fiable et optimiser les processus d'automatisation.
Voici un aperçu rapide des aspects essentiels et des pratiques recommandées pour gérer efficacement les cookies :
| Aspect | Best Practice | Pourquoi ça compte |
|---|---|---|
| Persistance de la session | Enregistrer les cookies dans des fichiers JSON | Conserve l'état de la session entre les exécutions |
| Mises à jour des cookies | Surveiller les dates d'expiration | Évite les expirations de session inattendues |
| Contextes du navigateur | Utiliser des contextes distincts | Améliore l'isolement et la sécurité |
| Gestion des erreurs | Ajouter des blocs try-catch | Gère les erreurs liées aux cookies en douceur |
Pour assurer le succès :
- Vérifiez régulièrement la validité des cookies et suivez leur cycle de vie.
- Crypter les cookies stockés pour les garder en sécurité.
- Suivez les protocoles de traitement sécurisés pour protéger les données sensibles.
Lors du lancement de Puppeteer, utilisez le userDataDir Possibilité de conserver les données de session entre les exécutions. L'intégration de mécanismes de gestion des erreurs et de mesures de sécurité vous aidera à créer des workflows d'automatisation stables et efficaces, garantissant une authentification cohérente.
articles similaires
- Installation et configuration de Puppeteer : résolution des problèmes courants de dépendance et de Chromium
- Automatisation du navigateur avec Puppeteer et JavaScript : mise en œuvre pratique dans Node.js
- Gestion des agents utilisateurs dans Puppeteer pour l'émulation de périphériques
- Configuration du proxy dans Puppeteer : techniques d'authentification, de rotation et de contournement



