Playwright avec des profils d'identité cohérents
Intégrez Playwright avec des profils cohérents, des routes proxy contrôlées et une automatisation sur plusieurs contextes.
Vous préférez la doc produit maintenue ?
Cet article a une page équivalente dans le centre de documentation. Utilisez les docs pour le flux canonique, les flags à jour et la référence durable.
Playwright et BotBrowser
Playwright fournit l'automatisation du navigateur, des attentes fiables et une API claire pour les parcours de page. BotBrowser ajoute une identité de navigateur fondée sur un profil pour les travaux autorisés de confidentialité et de compatibilité. Playwright gère la navigation et l'interaction, tandis que le profil choisi régit l'identité présentée par le navigateur.
L'intégration commence au lancement. L'installation, la politique proxy, la propriété des contextes, la zone d'affichage et le cycle de vie du processus doivent décrire le même déploiement. Les exemples suivants utilisent des parcours Playwright pris en charge et indiquent les points à vérifier avec les versions de production.
Impact sur la confidentialité : pourquoi Playwright + BotBrowser
L'automatisation standard peut exposer des caractéristiques de l'hôte qui sortent du périmètre de confidentialité prévu. Un navigateur fondé sur un profil permet de contrôler cette exposition dans un déploiement autorisé et de maintenir les caractéristiques associées pendant la session.
Playwright gère la navigation, les contrôles applicatifs et la logique d'interaction. BotBrowser maintient l'identité de famille de navigateur sélectionnée. Cette séparation garde la configuration de confidentialité hors des scripts de page et permet de suivre une affectation de profil examinée avec chaque processus ou parcours de contexte pris en charge.
Choix d'intégration
Pourquoi playwright-core et non playwright
Le paquet npm standard playwright inclut son propre binaire Chromium. Lorsque vous installez playwright, il télécharge et gère automatiquement les binaires du navigateur. Cette solution convient à un usage général, mais pas à BotBrowser, qui fournit son propre binaire Chromium modifié.
Le paquet playwright-core fournit la même API sans inclure de navigateur. Il vous demande de préciser un executablePath au lancement, ce qui permet d’indiquer à Playwright le chemin du binaire BotBrowser.
# Installer playwright-core, pas playwright
npm install playwright-core
Garder une configuration de lancement réduite
Indiquez à playwright-core l'exécutable BotBrowser et affectez le profil approuvé avant d'ouvrir une page. Gardez la version, le profil et le mode du navigateur visibles dans la configuration du déploiement. Une configuration réduite est plus facile à examiner, reproduire et rétablir.
Ajoutez une option uniquement lorsqu'elle répond à une exigence documentée de l'application. Conservez les secrets dans le système prévu par le déploiement et associez les versions de BotBrowser et Playwright au résultat de la tâche.
Contextes de navigateur dans Playwright
Le contexte Playwright définit une limite de session pour les cookies, le stockage, les autorisations et le cache. Utilisez-le pour séparer les comptes de test autorisés et les états de l'application. Attribuez un responsable clair à chaque contexte et fermez-le à la fin du test.
L'affectation du profil dépend du parcours BotBrowser pris en charge. Appliquez-la avant l'ouverture de la première page du contexte et conservez-la pendant toute la session.
Approches courantes et limites
Navigateur intégré
Le navigateur inclus avec Playwright convient à l'automatisation générale, mais il ne charge pas un paquet de profil BotBrowser. Utilisez playwright-core pour connecter la bibliothèque au binaire BotBrowser choisi pour le déploiement.
Modifications dans la page
Un script de page peut changer des valeurs isolées après la navigation, mais il ne fournit pas une identité cohérente entre le démarrage, les processus de travail, le rendu, les médias et le réseau. Conservez la configuration d'identité dans le profil du navigateur.
Builds privés
Maintenir une version privée de Chromium exige de suivre les publications, de préparer les paquets et d’assurer leur distribution sur chaque plateforme. BotBrowser fournit des binaires versionnés et les profils correspondants afin que l’application puisse se concentrer sur le parcours Playwright.
Approche de BotBrowser
BotBrowser se connecte avec l'option standard executablePath de Playwright. Le lancement nécessite playwright-core, un binaire BotBrowser et un paquet de profil correspondant. Les pages, contextes, navigations, captures et traces utilisent les API Playwright habituelles.
Chargez le profil au démarrage avant la première page. Pour Per-Context Fingerprint, appliquez le profil du contexte avant sa première page ou son premier processus de travail. Les parcours Context et Live pris en charge nécessitent ENT Tier3.
Configuration et utilisation
Prérequis
- Binaire BotBrowser (télécharger depuis GitHub)
- Un fichier de profil d'empreinte (format
.enc) - Node.js 18+
npm install playwright-core
Assurez-vous que le binaire BotBrowser a les permissions d'exécution :
chmod +x path/to/botbrowser/chrome
Lancement de base
const { chromium } = require('playwright-core');
(async () => {
const browser = await chromium.launch({
executablePath: 'path/to/botbrowser/chrome',
args: [
'--bot-profile=path/to/profile.enc',
],
headless: true,
});
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
// Votre logique d'automatisation ici
const title = await page.title();
console.log('Page title:', title);
await browser.close();
})();
Lancement headless et validation du profil
BotBrowser 150.0.7871.46 signale dans la sortie du terminal les profils absents, invalides, expirés ou incompatibles pendant un lancement headless. Chargez un paquet de profil correspondant avant la navigation et traitez un échec de validation comme un échec du processus.
Utilisez un répertoire de données distinct pour chaque processus et conservez son stderr. Commencez avec un petit groupe, confirmez l’ouverture normale des pages, puis augmentez la concurrence avec une file bornée. Fermez les pages, les contextes et le navigateur sur chaque chemin de sortie.
Profil + Proxy + Locale
Examinez le profil, la route réseau approuvée, la langue, le fuseau horaire et le compte applicatif comme une seule décision. Leurs hypothèses régionales doivent correspondre. Fournissez les identifiants par le gestionnaire de secrets et ne les placez pas dans les traces, captures ou sorties du terminal.
Contrôle de l'isolation des sessions
const browser = await chromium.launch({
executablePath: 'path/to/botbrowser/chrome',
args: [
'--bot-profile=path/to/profile.enc',
],
headless: true,
});
const context1 = await browser.newContext();
const context2 = await browser.newContext();
const page1 = await context1.newPage();
const page2 = await context2.newPage();
await page1.goto('https://staging.example.test/account-a');
await page2.goto('https://staging.example.test/account-b');
// Exécutez les assertions habituelles de chaque compte de test autorisé.
await context1.close();
await context2.close();
Utilisez votre propre application de préproduction et les assertions habituelles du produit. Confirmez la connexion, la déconnexion, le nettoyage du stockage, l'annulation et la fermeture du contexte. Ne collectez ni signaux du navigateur ni contenu inutile au test applicatif.
Interception réseau
const context = await browser.newContext();
const page = await context.newPage();
// Intercepter les requêtes requises par le test applicatif.
await page.route('**/*.png', route => route.abort());
await page.route('**/api/**', route => {
console.log('API request:', route.request().url());
route.continue();
});
await page.goto('https://example.com');
Gestion de la zone d’affichage
// Option 1 : laisser le profil contrôler la zone d’affichage (recommandé)
const browser = await chromium.launch({
executablePath: 'path/to/botbrowser/chrome',
args: [
'--bot-profile=path/to/profile.enc',
],
headless: true,
});
const context = await browser.newContext(); // Pas de dimensions imposées
// Option 2 : dimensions explicites (peuvent entrer en conflit avec les profils mobiles)
const context2 = await browser.newContext({
viewport: { width: 1920, height: 1080 },
});
Les profils mobiles doivent conserver la zone d’affichage définie par le profil. BotBrowser 150.0.7871.46 maintient l’alignement de la zone visible lorsqu’un clavier logiciel la réduit. Évitez d’imposer d’autres dimensions dans Playwright, sauf si le test l’exige.
Captures d'écran et PDF
const page = await context.newPage();
await page.goto('https://example.com');
// Capturez un artefact requis par le plan de test autorisé.
await page.screenshot({ path: 'screenshot.png', fullPage: true });
// Generation de PDF
await page.pdf({ path: 'page.pdf', format: 'A4' });
Validation
Commencez par une session de préproduction autorisée. Confirmez le lancement du navigateur, la première navigation, la capture et la fermeture sans erreur de profil ou de processus. Répétez avec le même profil et la même route réseau pour conserver une base comparable.
Pour les traitements par lots, enregistrez les erreurs de lancement, le statut de sortie du navigateur et le stderr de chaque processus. Gardez la même version du binaire, le même paquet de profil, la même politique proxy et les mêmes règles de zone d’affichage pendant la validation.
Garder la paire de versions explicite
Consignez ensemble la version de BotBrowser et le paquet Playwright. Épinglez-les dans le manifeste de déploiement et mettez-les à jour selon le processus habituel des dépendances. Vérifiez des pages internes ou autorisées représentatives de la production : navigation, interactions requises, assertions, captures utilisées par le job et fermeture ordonnée.
Traitez le navigateur, le paquet d'automatisation, le profil et l'image du système comme une unité traçable. Une équipe peut ainsi reproduire un résultat sans collecter de contenu de page sans rapport avec l'intégration.
Examiner une paire de versions candidate
Préparez la paire candidate sur la même classe d'hôte que le déploiement. Restaurez le fichier de verrouillage des dépendances, installez la version de BotBrowser retenue et utilisez le paquet de profil approuvé pour cette version. Avant de lancer la session, vérifiez que le chemin de l'exécutable, le mode de lancement, la politique réseau et la configuration de l'application correspondent au dossier de version. Un essai sur le poste de développement aide à préparer le changement, mais ne remplace pas le contrôle dans l'environnement d'exploitation prévu.
Exécutez la paire candidate sur un ensemble stable de pages appartenant à l'équipe. Conservez le même compte de test, les mêmes données applicatives, la même route et les mêmes assertions. Comparez les résultats visibles, notamment la navigation aboutie, les actions de formulaire, les documents produits et la fermeture ordonnée. Si un résultat attendu change, gardez la paire précédente pendant l'examen. Ne modifiez pas simultanément le navigateur, le paquet Playwright, le paquet de profil et le code applicatif, car les éléments recueillis ne permettraient pas d'identifier la partie à revoir.
Effectuer un contrôle avec une seule session
Commencez avec une session et un compte approuvé. Vérifiez le démarrage, la première page requise, l'action applicative, le nettoyage et la sortie du navigateur comme un seul cycle de vie. Avant de fermer le contexte, confirmez que le test a créé uniquement les cookies, le stockage, les permissions et les fichiers attendus par l'application. Ouvrez ensuite une nouvelle session et vérifiez que l'état du compte précédent est absent, sauf si sa persistance constitue une exigence explicite.
Testez également l'annulation et l'échec d'une assertion. Un travail annulé doit arrêter la nouvelle activité, fermer son contexte et libérer le navigateur selon la politique. Un échec applicatif doit conserver le relevé opérationnel minimal tout en suivant le même nettoyage. Ce contrôle établit une limite de session fiable avant l'ajout de travaux dans la file ou l'évaluation de la capacité.
Conserver les éléments de reprise
Conservez un relevé concis pour chaque paire acceptée. Inscrivez la version du navigateur, celle du paquet Playwright, la famille du paquet de profil, l'image du système, le groupe de déploiement, la date de validation et le résultat final. Indiquez si le démarrage, le parcours applicatif représentatif, le nettoyage de l'état, l'annulation et la fermeture ont réussi. Référencez la révision du test applicatif afin qu'un autre opérateur puisse reproduire le même contrôle autorisé.
Lorsqu'une paire candidate est rejetée, notez la première limite du cycle de vie non terminée et l'unité restaurée. Confirmez la paire restaurée avec le même contrôle à session unique avant de rouvrir la file. Ces éléments montrent ce qui a été déployé, ce que l'application a observé et quelle version connue a ramené le service à son état vérifié.
Propriété du processus et du contexte
Chaque processus doit avoir un propriétaire dans le cycle de vie applicatif. Ce composant le crée, affecte le profil et la route approuvés, observe le démarrage et le ferme après succès, annulation ou erreur. Un contexte appartient aussi à une limite précise de session et de stockage. Ne le rendez pas à un groupe général si le job suivant n'est pas autorisé à hériter de son état.
Les annulations exigent la même fermeture que les parcours réussis. Arrêtez le nouveau travail, fermez le contexte actif et libérez le navigateur selon la politique de déploiement. Notez si le nettoyage est terminé, car les processus oubliés finissent par apparaître comme une pression mémoire ou une réutilisation imprévue.
Alignement et observations
Examinez ensemble le profil et la route réseau. Les paramètres régionaux, le fuseau horaire et la région proxy doivent décrire le même environnement autorisé. Lors d'une rotation d'identifiants, gardez le profil et les pages de validation. Lors d'un changement de profil, gardez la route. Toute différence est alors plus simple à classer.
La télémétrie utile reste opérationnelle : fin du démarrage, disponibilité de la première page, durée, fermeture du contexte, statut de sortie, attente en file et identifiants de version. Les captures, vidéos, traces et archives réseau peuvent contenir des données privées. Activez-les uniquement pour un cas approuvé, avec accès et conservation définis, puis désactivez-les.
Mise à jour et retour
Déployez une nouvelle version sur un petit groupe et comparez-la à un groupe inchangé avec la même charge, le même profil, la même route et la même classe d'hôte. Si les assertions, la stabilité ou la fermeture s'écartent du plan, restaurez la paire précédente avant un autre changement.
Classez un échec selon la première limite observable non terminée : lancement, validation du profil, première navigation, assertion ou fermeture. Conservez la sortie normale et le statut, revenez à la dernière unité fonctionnelle et changez un seul composant par essai. Le dossier de support a besoin du groupe, du résultat observable, des versions, de l'action et de la validation finale, pas d'un historique complet des pages.
Notes de production
- Utilisez
playwright-core, pas le packageplaywrightcomplet. Le package complet télécharge son propre Chromium, dont vous n'avez pas besoin. - Utilisez des chemins absolus pour
--bot-profile. Les chemins relatifs peuvent être résolus de manière incorrecte selon le répertoire de travail. - N’imposez pas la zone d’affichage dans les contextes de navigateur, sauf si le test exige explicitement d’autres dimensions. Laissez le profil contrôler l’affichage dans les autres cas.
- Définissez
DISPLAY=:10.0lorsque vous exécutez sur des serveurs Linux, même en mode headless. - Gardez la propriété du profil explicite. Utilisez uniquement l'affectation prise en charge par le parcours BotBrowser choisi et appliquez-la avant la première page.
- Fermez les navigateurs lorsque vous avez terminé. Un travail non fermé continue de consommer la capacité de l'hôte.
- Gérez les erreurs de lancement. Vérifiez que le chemin du binaire est correct et que le binaire a les permissions d'exécution si le lancement échoue.
Questions fréquentes
Puis-je utiliser le paquet Playwright complet ?
Oui, mais il télécharge un autre navigateur inutile ici. playwright-core sépare la bibliothèque d'automatisation du binaire BotBrowser.
Faut-il des scripts de page pour l'identité ?
Non. Chargez un profil correspondant au lancement ou appliquez le profil Per-Context pris en charge avant la première cible.
Puis-je utiliser codegen ou inspector ?
Utilisez les outils de développement avec le même exécutable et la même configuration de profil que le projet. Alignez les versions de développement et de production.
Comment exécuter BotBrowser sur Ubuntu ?
Installez les bibliothèques requises par la version et suivez le guide Headless Server Setup. Choisissez le chemin graphique avec le guide Linux GPU Backend.
Puis-je utiliser un proxy par contexte ?
Oui. Les parcours proxy Context et Live nécessitent ENT Tier3. Appliquez le proxy et le profil avant la première page ou le premier processus de travail.
Combien de processus de travail puis-je lancer ?
Mesurez des pages représentatives sur l’hôte cible. Utilisez une file bornée, gardez une marge mémoire et vérifiez la fermeture complète avant d’augmenter la concurrence.
Les traces et captures fonctionnent-elles ?
Playwright propose ces fonctions lorsque la paire de versions et l'environnement retenus les prennent en charge. Vérifiez les artefacts requis par l'application, appliquez les règles d'accès et de conservation, puis incluez leur coût dans les mesures de capacité.
Puis-je utiliser TypeScript ?
Oui. playwright-core inclut les définitions TypeScript.
Étapes suivantes
Installez playwright-core, pointez executablePath vers le binaire BotBrowser et affectez le profil approuvé au lancement. Les interactions de page, l'interception réseau, les captures et les assertions utilisent les parcours Playwright pris en charge, selon les versions et l'environnement employés. Validez la paire de versions exacte avec la charge prévue avant le déploiement.
Pour des sujets connexes, consultez Premiers pas avec Puppeteer pour l'équivalent Puppeteer, Recettes CLI pour plus de combinaisons de paramètres, et Gestion des profils pour l'organisation des profils.
Articles Connexes
Faites passer BotBrowser de la recherche à la production
Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.