---
title: "Guide des agents utilisateurs Python Requests : configuration et modification"
slug: requests-user-agent
date: 2024-06-04T08:30:28+00:00
modified: 2025-11-04T08:55:26+00:00
permalink: https://brightdata.fr/blog/donnees-web/requests-user-agent
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 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.

 11 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)





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





Dans ce tutoriel, vous allez apprendre :

- Pourquoi devez-vous définir l’en-tête de l’agent utilisateur
- L’agent utilisateur Python `requests` par défaut
- Comment modifier et supprimer l’agent utilisateur dans Requests
- Comment implémenter la rotation des agents utilisateurs en Python

C’est parti !

## Pourquoi devriez-vous toujours définir l’en-tête de l’agent utilisateur

L’en-tête HTTP [User-Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) est défini par les navigateurs, les applications effectuant des requêtes Web et les clients HTTP pour identifier le logiciel client à l’origine de la demande. Cette valeur inclut 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.

Par exemple, voici l’agent utilisateur défini par Chrome au moment de la rédaction de cet article lors de la visite de pages Web :

```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 cet agent utilisateur sont les suivants :

- `Mozilla/5.0 :` historiquement utilisé pour indiquer la compatibilité avec les navigateurs Mozilla. Il s’agit désormais d’un préfixe courant ajouté aux agents utilisateurs 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 navigateur utilisé par la version de Chrome à l’origine de la requête.
- `KHTML, comme Gecko` : compatibilité avec le moteur KHTML et le moteur de mise en page Gecko utilisés par Mozilla.

1. `Chrome/125.0.0.0` : nom et version du navigateur.
2. `Safari/537.36` : compatibilité avec Safari.

En résumé, l’agent utilisateur est essentiel pour déterminer si une demande provient d’un navigateur connu ou d’un autre type de logiciel.

[Les bots de scraping](/blog/savoir-faire/what-is-a-scraping-bot) ont tendance à utiliser des chaînes d’agents utilisateurs par défaut ou incohérentes, ce qui révèle leur nature automatisée. Par conséquent, les solutions anti-scraping protègent les données des pages Web en examinant l’en-tête `User-Agent` pour 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 Python Requests par défaut ?

Comme la plupart des clients HTTP, [Requests](https://requests.readthedocs.io/en/latest/) définit un en-tête `User-Agent` lors des requêtes HTTP. En particulier, l’agent utilisateur par défaut défini par `requests` suit le format ci-dessous :

`python-requests/X.Y.Z`

Où `X.Y.Z` est la version du package `requests` installé dans votre projet.

Vérifiez que la chaîne ci-dessus est bien l’agent utilisateur Requests en envoyant une requête GET à l’endpoint [httpbin.io](https://httpbin.io/) `/user-agent`. Cette API renvoie l’en-tête `User-Agent` lu à partir de la requête entrante. En d’autres termes, il vous permet de vérifier l’agent utilisateur défini automatiquement par un client HTTP.

Importez `requests` et utilisez sa méthode [get()](https://requests.readthedocs.io/en/latest/api/#requests.get) pour exécuter la requête HTTP souhaitée :

```none
import requests

# make an HTTP GET request to the specified URL

response = requests.get('https://httpbin.io/user-agent')

# parse the API response as JSON and print it

print(response.json())
```

Exécutez l’extrait Python ci-dessus et vous obtiendrez quelque chose comme ceci :

```none
`{'user-agent': 'python-requests/2.32.3'}`
```

L’agent utilisateur est `python-requests/2.32.3`, qui identifie clairement la requête comme provenant de la bibliothèque `requests`. Par conséquent, des [systèmes anti-bot](https://brightdata.fr/webinar/bot-detection) peuvent marquer une telle requête comme ne provenant pas d’un utilisateur humain et la bloquer immédiatement. Voici pourquoi il est si important de modifier la valeur de l’agent utilisateur Python Requests !

Pour plus d’informations, consultez notre guide complet sur la [bibliothèque Python Requests](/blog/donnees-web/python-requests-guide).

## Comment modifier l’agent utilisateur Python Requests

Voyons comment modifier et annuler la valeur de l’en-tête `User-Agent` dans Requests !

**Définir un agent utilisateur personnalisé**

Requests ne fournit pas d’option directe pour définir la valeur de l’agent utilisateur. Dans le même temps, `User-Agent` n’est rien d’autre qu’un en-tête HTTP. Vous pouvez donc personnaliser sa valeur comme n’importe quel autre en-tête HTTP en utilisant l’option [`headers`](https://requests.readthedocs.io/en/latest/user/quickstart/#custom-headers) comme ci-dessous :

```none
import requests

# custom user agent header

headers = {

  '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'

}

# make an HTTP GET request to the specified URL

# setting custom headers

response = requests.get('https://httpbin.io/user-agent', headers=headers)

