---
title: "Guide pour User-Agent dans Selenium : paramétrage et modification"
slug: user-agent-selenium
date: 2024-06-09T06:45:58+00:00
modified: 2025-11-04T08:55:23+00:00
permalink: https://brightdata.fr/blog/donnees-web/user-agent-selenium
type: blog
---

[ Blog ](https://brightdata.fr/blog "Blog") / [Données Web](https://brightdata.fr/blog/donnees-web)







 [Données Web](https://brightdata.fr/blog/donnees-web)

# Guide pour User-Agent dans Selenium : paramétrage et modification

Apprenez à définir et à provoquer la rotation des en-têtes User-Agent dans Selenium pour améliorer vos capacités de web scraping et contourner les mesures anti-bot.

 12 min de lecture





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

 [Antonello Zanini

Technical Writer

 ](https://brightdata.com/blog/authors/antonello-zanini)





 ![Selenium User Agent Guide Setting and Changing](https://media.brightdata.fr/2024/06/Selenium-User-Agent-Guide_-Setting-and-Changing.svg)





Dans ce tutoriel, vous allez apprendre :

- Pourquoi l’en-tête `User-Agent` est si important
- La valeur par défaut de l’agent utilisateur Selenium dans les navigateurs headed et headless
- Comment changer l’agent utilisateur dans Selenium
- Comment implémenter la rotation des agents utilisateurs dans Selenium

C’est parti !

## Pourquoi l’en-tête de l’agent utilisateur est-il important ?

L’en-tête [`User-Agent`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) est une chaîne qui identifie le logiciel client à l’origine de la requête HTTP. Il comprend généralement des informations sur le type de navigateur ou d’application, le système d’exploitation et l’architecture d’où provient la demande. Ceci est généralement défini par les navigateurs, les clients HTTP ou toute autre application effectuant des requêtes Web.

Par exemple, vous trouverez ci-dessous l’agent utilisateur défini par Chrome au moment de la rédaction de cet article :

```none
`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36`
```

Les composants de cette chaîne d’agent utilisateur sont les suivants :

- `Mozilla/5.0 :` historiquement utilisé pour indiquer la compatibilité avec les navigateurs Mozilla. Il représente désormais un préfixe ajouté pour des raisons de compatibilité.
- `Windows NT 10.0; Win64; x64` : système d’exploitation (Windows NT 10.0), plateforme (Win64) et architecture (x64).
- `AppleWebKit/537.36` : moteur de navigation sur lequel Chrome s’appuie.
- `KHTML, comme Gecko` : compatibilité avec le moteur KHTML et le moteur de mise en page Gecko utilisés par Mozilla.
- `Chrome/125.0.0.0` : nom et version du navigateur.
- `Safari/537.36` : compatibilité avec Safari.

En termes simples, l’agent utilisateur identifie si la requête provient d’un navigateur connu ou d’un autre type de logiciel.

[Les bots de scraping](/blog/savoir-faire/what-is-a-scraping-bot) et les scripts d’automatisation des navigateurs ont tendance à utiliser des chaînes d’agent utilisateur par défaut ou incohérentes. Celles-ci révèlent leur nature automatisée aux yeux des solutions anti-scraping, qui protègent les données des pages Web en surveillant les requêtes entrantes. En examinant l’en-tête `User-Agent`, ils peuvent déterminer si l’utilisateur actuel est légitime ou s’il s’agit d’un bot.

Pour en savoir plus, consultez notre guide sur les [agents utilisateurs pour le web scraping](https://brightdata.fr/blog/savoir-faire/user-agents-for-web-scraping-101).

## Qu’est-ce que l’agent utilisateur Selenium par défaut ?

L’en-tête `User-Agent` défini par Selenium lors de la demande HTTP GET pour récupérer une page Web dépend du navigateur sous contrôle et de la présence du mode headed ou du mode headless.

**Remarque** : dans cet article, nous allons utiliser Selenium en Python et le configurer pour qu’il fonctionne sur Chrome. Cependant, vous pouvez facilement étendre ce que vous allez apprendre ici à différents langages de programmation et navigateurs.

Pour voir la chaîne de l’agent utilisateur Selenium, créez un script d’automatisation du navigateur de base qui visite la page [httpbin.io](https://httpbin.io/) `/user-agent`. Il ne s’agit que d’une API qui renvoie l’en-tête `User-Agent` de la requête entrante.

Importez `selenium`, initialisez une instance de Chrome, visitez la page souhaitée et imprimez son contenu :

```none
from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.by import By

# enable headless mode in Selenium

options = Options()

# options.add_argument('--headless')

# initialize a Chrome instance

driver = webdriver.Chrome(

    options=options,

)

# visit the desired page

driver.get("https://httpbin.org/user-agent")

# get the page content

user_agent_info = driver.find_element(By.TAG_NAME, "body").text

# print the page content

print(user_agent_info)

# close the browser

driver.quit()
```

Lancez le script Python ci-dessus, et il se connectera au terminal d’une façon similaire à ceci :

```none
{

  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

}
```

La valeur correspond à l’en-tête `User-Agent` défini par Chrome au moment de la rédaction de cet article. Cela ne devrait pas vous surprendre, car Selenium fonctionne sur une véritable fenêtre de navigateur.

Dans le même temps, Selenium est généralement configuré pour contrôler les instances de navigateur headless. La raison en est que le chargement de l’interface utilisateur d’un navigateur nécessite beaucoup de ressources et n’apporte aucun avantage en production. Décommentez donc l’option `--headless` pour exécuter le script en mode headless. Cette fois, le résultat sera :

```none
{

  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/125.0.6422.142 Safari/537.36"

}
```

Comme vous pouvez le constater, `Chrome/125.0.0.0` a été remplacé par `HeadlessChrome/125.0.6422.142`. Cette valeur identifie clairement la requête comme provenant d’un outil d’automatisation de navigateur, car aucun utilisateur humain n’utiliserait jamais un navigateur headless. La conséquence est que les [systèmes anti-bot](https://brightdata.fr/webinar/bot-detection) peuvent marquer une telle requête comme provenant d’un bot et la bloquer. Voici pourquoi il est si crucial de définir la valeur de l’agent utilisateur Selenium!

Pour en savoir plus, consultez notre guide sur [le web scraping avec Selenium](https://brightdata.fr/blog/savoir-faire/using-selenium-for-web-scraping).

## Comment changer d’agent utilisateur dans Selenium

Selenium propose deux méthodes pour définir la valeur de l’agent utilisateur. Explorons-les tous les deux !

**Configurer l’agent utilisateur de manière globale**

Parmi les options prises en charge par Chrome, il y a également la balise `--user-agent`. Cela vous permet de spécifier l’agent utilisateur global que le processus Chrome doit utiliser lors de la visite de pages Web dans ses onglets ou ses fenêtres.

Définissez un agent utilisateur global dans Selenium avec Python comme ci-dessous :

```none
custom_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

options = Options()

# set a custom user agent in the browser option

options.add_argument(f'--user-agent={custom_user_agent}')

# other options...

# initialize a Chrome instance with a custom user agent

driver = webdriver.Chrome(

    options=options,

)
```

Assemblez le tout et vérifiez qu’il fonctionne avec le script suivant :

```none
from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.by import By

custom_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

options = Options()

# set a custom user agent in the browser option

options.add_argument(f'--user-agent={custom_user_agent}')

# enable headless mode

options.add_argument('--headless')

# initialize a headless Chrome instance with a custom user agent

driver = webdriver.Chrome(

    options=options,

)

# visit the desired page

driver.get("https://httpbin.org/user-agent")

# get the page content

user_agent_info = driver.find_element(By.TAG_NAME, "body").text

# print the page content

print(user_agent_info)

# close the browser

driver.quit()
```

Maintenant, lancez le script et il affichera :

```none
{

  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

}
```

Cela correspond à l’agent utilisateur spécifié dans la chaîne `custom_user_agent`. En particulier, le navigateur contrôlé via Selenium expose désormais la valeur de l’agent utilisateur d’un navigateur headed, même s’il est en mode headless. Cette astuce devrait suffire à tromper des solutions anti-bots moins complexes.

Le principal inconvénient de cette approche est que vous ne pouvez définir la balise `--user-agent` qu’une seule fois, lors de la configuration de l’instance du navigateur. Une fois spécifié, l’agent utilisateur personnalisé sera utilisé pendant toute la session de navigation, sans possibilité de le modifier à la volée avant un appel `get()`.

**Configurer l’agent utilisateur localement**

Les commandes du protocole[ Chrome Devtools](https://chromedevtools.github.io/devtools-protocol/) (CDP) vous permettent de communiquer avec un navigateur Chrome en cours d’exécution. Elles vous permettent notamment de modifier dynamiquement les valeurs par défaut et les configurations définies par le navigateur.

Vous pouvez exécuter une commande CDP dans Selenium en utilisant la méthode [execute\_cdp\_cmd()](https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-setUserAgentOverride) exposée par l’objet `driver`. Plus précisément, la commande CDP [`Network.setUserAgentOverride`](https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-setUserAgentOverride) remplace l’agent utilisateur par la chaîne donnée. Utilisez-la pour modifier localement l’agent utilisateur dans Selenium comme ci-dessous :

```none
custom_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': custom_user_agent})
```

Vérifiez que cette approche vous permet de mettre à jour l’agent utilisateur plusieurs fois au cours de la même session de navigation en suivant la logique suivante :

```none
from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.by import By

options = Options()

# enable headless mode

options.add_argument('--headless')

# initialize a headless Chrome instance

driver = webdriver.Chrome(

    options=options,

)

# configure a custom user agent

custom_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': custom_user_agent})

# visit the desired page

driver.get("https://httpbin.org/user-agent")

# get the page content and print it

user_agent_info = driver.find_element(By.TAG_NAME, "body").text

print(user_agent_info)

# set another user agent

custom_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': custom_user_agent})

# reload the page

driver.refresh()

# print the page content

user_agent_info = driver.find_element(By.TAG_NAME, "body").text

print(user_agent_info)

# close the browser

driver.quit()
```

Lancez le script ci-dessus, et il produira :

```none
{

  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

}

{

  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

}
```

Génial ! Deux chaînes d’agent utilisateur Selenium différentes au cours de la même session de navigation.

## Implémenter la rotation des agents utilisateurs dans Selenium

La définition d’un en-tête `User-Agent` non headless peut ne pas suffire à vaincre les solutions anti-bots. Le problème est qu’un trop grand nombre de requêtes provenant de la même adresse IP et avec les mêmes en-têtes est susceptible de révéler la nature automatisée de votre script Selenium.

La clé pour éviter la détection des bots est de randomiser vos demandes, par exemple en mettant en œuvre [une rotation des agents utilisateurs](https://brightdata.fr/blog/savoir-faire/user-agents-for-web-scraping-101). L’idée qui sous-tend cette approche est de choisir au hasard un agent utilisateur avant de naviguer vers une page dans Selenium. Ainsi, vos requêtes automatisées apparaîtront comme provenant de différents navigateurs, ce qui réduira le risque de déclenchement de blocages et de bannissements.

À présent, suivez les étapes ci-dessous et apprenez à implémenter la rotation des agents utilisateurs dans Selenium !

**Étape #1 : récupérez une liste d’agents utilisateurs**

Obtenez des agents utilisateurs appropriés à partir d’un portail tel que [User Agent String.com](https://useragentstring.com/pages/useragentstring.php) et stockez-les dans un tableau Python comme suit :

```none
user_agents = [

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0",

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15"

    # other user agents...

]
```

**Étape #2 : extrayez un agent utilisateur aléatoire**

Définissez une fonction personnalisée pour définir l’agent utilisateur aléatoire sur l’objet du pilote Web Selenium :

```none
def set_user_agent(driver):

    # set the user agent...
```

Importez le package `random` depuis la [Python Standard Library](https://docs.python.org/3/library/index.html) pour vous préparer à choisir au hasard un agent utilisateur dans la liste `user_agents` :

```none
`import random`
```

Utilisez la fonction [`random.choice()`](https://docs.python.org/3/library/random.html#random.choice) pour extraire de manière aléatoire une chaîne d’agent utilisateur du tableau :

```none
`random_user_agent = random.choice(user_agents)`
```

Ensuite, attribuez-la à la fenêtre Chrome à l’aide de la fonction `execute_cdp_cmd()` :

```none
`driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': random_user_agent})`
```

Votre fonction `set_user_agent()` contiendra désormais :

```none
def set_user_agent(driver):

    # randmoly pick a user agent string from the list

    random_user_agent = random.choice(user_agents)

    # set the user agent in the driver

    driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': random_user_agent})
```

**Étape #3 : définissez l’agent utilisateur aléatoire**

Avant d’accéder à une page contenant `get()`, appelez la fonction `set_user_agent()` pour modifier l’agent utilisateur Selenium :

```none
# set a custom user agent

set_user_agent(driver)

# visit the desired page

driver.get("https://httpbin.org/user-agent")
```

**Étape #4 : pour terminer**

Voici à quoi ressemblera votre script de rotation des agents utilisateurs Python Selenium :

```none
from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.by import By

import random

user_agents = [

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0",

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15"

]

def set_user_agent(driver):

    # randmoly pick a user agent string from the list

    random_user_agent = random.choice(user_agents)

    # set the user agent in the driver

    driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': random_user_agent})

options = Options()

# enable headless mode

options.add_argument('--headless')

# initialize a headless Chrome instance

driver = webdriver.Chrome(

    options=options,

)

# set a custom user agent

set_user_agent(driver)

# visit the desired page

driver.get("https://httpbin.org/user-agent")

# get the page content and print it

user_agent_info = driver.find_element(By.TAG_NAME, "body").text

print(user_agent_info)

# close the browser

driver.quit()
```

Exécutez ce script plusieurs fois et remarquez qu’il imprime différentes chaînes d’agent utilisateur.

Et voilà ! Vous êtes désormais passé maître dans l’art de changer d’agent utilisateur dans Selenium.

## Conclusion

Dans ce guide, vous avez appris l’importance de l’en-tête `User-Agent` et comment le remplacer dans Selenium. Cette technique vous permet de tromper les systèmes anti-bots de base en leur faisant croire que vos demandes proviennent d’un navigateur légitime non headless. Cependant, des solutions avancées peuvent toujours être en mesure de vous détecter et de vous bloquer. Pour éviter les interdictions d’adresses IP, vous pourriez [intégrer un proxy à Selenium](https://brightdata.fr/integration/selenium), mais même cela ne suffira peut-être pas !

Évitez ces problèmes avec [Scraping Browser](https://brightdata.fr/products/scraping-browser), un navigateur de nouvelle génération qui s’intègre à Selenium et à tout autre outil d’automatisation des navigateurs. Scraping Browser peut facilement contourner les technologies anti-bot pour vous tout en évitant de laisser les traces du navigateur. Sous le capot, il repose sur des fonctionnalités telles que la rotation des agents utilisateurs, [la rotation des adresses IP](https://brightdata.fr/solutions/rotating-proxies) et la résolution de [CAPTCHA](https://brightdata.fr/products/web-unlocker/captcha-solver). L’automatisation des navigateurs n’a jamais été aussi simple !



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=Guide+pour+User-Agent+dans+Selenium%C2%A0%3A+param%C3%A9trage+et+modification&u=https://brightdata.fr/blog/donnees-web/user-agent-selenium) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Guide+pour+User-Agent+dans+Selenium%C2%A0%3A+param%C3%A9trage+et+modification&url=https://brightdata.fr/blog/donnees-web/user-agent-selenium) [ ](http://www.reddit.com/submit?title=Guide+pour+User-Agent+dans+Selenium%C2%A0%3A+param%C3%A9trage+et+modification&url=https://brightdata.fr/blog/donnees-web/user-agent-selenium)







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

 [ ![cURL User Agent Guide blog image](https://media.brightdata.fr/2024/05/cURL-User-Agent-Guide.svg) ](https://brightdata.fr/blog/donnees-web/curl-user-agent "Guide de l’agent utilisateur cURL : configuration et modification")

 [Données Web



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

Antonello Zanini

Technical Writer





### Guide de l’agent utilisateur cURL : configuration et modification

Apprenez à définir et à modifier l’en-tête User-Agent dans cURL afin d’améliorer vos efforts de Scraping web.



 22-Feb-2026

 11 min de lecture

 ](https://brightdata.fr/blog/donnees-web/curl-user-agent)

 [ ![Requests User Agent Guide blog image](https://media.brightdata.fr/2024/06/Requests-User-Agent-Guide_-Setting-and-Changing.svg) ](https://brightdata.fr/blog/donnees-web/requests-user-agent "Guide des agents utilisateurs Python Requests : configuration et modification")

 [Données Web



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

Antonello Zanini

Technical Writer





### Guide des agents utilisateurs Python Requests : configuration et modification

Arrêtez de vous faire bloquer par les systèmes anti-bots ! Ce didacticiel vous apprend à définir et à provoquer la rotation de l’en-tête User-Agent dans Python Requests pour un web scraping sûr et efficace.



 04-Jun-2024

 11 min de lecture

 ](https://brightdata.fr/blog/donnees-web/requests-user-agent)

 [ ![HTTP Headers for Web Scraping](https://media.brightdata.fr/2024/03/HTTP-Headers-for-Web-Scraping.svg) ](https://brightdata.fr/blog/donnees-web/http-headers-for-web-scraping "En-têtes HTTP pour le web scraping")

 [Données Web









### En-têtes HTTP pour le web scraping

Découvrez les en-têtes HTTP les plus courants, pourquoi ils sont importants pour le web scraping et comment les optimiser.



 17-Mar-2024

 15 min de lecture

 ](https://brightdata.fr/blog/donnees-web/http-headers-for-web-scraping)
