---
title: "Évitez la détection des bots grâce à Playwright Stealth"
slug: avoid-bot-detection-with-playwright-stealth
date: 2024-02-20T15:51:47+00:00
modified: 2026-04-27T08:43:42+00:00
permalink: https://brightdata.fr/blog/savoir-faire/avoid-bot-detection-with-playwright-stealth
type: blog
---

[ Blog ](https://brightdata.fr/blog "Blog") / [How Tos](https://brightdata.fr/blog/savoir-faire)







 [How Tos](https://brightdata.fr/blog/savoir-faire)

# Évitez la détection des bots grâce à Playwright Stealth

Contournez la détection des bots avec le plug-in Playwright Stealth. Notre guide rapide vous explique comment intégrer Stealth à vos scripts Playwright, afin que votre automatisation Web reste fluide et indétectable.

 11 min de lecture









 ![](https://media.brightdata.fr/2024/02/Avoid-Bot-Detection-with-Playwright-Stealth.png)





Ce tutoriel Playwright Stealth abordera les sujets suivants :

- Qu’est-ce que la détection des bots et pourquoi elle est un problème pour Playwright.
- Explications concernant Playwright Stealth.
- Comment l’utiliser à la fois en Python et en JavaScript pour éviter d’être bloqué.

C’est parti !

## La détection des bots est la principale limitation de Playwright

[Playwright](https://playwright.dev/python/docs/intro) est l’une des bibliothèques Python les plus populaires pour l’automatisation des navigateurs. Dans le détail, elle est fiable et largement utilisée, car elle est développée et maintenue directement par Microsoft. Son API intuitive et de haut niveau permet de contrôler facilement les navigateurs avec ou sans affichage dans différents langages de programmation. Playwright est donc un excellent outil pour le développement de bots multinavigateurs et multiplateformes, les tests automatisés et le web scraping.

Playwright est l’une des bibliothèques Python les plus populaires pour l’automatisation des navigateurs. Dans le détail, elle est fiable et largement utilisée, car elle est développée et maintenue directement par Microsoft. Son API intuitive et de haut niveau permet de contrôler facilement les navigateurs avec ou sans affichage dans différents langages de programmation. Playwright est donc un excellent outil pour le développement de bots multinavigateurs et multiplateformes, les tests automatisés et le web scraping.

Le principal problème de la bibliothèque est qu’elle peut être facilement détectée et bloquée par les technologies anti-bot, en particulier lors de l’utilisation de [navigateurs en mode headless (sans affichage)](/blog/proxy-101/what-is-a-headless-browser). Comment est-ce possible ? Eh bien, Playwright modifie automatiquement la valeur des propriétés spéciales et des en-têtes lors du contrôle des navigateurs headless. Par exemple, il définit le paramètre `navigator.webdriver` de Chrome sur `true`.

Les solutions de détection de bots connaissent ces configurations et les analysent pour vérifier si l’utilisateur actuel est un humain ou un bot. Lorsque ces mécanismes détectent des paramètres suspects, ils classent l’utilisateur dans la catégorie des bots et le bloquent immédiatement.

Par exemple, envisagez [ce test de détection de bots](https://arh.antoinevastel.com/bots/areyouheadless) pour le mode headless. Visitez la page dans votre navigateur et vous verrez :

![Page Web affichant le message « Vous n’êtes pas Chrome headless »](https://media.brightdata.fr/2024/02/Headless-chrome-checker.png)Parfait, c’est le résultat auquel vous vous attendiez !

Maintenant, essayez de visiter la même page dans Playwright vanilla et extrayez la réponse de la page :

```none

import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        # launch the browser
        browser = await p.chromium.launch()
        # open a new page
        page = await browser.new_page()

        # visit the target page
        await page.goto("https://arh.antoinevastel.com/bots/areyouheadless")

        # extract the answer contained on the page
        answer_element = page.locator("#res")
        answer = await answer_element.text_content()

        # print the resulting answer
        print(f'The result is: "{answer}"')

        # close the browser and release its resources
        await browser.close()

asyncio.run(main())
```

Exécutez le programme Python et il affichera :

```none
The result is: "You are Chrome headless"
```

Cela signifie que la page de test d’automatisation des bots a pu détecter que la demande faite par votre script automatique provenait d’un navigateur headless.

En d’autres termes, Playwright est un outil limité qui peut être facilement bloqué par les technologies de détection des bots. Pour éviter cela, vous pouvez modifier manuellement les configurations par défaut et espérer réussir. Sinon, installez le plug-in Playwright Stealth !

## Plug-in Playwright Stealth : qu’est-ce que c’est et comment il fonctionne

`playwright-stealth` est un package Python qui étend Playwright en remplaçant des configurations spécifiques pour éviter la détection de bots. Playwright Stealth est un portage du package npm `<a href="https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth" rel="noreferrer noopener nofollow" target="_blank">puppeteer-extra-plugin-stealth</a>` qui utilise des [modules d’évasion intégrés](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth/evasions) pour éviter les fuites et modifier les propriétés qui exposent les navigateurs automatisés en tant que bots. Par exemple, il supprime la propriété `navigator.webdriver` et supprime « HeadlessChrome » de l’en-tête User-Agent défini par Chrome en mode headless par défaut.

L’objectif du plug-in Stealth est de permettre à une instance de navigateur headless automatisé de réussir tous les tests de détection de bots sur [sannysoft.com](https://bot.sannysoft.com/). Au moment de la rédaction du présent document, cet objectif était atteint. Cependant, [comme indiqué dans la documentation officielle](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth#status), il existe toujours des méthodes pour détecter les navigateurs headless. Donc, ce qui fonctionne aujourd’hui ne fonctionnera peut-être pas demain. Il n’est pas totalement possible de contourner tous les mécanismes de détection des bots, mais la bibliothèque vise à ce que ce processus constitue le meilleur défi possible.

## Comment utiliser Playwright Stealth pour éviter la détection de bots

Suivez les étapes ci-dessous pour apprendre à intégrer Playwright Stealth dans un script Python `playwright` afin d’éviter d’être bloqué.

### Étape 1 : configuration d’un projet Python Playwright

Avertissement : si vous avez déjà un projet Python [`Playwright`](https://github.com/microsoft/playwright-python) en place, vous pouvez ignorer cette étape.

Tout d’abord, assurez-vous que Python 3 est installé sur votre machine. Sinon, [téléchargez le programme d’installation](https://www.python.org/downloads/), exécutez-le et suivez-en les instructions.

Ensuite, utilisez les commandes ci-dessous pour configurer un projet Python appelé `playwright-demo` :

```none
mkdir playwright-demo
cd playwright-demo
```

Ces commandes créent le dossier `playwright-demo` et l’intègrent dans le terminal.

Initialisez un [environnement virtuel Python](https://docs.python.org/3/library/venv.html) et activez-le :

```none
python -m venv env
env/Scripts/activate
```

Lancez la commande suivante pour installer Playwright :

```none
pip install playwright
```

Cela peut prendre un certain temps, soyez patient.

Ensuite, installez les navigateurs requis avec :

```none
playwright install
```

Ouvrez le dossier du projet dans l’IDE Python de votre choix et créez un fichier `index.py`. Initialisez-le avec les lignes suivantes :

```none
import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()

        # browser automation logic...

        await browser.close()

asyncio.run(main())
```

Le script ci-dessus lance une instance de Chromium en mode headless, ouvre une nouvelle page et ferme enfin le navigateur. Voici à quoi ressemble un script Python Playwright de base.

Pour le faire fonctionner, exécutez :

```none
python index.py
```

Très bien, vous avez maintenant un projet Playwright prêt à être étendu avec le plug-in Stealth !

### Étape 2 : installation et utilisation du plug-in Stealth

Installez le plug-in Playwright Stealth avec :

```none
pip install playwright-stealth
```

Ouvrez votre fichier `index.py` et ajoutez l’importation ci-dessous à votre script Playwright :

```none
from playwright_stealth import stealth_async
```

Ou si vous utilisez l’API de synchronisation :

```none
from playwright_stealth import stealth_sync
```

Pour l’enregistrer dans Playwright, transmettez l’objet `page` à la fonction importée comme suit :

```none
await stealth_async(page)
```

Ou si vous utilisez l’API de synchronisation :

```none
stealth_async(page)
```

La fonction `stealth_async()` étendra `page` en remplaçant certaines configurations par défaut pour éviter la détection de bots.

Fantastique, n’est-ce pas ? Il ne reste plus qu’à visiter la page cible et à recommencer le test.

### Étape 3 : pour terminer

Intégrez le plug-in Stealth dans le script Playwright présenté au début de l’article :

```none
import asyncio
from playwright.async_api import async_playwright
from playwright_stealth import stealth_async
async def main():
    async with async_playwright() as p:
        # launch the browser
        browser = await p.chromium.launch()
        # open a new page
        page = await browser.new_page()

        # register the Playwright Stealth plugin
        await stealth_async(page)

        # visit the target page
        await page.goto("https://arh.antoinevastel.com/bots/areyouheadless")

        # extract the message contained on the page
        message_element = page.locator("#res")
        message = await message_element.text_content()

        # print the resulting message
        print(f'The result is: "{message}"')

        # close the browser and release its resources
        await browser.close()

asyncio.run(main())
```

Exécutez-la à nouveau, et cette fois, il affichera :

```none
The result is: "You are not Chrome headless"
```

Et voilà ! La page cible, dotée de fonctionnalités de détection des bots, ne peut plus signaler votre script automatisé Playwright comme étant un bot.

Bravo ! Vous maîtrisez désormais l’art de Playwright Stealth, et aucune technologie de détection de bots ne peut plus vous intimider.

## En extra : Playwright Stealth en JavaScript

Si vous êtes un utilisateur JavaScript Playwright et que vous souhaitez obtenir le même résultat, vous devez utiliser le package npm `puppeteer-extra-plugin-stealth`. Cela fonctionne à la fois pour [Puppeteer Extra](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra) et [Playwright Extra](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra). Si vous n’êtes pas familier avec ces projets, il s’agit essentiellement de versions améliorées des deux bibliothèques d’automatisation des navigateurs. Plus précisément, ils ajoutent des fonctionnalités d’extension via des plug-ins à Puppeteer et Playwright, respectivement.

Supposons donc que vous disposiez du script JavaScript Playwright suivant et que vous souhaitiez l’intégrer au plugin Stealth :

```none
import { chromium } from "playwright"

(async () => {
    // set up the browser and launch it
    const browser = await chromium.launch()
    // open a new blank page
    const page = await browser.newPage()

    // navigate the page to the target page
    await page.goto("https://arh.antoinevastel.com/bots/areyouheadless")

    // extract the message contained on the page
    const messageElement = page.locator('#res')
    const message = await messageElement.textContent()

    // print the resulting message
    console.log(`The result is: "${message}"`)

  // close the browser and release its resources
  await browser.close()
})()
```

Tout d’abord, installez `playwright-extra` et `puppeteer-extra-plugin-stealth` :

```none
npm install playwright-extra puppeteer-extra-plugin-stealth
```

Ensuite, importez `chromium` depuis `playwright-extra` au lieu de `playwright` et importez `StealthPlugin` depuis `puppeteer-extra-plugin-stealth` :

```none
import { chromium } from "playwright-extra"
import StealthPlugin from "puppeteer-extra-plugin-stealth"
```

Ensuite, enregistrez le plug-in Stealth avec :

```none
chromium.use(StealthPlugin())
```

Rassemblez le tout et vous obtiendrez :

```none
import { chromium } from "playwright-extra"
import StealthPlugin from "puppeteer-extra-plugin-stealth"

(async () => {
    // configure the Stealth plugin
    chromium.use(StealthPlugin())

    // set up the browser and launch it
    const browser = await chromium.launch()
    // open a new blank page
    const page = await browser.newPage()

    // navigate the page to the target page
    await page.goto("https://arh.antoinevastel.com/bots/areyouheadless")

    // extract the message contained on the page
    const messageElement = page.locator('#res')
    const message = await messageElement.textContent()

    // print the resulting message
    console.log(`The result is: "${message}"`)

    // close the browser and release its resources
    await browser.close()
})()
```

Génial ! Vous venez d’intégrer le plug-in Stealth à Playwright en JavaScript.

## Conclusion

Dans ce guide, vous avez compris pourquoi la détection des bots représente un défi pour Playwright et comment y remédier. Grâce à la bibliothèque Python Playwright Stealth, vous pouvez améliorer la configuration par défaut du navigateur pour contourner la détection des bots. Comme cela est prouvé ici, une approche similaire peut également être appliquée en JavaScript.

Quelle que soit la complexité du script d’automatisation de votre navigateur dans Playwright, les systèmes avancés de détection des bots poseront toujours un problème. Bien que vous puissiez envisager d’utiliser un autre package d’automatisation du navigateur, la cause première de la détection réside dans le navigateur, et non dans la bibliothèque elle-même. La solution réside dans un navigateur évolutif doté d’une fonctionnalité de contournement des bots qui s’intègre parfaitement à n’importe quelle bibliothèque d’automatisation de navigateur. Un tel navigateur existe et est connu sous le nom de [Scraping Browser](https://brightdata.fr/products/scraping-browser) !

Le Scraping Browser de Bright Data est un navigateur cloud hautement évolutif compatible avec Playwright, Puppeteer et Selenium. Il change automatiquement l’adresse IP de sortie à chaque requête et peut gérer les empreintes numériques du navigateur, les nouvelles tentatives automatiques et la [résolution CAPTCHA](https://brightdata.fr/products/web-unlocker/captcha-solver) pour vous. Ces prouesses sont possibles grâce aux fonctionnalités de déverrouillage basées sur un proxy sur lesquelles il repose.

Les proxys de Bright Data sont utilisés par des entreprises du Fortune 500 et par plus de 20 000 clients. Ce réseau mondial et fiable de proxys comprend :

- [Des proxys de datacenters](https://brightdata.fr/proxy-types/datacenter-proxies) : plus de 770 000 adresses IP de datacenters.
- [Des proxys résidentiels](https://brightdata.fr/proxy-types/residential-proxies) : plus de 72 millions d’adresses IP résidentielles dans plus de 195 pays.
- [Des proxys de FAI](https://brightdata.fr/proxy-types/isp-proxies) : plus de 700 000 adresses IP de FAI.
- [Des proxys mobiles](https://brightdata.fr/proxy-types) : plus de 7 millions d’adresses IP mobiles.

Contacter ventesEssai gratuit![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Table des matières







Dedicated Scraper APIs &amp; No-Code Scrapers

Over 1000 scrapers for all popular domains. Simplify your web scraping.

[See pricing](/pricing/web-scraper "See pricing")

Just want data? Skip scraping.

Hundreds of ready-to-use datasets from all popular domains.

[See pricing](/pricing/datasets "See pricing")







 [ ](https://news.ycombinator.com/submitlink?t=%C3%89vitez+la+d%C3%A9tection+des+bots+gr%C3%A2ce+%C3%A0+Playwright+Stealth&u=https://brightdata.fr/blog/savoir-faire/avoid-bot-detection-with-playwright-stealth) [ ](https://www.linkedin.com/shareArticle?mini=true&title=%C3%89vitez+la+d%C3%A9tection+des+bots+gr%C3%A2ce+%C3%A0+Playwright+Stealth&url=https://brightdata.fr/blog/savoir-faire/avoid-bot-detection-with-playwright-stealth) [ ](http://www.reddit.com/submit?title=%C3%89vitez+la+d%C3%A9tection+des+bots+gr%C3%A2ce+%C3%A0+Playwright+Stealth&url=https://brightdata.fr/blog/savoir-faire/avoid-bot-detection-with-playwright-stealth)







##  Vous pourriez aussi être intéressé par

 [ ![Avoid Getting Blocked With Puppeteer Stealth](https://media.brightdata.fr/2023/12/Avoid-Getting-Blocked-With-Puppeteer-Stealth.svg) ](https://brightdata.fr/blog/savoir-faire/avoid-getting-blocked-with-puppeteer-stealth "Évitez de vous retrouver bloqué avec Puppeteer Stealth")

 [How Tos



 ![Antonello Zanini](https://media.brightdata.fr/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Évitez de vous retrouver bloqué avec Puppeteer Stealth

Apprenez à intégrer Puppeteer Stealth dans un script de scraping Puppeteer pour éviter de vous faire bloquer.



 05-Dec-2023

 9 min de lecture

 ](https://brightdata.fr/blog/savoir-faire/avoid-getting-blocked-with-puppeteer-stealth)

 [ ](https://brightdata.fr/blog/donnees-web/web-scraping-without-getting-blocked "Scraping web sans être bloqué : 12 techniques éprouvées")

 [Données Web



 ![](https://media.brightdata.fr/2023/05/Michael-Nyamande-50x50.png)

Michael Nyamande





### Scraping web sans être bloqué : 12 techniques éprouvées

Tutoriel sur la manière de scraper des sites web sans être bloqué. Découvrez 12 solutions différentes pour contourner les blocages de scraping de sites web.



 18-Jun-2023

 28 min de lecture

 ](https://brightdata.fr/blog/donnees-web/web-scraping-without-getting-blocked)

 [ ![Guide on How to Bypass an IP Ban](https://media.brightdata.fr/2022/08/Guide-on-How-to-Bypass-an-IP-Ban.png) ](https://brightdata.fr/blog/abc-du-proxy/how-to-bypass-an-ip-ban "Comment contourner un bannissement IP : 7 méthodes éprouvées (Guide 2026)")

 [Proxy 101









### Comment contourner un bannissement IP : 7 méthodes éprouvées (Guide 2026)

Découvrez 7 méthodes éprouvées pour contourner les bannissements IP, des proxys résidentiels (95-99% de succès) aux VPN et à la rotation d’IP.



 11-Aug-2022

 30 min de lecture

 ](https://brightdata.fr/blog/abc-du-proxy/how-to-bypass-an-ip-ban)