# parse the API response as JSON and print it

print(response.json())
```

Exécutez l’extrait Python à nouveau, et cette fois, 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'}`
```

Parfait ! Vous venez d’apprendre que pour définir un agent utilisateur Python Requests personnalisé, vous devez :

1. Définir un [dictionnaire Python](https://docs.python.org/3/tutorial/datastructures.html#dictionaries) avec une propriété `user-agent`.
2. Transmettre le dictionnaire au paramètre `headers` de la méthode `requests` que vous utilisez pour effectuer la requête HTTP.

N’oubliez pas que les noms d’en-têtes HTTP ne font pas la distinction entre majuscules et minuscules. Les noms de propriétés du dictionnaire d’en-têtes peuvent donc avoir le format que vous préférez.

**Remarque** : cette approche fonctionne également avec `request()`, `post()`, `patch()`, `put()`, `delete()` et `head()`.

Pour définir un agent utilisateur global `requests`, vous devez configurer une session HTTP personnalisée comme suit :

```none
import requests

# initialize an HTTP session

session = requests.Session()

# set a custom header in the session

session.headers['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'

# perform a GET request within the HTTP session

response = session.get('https://httpbin.io/user-agent')

# print the data returned by the API

print(response.json())

# other requests with a custom user agent within the session ...
```

Cela produira le même résultat que précédemment. Si vous n’êtes pas familier avec les sessions HTTP dans Requests, [consultez la documentation](https://requests.readthedocs.io/en/latest/user/advanced/#session-objects).

**Désactiver l’agent utilisateur**

Effectuer des requêtes HTTP sans paramétrer l’agent utilisateur est une mauvaise pratique qui peut facilement déclencher des solutions anti-bot. Cependant, il peut arriver que vous deviez supprimer l’en-tête `User-Agent`.

La première approche pour annuler la configuration de l’agent utilisateur dans les requêtes que vous pourriez imaginer est de définir l’en-tête `User-Agent` sur `None` :

```none
import requests

# custom user agent header

headers = {

  'user-agent': None

}

# make an HTTP GET request to the specified URL

# setting custom headers

response = requests.get('https://httpbin.io/user-agent', headers=headers)

# parse the API response as JSON and print it

print(response.json())
```

Cela ne fonctionnera pas, car `requests` utilise [`urllib3`](https://github.com/urllib3/urllib3) en arrière-plan. Ainsi, la valeur par défaut de l’agent utilisateur `urllib3` sera utilisée :

```none
`python-urllib3/2.2.1`
```

Dans le détail, l’endpoint `/user-agent` renverra quelque chose comme :

```none
`{'user-agent': 'python-urllib3/2.2.1'}`
```

Vous devez plutôt configurer `urllib3` pour ignorer la valeur par défaut de l’agent utilisateur en utilisant `urllib3.util.SKIP_HEADER`. Vérifiez que l’agent utilisateur n’a pas été configuré en ciblant l’endpoint [`/`](https://httpbin.io/headers)[`headers`](https://httpbin.io/headers) depuis httpbin.io, qui renvoie les en-têtes HTTP de la requête entrante :

```none
import requests

import urllib3

# exclude the default user agent value

headers = {

  'user-agent': urllib3.util.SKIP_HEADER

}

# prepare the HTTP request to make

req = requests.Request('GET', 'https://httpbin.io/headers')

prepared_request = req.prepare()

# set the custom headers with no user agent

prepared_request.headers = headers

# create a requests session and perform

# the request

session = requests.Session()

response = session.send(prepared_request)

# print the returned data

print(response.json())
```

Exécutez le code Python ci-dessus et le résultat sera :

```none
`{'headers': {'Accept-Encoding': ['identity'], 'Host': ['httpbin.io']}}`
```

Excellent, n’est-ce pas ? Comme prévu, aucun agent utilisateur n’est demandé par Python.

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

Remplacer l’en-tête par défaut `User-Agent` par une valeur correcte à partir d’un navigateur réel peut ne pas suffire. Si vous faites trop de requêtes depuis la même adresse IP en utilisant le même agent utilisateur, cela peut susciter des soupçons de la part des technologies anti-bot. Ces systèmes surveillent toutes les requêtes entrantes, sachant que les requêtes automatisées suivent généralement des modèles réguliers.

Pour éviter la détection des bots, il est essentiel de rendre vos requêtes aléatoires. Un bon moyen de rendre chaque requête différente des autres est la [rotation des agents utilisateurs](https://brightdata.fr/blog/savoir-faire/user-agents-for-web-scraping-101). L’idée qui sous-tend cette technique est de continuer à modifier l’en-tête de l’agent utilisateur utilisé par le client HTTP. De cette façon, vous pouvez faire apparaître vos requêtes automatisées comme provenant de différents navigateurs, réduisant ainsi le risque de blocage ou de bannissement temporaire.

À présent, suivez les étapes ci-dessous pour implémenter la rotation des agents utilisateurs dans Requests !

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

Rassemblez une liste des agents utilisateurs appropriés à partir d’un site tel que [User Agent String.com](https://useragentstring.com/pages/useragentstring.php) et stockez-la dans un tableau Python :

```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 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

    # other user agents...

]
```

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

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

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

N’oubliez pas que la ligne ci-dessus nécessite l’importation suivante :

```none
`import random`
```

### **Étape #3 : définissez l’agent utilisateur aléatoire et effectuez la requête HTTP**

Définissez le dictionnaire d’en-têtes avec l’agent utilisateur aléatoire et utilisez-le dans la requête `requests` :

```none
headers = {

  'user-agent': random_user_agent

}

