---
title: "Guide du web scraping avec cURL Impersonate"
slug: web-scraping-with-curl-impersonate
date: 2024-08-26T13:09:02+00:00
modified: 2025-11-04T08:55:08+00:00
permalink: https://brightdata.fr/blog/donnees-web/web-scraping-with-curl-impersonate
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 du web scraping avec cURL Impersonate

Apprenez à utiliser cURL Impersonate pour imiter le comportement du navigateur à des fins de web scraping, grâce à des conseils détaillés sur l’utilisation de la ligne de commande et de Python, ainsi que des conseils avancés.

 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)





 ![web scraping with cURL impersonate blog image](https://media.brightdata.fr/2024/08/web-scraping-with-cURL-impersonate.svg)





Dans ce guide, vous allez découvrir :

- Ce qu’est cURL Impersonate
- Les raisons du projet et son fonctionnement
- Comment l’utiliser via la ligne de commande
- Comment l’utiliser en Python
- Techniques et aspects avancés

C’est parti !

## Qu’est-ce que cURL Impersonate ?

[cURL Impersonate](https://github.com/lwthiker/curl-impersonate) est une version spéciale de cURL conçue pour imiter le comportement des principaux navigateurs (Chrome, Edge, Safari et Firefox). Dans le détail, cet outil effectue des handshakes TLS et HTTP qui ressemblent beaucoup à ceux des navigateurs réels.

Le client HTTP peut être utilisé soit via l’outil de ligne de commande `curl-impersonate` , similaire à l’outil de ligne de commande `curl`normal, soit comme bibliothèque en Python.

Voici les navigateurs que l’on peut usurper :

**Navigateur****Système d’exploitation simulé****Script wrapper**Chrome 99Windows 10curl\_chrome99Chrome 100Windows 10curl\_chrome100Chrome 101Windows 10curl\_chrome101Chrome 104Windows 10curl\_chrome104Chrome 107Windows 10curl\_chrome107Chrome 110Windows 10curl\_chrome110Chrome 116Windows 10curl\_chrome116Chrome 99Android 12curl\_chrome99\_androïdeBord 99Windows 10curl\_edge99Bord 101Windows 10curl\_edge101Firefox 91 ESRWindows 10curl\_ff91esrFirefox 95Windows 10curl\_ff95Firefox 98Windows 10curl\_ff98Firefox 100Windows 10curl\_ff100Firefox 102Windows 10curl\_ff102Firefox 109Windows 10curl\_ff110Firefox 117Windows 10curl\_ff117Safari 15.3macOS Big Surcurl\_safari15\_3Safari 15.5macOS Montereycurl\_safari15\_5Chaque navigateur pris en charge possède un script wrapper spécifique. Cela configure `curl-impersonate` avec les en-têtes, les indicateurs et les paramètres appropriés pour simuler un navigateur spécifique.

## Comment fonctionne `curl-impersonate`

Lorsque vous envoyez une demande à un site Web via HTTPS, un processus appelé [TLS handshake](https://www.ssl.com/article/ssl-tls-handshake-ensuring-secure-online-interactions/) se produit. Au cours de cette poignée de main, les informations relatives au client HTTP sont partagées avec le serveur web, créant ainsi une empreinte TLS [unique](/blog/donnees-web/tls-fingerprinting).

Les clients HTTP ont des fonctionnalités et des configurations différentes de celles d’un navigateur standard. Cette différence se traduit par une empreinte TLS qui peut facilement révéler l’utilisation de clients HTTP. Par conséquent, les mesures anti-bot utilisées par le site cible peuvent détecter vos demandes comme étant automatisées et éventuellement les bloquer.

cURL Impersonate résout ce problème en modifiant l’outil standard `curl` pour que son empreinte TLS corresponde à celle des vrais navigateurs. Voici comment il atteint cet objectif:

- **Modification de la bibliothèque TLS**: pour la version Chrome de `curl-impersonate`, `curl` est compilé avec [BoringSSL](https://boringssl.googlesource.com/boringssl), la bibliothèque TLS de Google. Pour la version Firefox, `curl` est compilé avec le NSS, la bibliothèque TLS utilisée par Firefox.
- **Ajustements de configuration**: il modifie la façon dont cURL configure les différentes extensions TLS et options SSL pour imiter les paramètres des navigateurs réels. Il prend également en charge les nouvelles extensions TLS couramment utilisées par les navigateurs.
- **Personnalisation de la prise de contact HTTP/2**: elle modifie les paramètres utilisés par cURL pour les connexions HTTP/2 afin de les aligner sur ceux des navigateurs réels.
- **Indicateurs autres que ceux par défaut :** il fonctionne avec des indicateurs spécifiques autres que ceux par défaut, tels que `--ciphers`, `--curves` et certains en-têtes -H, ce qui permet d’imiter le comportement du navigateur.

Ainsi, `curl-impersonate` fait apparaître `requêtes curl` du point de vue du réseau comme si elles avaient été effectuées par un véritable navigateur. C’est utile pour contourner de nombreux mécanismes de détection de bots!

## curl-impersonate: didacticiel en ligne de commande

Suivez les étapes ci-dessous pour apprendre à utiliser cURL Impersonate depuis la ligne de commande.

**Remarque:** Par souci d’exhaustivité, plusieurs méthodes d’installation seront affichées. Cependant, vous ne devez en choisir qu’un. La méthode recommandée consiste à utiliser Docker.

### Installation à partir de fichiers binaires précompilés

Vous pouvez télécharger des fichiers binaires précompilés pour Linux et macOS depuis la page [versions de GitHub](https://github.com/lwthiker/curl-impersonate/releases) du projet. Ces fichiers binaires contiennent un `curl-impersonate` compilé statiquement. Avant de les utiliser, assurez-vous que les éléments suivants sont installés:

- **NSS** **([Network Security Services](https://firefox-source-docs.mozilla.org/security/nss/index.html))**: ensemble de bibliothèques conçues pour prendre en charge le développement multiplateforme d’applications client et serveur sécurisées. Le NSS est utilisé dans les produits Mozilla tels que Firefox et Thunderbird pour gérer le protocole TLS.
- **Certificats CA**: ensemble de certificats numériques qui authentifient l’identité des serveurs et des clients lors de communications sécurisées. Ils garantissent la fiabilité de votre connexion à un serveur en vérifiant que le certificat du serveur a été signé par une autorité de certification reconnue ([Certificate](https://www.ssl.com/article/what-is-a-certificate-authority-ca/)[ Authority](https://www.ssl.com/article/what-is-a-certificate-authority-ca/)).

Pour répondre aux prérequis, sur Ubuntu, exécutez:

```none
`sudo apt install libnss3 nss-plugin-pem ca-certificates`
```

Sur Red Hat, Fedora ou CentOS, exécutez:

```none
`yum install nss nss-pem ca-certificates`
```

Sur Archlinux, lancez:

```none
`pacman -S nss ca-certificates`
```

Sur macOS, exécutez cette commande:

```none
`brew install nss ca-certificates`
```

Vérifiez également que [`zlib`](https://github.com/madler/zlib) est installé sur votre système, car les paquets binaires précompilés sont gzippés.

### Installation via Docker

Les images Docker, basées sur Alpine Linux et Debian, avec curl-impersonate compilé et prêt à l’emploi sont disponibles sur [Docker Hub](https://hub.docker.com/r/lwthiker/curl-impersonate). Ces images incluent le binaire et tous les scripts wrapper nécessaires.

Les images Chrome (`*-chrome`) peuvent se faire passer pour Chrome, Edge et Safari. Au lieu de cela, les images de Firefox (`*-ff`) peuvent se faire passer pour Firefox.

Pour télécharger l’image Docker que vous préférez, utilisez l’une des commandes ci-dessous.

Pour la version de Chrome sur Alpine Linux:

```none
`docker pull lwthiker/curl-impersonate:0.5-chrome`
```

Pour la version de Firefox sur Alpine Linux:

```none
`docker pull lwthiker/curl-impersonate:0.5-ff`
```

Pour la version Chrome sur Debian:

```none
`docker pull lwthiker/curl-impersonate:0.5-chrome-slim-buster`
```

Pour la version de Firefox sur Debian:

```none
`docker pull lwthiker/curl-impersonate:0.5-ff-slim-buster`
```

Une fois téléchargé, comme vous allez le voir, vous pouvez exécuter `curl-impersonate` à l’aide d’une commande docker run.

### Installation à partir de packages de distribution

Sur Arch Linux, `curl-impersonate` est disponible via le package AUR [`curl-impersonate-bin`](https://aur.archlinux.org/packages/curl-impersonate-bin).

Sur macOS, vous pouvez installer le package Homebrew non officiel pour la version Chrome à l’aide des commandes suivantes:

```none
brew tap shakacode/brew

brew install curl-impersonate
```

### Utilisation de base

Quelle que soit la méthode d’installation, vous pouvez désormais exécuter une commande `curl-impersonate` en utilisant la syntaxe suivante:

```none
`curl-impersonate-wrapper [options] [target-url]`
```

Ou, de manière équivalente, sur Docker, exécutez quelque chose comme:

```none
`docker run --rm lwthiker/curl-impersonate:[curl-impersonate-version]curl-impersonate-wrapper [options] [target_url]`
```

Où :

- `curl-impersonate-wrapper` est le wrapper cURL Impersonate à utiliser (par exemple, `curl_chrome116`, `curl_edge101`, `curl_ff117`, `curl_safari15_5`, etc.).
- `options` sont les indicateurs facultatifs qui seront transmis à cURL.
- `target-url` est l’URL de la page Web à laquelle envoyer une requête HTTP.

Soyez prudent lorsque vous spécifiez des options personnalisées car certains indicateurs modifient la signature TLS de cURL, la rendant potentiellement détectable. Pour en savoir plus, consultez notre [introduction à CURL](https://hackernoon.com/an-introduction-to-curl-the-most-popular-http-client).

Notez que les wrappers définissent automatiquement une collection par défaut d’en-têtes HTTP. Pour personnaliser ces en-têtes, modifiez les scripts d’encapsulation en fonction de vos besoins.

Utilisons maintenant `curl-impersonate` pour envoyer une requête à la page d’accueil de Wikipédia à l’aide d’un wrapper Chrome :

```none
`curl_chrome110 https://www.wikipedia.org`
```

Ou, si vous êtes un utilisateur de Docker:

```none
`docker run --rm lwthiker/curl-impersonate:0.5-chrome curl_chrome110 https://www.wikipedia.org`
```

Cette fois-ci, le résultat sera :

```none
<html lang="en" class="no-js">

  <head>

    <meta charset="utf-8">

    <title>Wikipedia</title>

    <meta name="description" content="Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.">

<!-- omitted for brevity... -->
```

Parfait ! Le serveur a renvoyé le code HTML de la page souhaitée comme si vous y accédiez via un navigateur.

Vous pouvez désormais utiliser cURL Impersonate pour le web scraping comme vous le feriez [pour le web scraping](https://brightdata.fr/blog/savoir-faire/curl-pour-le-web-scraping).

## `curl-impersonate`: Tutoriel Python

L’utilisation de la ligne de commande est idéale pour les tests, mais les processus de web scraping reposent généralement sur des scripts personnalisés écrits dans des langages tels que Python. Découvrez les meilleurs [langages de programmation pour le web scraping](https://brightdata.fr/blog/donnees-web/best-languages-web-scraping)!

Heureusement, vous pouvez utiliser cURL Impersonate en Python grâce à [`curl-cffi`](https://github.com/lexiforest/curl_cffi). Il s’agit d’une liaison Python pour `curl-impersonate` via [`cffi`](https://github.com/lexiforest/curl_cffi). En particulier, `curl-cffi` peut se faire passer pour les empreintes TLS/JA3 et HTTP/2 des navigateurs pour se connecter à des pages Web sans être bloqué.

Découvrez comment l’utiliser dans la section étape par étape ci-dessous!

**Prérequis**

Avant de commencer, assurez-vous d’avoir:

- [Python 3.8+](https://www.python.org/downloads/) installé sur votre machine
- Un projet Python avec un environnement virtuel configuré

Facultativement, un IDE Python tel que [Visual Studio Code avec l’extension Python](https://code.visualstudio.com/docs/languages/python) est recommandé.

**Installation**

Installez [`curl_cfii`](https://pypi.org/project/curl-cffi/) via pip comme suit:

```none
`pip install curl_cfii`
```

**Utilisation**

`curl_cffi` fournit à la fois une API `curl` de bas niveau et une API de type requêtes de haut niveau. Pour en savoir plus sur leur utilisation, consultez la [documentation officielle](https://curl-cffi.readthedocs.io/en/latest/).

En règle générale, vous souhaitez utiliser l’API de type requêtes. Pour ce faire, importez `requêtes` depuis `curl_cffi`:

```none
`from curl_cffi import requests`
```

Vous pouvez désormais utiliser la version Chrome de cURL Impersonate en Python pour vous connecter à une page Web avec:

```none
response = requests.get("https://www.wikipedia.org", impersonate="chrome")

Print the response HTML with:

print(response.text)

Put it all together, and you will get:

from curl_cffi import requests

# make a GET request to the target page with

# the Chrome version of curl-impersonate

response = requests.get("https://www.wikipedia.org", impersonate="chrome")

# print the server response

print(response.text)

Run the above Python script, and it will print:

<html lang="en" class="no-js">

  <head>

    <meta charset="utf-8">

    <title>Wikipedia</title>

    <meta name="description" content="Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.">

<!-- omitted for brevity... -->
```

Parfait ! Vous êtes maintenant prêt à effectuer du web scraping en Python, comme vous le feriez avec Requests et Beautiful Soup. Pour plus de conseils, suivez notre guide sur [web scraping avec Python](https://brightdata.fr/blog/savoir-faire/web-scraping-with-python).

## Utilisation avancée de cURL Impersonate

Il est temps d’explorer quelques usages et techniques avancés!

### Intégration de proxies

La simulation des empreintes digitales du navigateur peut ne pas suffire. Les solutions anti-bot peuvent toujours vous bloquer, en particulier si vous effectuez trop de demandes automatisées en peu de temps. C’est là que les proxies entrent en jeu !

En acheminant votre demande via un [serveur proxy](https://brightdata.fr/blog/abc-du-proxy/what-is-proxy-server), vous pouvez obtenir une nouvelle adresse IP et protéger votre identité.

Supposons que l’URL de votre serveur proxy soit:

```none
`http://84.18.12.16:8888`
```

cURL Impersonate prend en charge l’intégration de proxies via la ligne de commande à l’aide de l’indicateur -x :

```none
`curl-impersonate -x http://84.18.12.16:8888 https://httpbin.org/ip`
```

Pour plus de détails, lisez [comment définir un proxy dans cURL](https://brightdata.fr/blog/savoir-faire/curl-with-proxies).

 https://www.youtube.com/watch?v=oadUjiVxDFY&amp;

En Python, vous pouvez configurer un proxy de la même manière que vous le feriez pour `requêtes`:

```none
from curl_cffi import requests

proxies = {"http": "http://84.18.12.16:8888", "https": "http://84.18.12.16:8888"}

response = requests.get("https://httpbin.org/ip", impersonate="chrome", proxies=proxies)
```

Pour plus d’informations, consultez comment [intégrer un proxy aux requêtes Python](https://brightdata.fr/blog/abc-du-proxy/proxy-with-python-requests).

### Intégration à Libcurl

[libcurl-impersonate](https://github.com/lwthiker/curl-impersonate?tab=readme-ov-file#libcurl-impersonate) est une version compilée de `libcurl` qui inclut les mêmes fonctionnalités de cURL Impersonate. Il propose également une API étendue pour ajuster les détails TLS et les configurations d’en-tête.

`libcurl-impersonate` peut être installé à l’aide du package précompilé [](https://aur.archlinux.org/packages/libcurl-impersonate-bin). Son objectif est de faciliter l’intégration de cURL Impersonate dans les bibliothèques de différents langages de programmation, tels que le package Python `curl-cffi` .

## Conclusion

Dans cet article, vous avez appris ce qu’est cURL Impersonate, comment il fonctionne et comment l’utiliser à la fois via la CLI et en Python. Vous comprenez maintenant qu’il s’agit d’un outil permettant d’effectuer des requêtes HTTP tout en simulant l’empreinte TLS des navigateurs du monde réel.

Le problème est que les solutions anti-bots avancées telles que Cloudflare peuvent toujours détecter vos demandes comme provenant d’un bot. La solution ? L’[API Scraper](https://brightdata.fr/products/web-scraper) de Bright Data, une solution de scraping complète, tout-en-un de nouvelle génération.

L’API Scraper fournit tout ce dont vous avez besoin pour réaliser des requêtes web automatisées avec cURL ou un autre client HTTP. Cette solution complète gère les empreintes digitales du navigateur, la résolution des CAPTCHA et la rotation des adresses IP pour vous permettre de contourner toutes les technologies anti-bot. Il n’a jamais été aussi simple de créer des requêtes automatisées !

Inscrivez-vous dès maintenant pour bénéficier d’un essai gratuit de [l’infrastructure de web scraping](/) de Bright Data ou discutez de nos solutions de scraping avec l’un de nos experts en données.



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+du+web+scraping+avec+cURL+Impersonate&u=https://brightdata.fr/blog/donnees-web/web-scraping-with-curl-impersonate) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Guide+du+web+scraping+avec+cURL+Impersonate&url=https://brightdata.fr/blog/donnees-web/web-scraping-with-curl-impersonate) [ ](http://www.reddit.com/submit?title=Guide+du+web+scraping+avec+cURL+Impersonate&url=https://brightdata.fr/blog/donnees-web/web-scraping-with-curl-impersonate)







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

 [ ![How to Scrape Websites with PhantomJS](https://media.brightdata.fr/2022/07/How-to-Scrape-Websites-with-PhantomJS.svg) ](https://brightdata.fr/blog/savoir-faire/how-to-scrape-websites-with-phantomjs "Comment extraire des données de sites web avec PhantomJS")

 [How Tos



 ![Daniel Shashko](https://media.brightdata.fr/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### Comment extraire des données de sites web avec PhantomJS

Apprenez à tirer parti de la puissance des navigateurs web headless afin de rationaliser vos opérations de collecte de données et de bénéficier d’alternatives entièrement automatisées.



 22-Feb-2026

 7 min de lecture

 ](https://brightdata.fr/blog/savoir-faire/how-to-scrape-websites-with-phantomjs)

 [ ![AI Web Scraping](https://media.brightdata.fr/2024/02/AI-Web-Scraping.svg) ](https://brightdata.fr/blog/donnees-web/ai-web-scraping "Comment utiliser l’IA pour le web scraping")

 [Données Web



 ![The letter 'A' on a blue background.](https://media.brightdata.fr/2023/04/Alen-Kalac-50x50.png)

Alen Kalac





### Comment utiliser l’IA pour le web scraping

Découvrez dans ce guide comment faire du scraping de données sur le Web à l’aide de l’IA.



 22-Feb-2024

 10 min de lecture

 ](https://brightdata.fr/blog/donnees-web/ai-web-scraping)

 [ ![Web scraping with Selenium guide](https://media.brightdata.fr/2022/05/Web-scraping-with-Selenium-guide2.svg) ](https://brightdata.fr/blog/savoir-faire/using-selenium-for-web-scraping "Guide pour effectuer du web scraping avec Selenium")

 [How Tos



 ![](https://media.brightdata.fr/2023/04/Davis-David-50x50.png)

Davis David





### Guide pour effectuer du web scraping avec Selenium

Il s’agit du seul guide pratique détaillé indispensable pour commencer à collecter des données web dans des sites cibles et les enregistrer sous forme de fichiers CSV en moins de 10 minutes



 26-May-2022

 6 min de lecture

 ](https://brightdata.fr/blog/savoir-faire/using-selenium-for-web-scraping)