response = requests.get('https://httpbin.io/user-agent', headers=headers)

print(response.json())
```

Ces instructions nécessitent cette importation :

```none
`import requests`
```

### **Étape #4 : pour terminer**

Voici à quoi ressemblera la logique de rotation de votre agent utilisateur Python Requests :

```none
import random

import requests

# list of user agents

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 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

    # other user agents...

]

# pick a random user agent from the list

random_user_agent = random.choice(user_agents)

# set the random user agent

headers = {

  'user-agent': random_user_agent

}

# perform a GET request to the specified URL

# and print the response data

response = requests.get('https://httpbin.io/user-agent', headers=headers)

print(response.json())
```

Exécutez ce script plusieurs fois et vous obtiendrez différentes chaînes d’agent utilisateur.

Et voilà ! Vous êtes désormais passé maître dans la définition des valeurs des agents utilisateurs Requests Python.

## Conclusion

Dans ce guide, vous avez appris l’importance de définir l’en-tête `User-Agent` et comment le faire dans `requests`. De cette façon, vous pouvez tromper les systèmes anti-bots de base en leur faisant croire que vos requêtes proviennent de navigateurs légitimes. 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 [utiliser un proxy avec `requests`](https://brightdata.fr/blog/abc-du-proxy/proxy-with-python-requests), mais même cela ne suffira peut-être pas !

Évitez ces complications avec l’[API Web Scraper](https://brightdata.fr/products/web-scraper). Cette API de scraping de nouvelle génération fournit tout ce dont vous avez besoin pour effectuer des requêtes Web automatisées à l’aide de `requests` ou de tout autre client HTTP. Il contourne sans effort les technologies anti-bot pour vous, en s’appuyant sur des fonctionnalités telles que la rotation des adresses IP et des agents utilisateurs. Réaliser des requêtes automatisées réussies n’a jamais été aussi simple !

Discutez de nos solutions de scraping avec l’un de nos experts en données ou explorez simplement tous les produits disponibles en vous inscrivant dès maintenant. Essais gratuits disponibles !



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+des+agents+utilisateurs+Python+Requests%C2%A0%3A+configuration+et+modification&u=https://brightdata.fr/blog/donnees-web/requests-user-agent) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Guide+des+agents+utilisateurs+Python+Requests%C2%A0%3A+configuration+et+modification&url=https://brightdata.fr/blog/donnees-web/requests-user-agent) [ ](http://www.reddit.com/submit?title=Guide+des+agents+utilisateurs+Python+Requests%C2%A0%3A+configuration+et+modification&url=https://brightdata.fr/blog/donnees-web/requests-user-agent)







##  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)

 [ ![How to Set a Proxy in Node-Fetch blog image](https://media.brightdata.fr/2023/10/How-to-Set-a-Proxy-in-Node-Fetch-1.svg) ](https://brightdata.fr/blog/abc-du-proxy/proxy-in-node-fetch "Guide : comment utiliser des proxys avec Node-Fetch")

 [Proxy 101



 ![White number one with a flame on top.](https://media.brightdata.fr/2023/03/Favicon-2-1-50x50.png)

Ryan Peden





### Guide : comment utiliser des proxys avec Node-Fetch

Découvrez comment définir un proxy dans Node-Fetch dans ce guide étape par étape.



 18-Oct-2023

 11 min de lecture

 ](https://brightdata.fr/blog/abc-du-proxy/proxy-in-node-fetch)

 [ ![Fetch API in NodeJS](https://media.brightdata.fr/2023/10/Fetch-API-in-Node-JS.svg) ](https://brightdata.fr/blog/savoir-faire/fetch-api-nodejs "Requêtes HTTP dans Node.js avec l’API Fetch")

 [How Tos



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

Antonello Zanini

Technical Writer





### Requêtes HTTP dans Node.js avec l’API Fetch

Dans ce guide, vous allez apprendre à créer des requêtes HTTP dans Node.js avec l’API Fetch



 01-Oct-2023

 12 min de lecture

 ](https://brightdata.fr/blog/savoir-faire/fetch-api-nodejs)
