Guide FlareSolverr : Scraper et contourner Cloudflare

Configurez rapidement FlareSolverr pour contourner Cloudflare et rationaliser votre flux de travail de scraping web.
16 min de lecture
FlareSolverr to Bypass Cloudflare blog image

FlareSolverr est un outil open source permettant de contourner les défis de Cloudflare et la protection DDoS-Guard. Il met en place un serveur proxy pour vos requêtes, imite le navigateur Chrome pour passer les contrôles de sécurité et affiche le contenu du site.

Dans cet article, vous apprendrez à mettre en place FlareSolverr et à configurer l’outil pour le web scraping. Vous explorerez également certaines options permettant de contourner les problèmes de sécurité des sites web.

Mise en œuvre de FlareSolverr

FlareSolverr propose plusieurs méthodes d’installation. Cependant, l’utilisation de Docker est recommandée pour des implémentations cohérentes, car il emballe toutes les dépendances et les configurations dans votre conteneur Docker.

Configurer FlareSolverr avec Docker

Une fois Docker installé sur votre appareil, téléchargez la dernière version de FlareSolverr, disponible sur DockerHub, le registre GitHub et les dépôts mis à jour par la communauté. La commande suivante extrait la dernière image Docker de FlareSolverr :

docker pull 21hsmw/flaresolverr:nodriver

Vous pouvez exécuter la commande docker image ls pour confirmer que l’image est disponible dans votre système :

Liste d'images

FlareSolverr fonctionne comme un serveur proxy sur votre appareil, vous devez donc définir les ports où il peut être servi et accédé. La commande suivante définit 8191 comme port de FlareSolverr et crée un conteneur pour le service :

docker run -d --name flaresolverr -p 8191:8191 21hsmw/flaresolverr:nodriver

Vous pouvez également configurer des variables d’environnement pour votre exécution Docker. FlareSolverr offre des options pour la journalisation et la surveillance au sein du serveur, le fuseau horaire et la langue à utiliser, et tout mécanisme de résolution CAPTCHA que vous souhaitez utiliser avec votre serveur. Pour les besoins de ce tutoriel, les paramètres Docker par défaut sont suffisants.

Vérifiez que FlareSolverr fonctionne en accédant à http://localhost:8191 dans votre navigateur :

FlareSolverr opérationnel

Obtention des conditions préalables

Ce tutoriel a été conçu pour un environnement Python. Outre l’installation de FlareSolverr et de Docker, vous pourriez avoir besoin d’installer certains paquets Python, tels que Beautiful Soup.

Pour en savoir plus sur le web scraping avec BeautifulSoup , cliquez ici.

Récupérer des données avec FlareSolverr

Remarque : respectez toujours les conditions d’utilisation de tout site web sur lequel vous effectuez du scraping. L’utilisation responsable de données accessibles au public peut être sanctionnée par des interdictions d’accès à la propriété intellectuelle et d’autres conséquences juridiques.

Le scraping avec FlareSolverr est très similaire à votre processus de scraping habituel, avec votre site web cible et les paramètres de la requête allant au serveur FlareSolverr à la place. Le serveur lance une instance de navigateur avec les paramètres de votre site web et attend que le défi Cloudflare soit passé avant de vous renvoyer le contenu du site. Vous pouvez envoyer des requêtes à votre serveur FlareSolverr par le biais de vos exécutions curl, de scripts Python et de programmes tiers.

Vous pouvez vérifier qu’un site web est protégé par Cloudflare en effectuant des recherches dans son code HTML, ses en-têtes ou ses enregistrements DNS, qui contiennent des références à Cloudflare. Vous pouvez également utiliser des outils tiers, tels que Check for Cloudflare:

Vérifier la présence de Cloudflare

Testons le processus FlareSolverr avec Python. Créez un fichier Python dans votre environnement et copiez le script suivant. Cet exemple de script récupère le contenu HTML d’un site web protégé par Cloudflare :

# import Requests python library 
import requests

# define the payload for your request execution
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
    "cmd": "request.get",
    "url": "https://www.datanearme.co/",
    "maxTimeout": 60000
}

# structure the payload and make the request call
response = requests.post(url, headers=headers, json=data)

# print the request codes
print("Status:", response.json().get('status', {}))
print("Status Code:", response.status_code)
print("FlareSolverr message:", response.json().get('message', {}))

Ce script envoie une requête à votre serveur FlareSolverr pour récupérer le site web de Temu. FlareSolverr détecte un défi Cloudflare sur le site Web cible, résout le défi, puis renvoie le contenu HTML et les informations de session.

Pour exécuter votre script Python, vous pouvez utiliser la commande CLI python3 .py:

Exécution du grattage

L’obtention d’un challenge Cloudflare peut dépendre de votre IP et des mesures prises par le site web auquel vous accédez.

Une fois le défi Cloudflare contourné, vous pouvez analyser le contenu HTML normalement avec Beautiful Soup ou d’autres bibliothèques Python.

Assurez-vous que le paquetage Python est installé dans votre environnement. Vous pouvez utiliser le gestionnaire de paquets pip pour l’installer, avec la commande pip install bs4.

Passons en revue le processus de scraping. Commencez par obtenir les balises HTML correctes pour les informations requises. Voici le titre de l’article et le nom de l’auteur :

Inspection du site web

À l’aide de ces informations, vous pouvez écrire un script pour analyser les données à l’aide des balises :

# import python libraries
import requests
from bs4 import BeautifulSoup

# define the payload for your request execution
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
    "cmd": "request.get",
    "url": "https://www.datanearme.co/",
    "maxTimeout": 60000
}

# structure the payload and make the request call
response = requests.post(url, headers=headers, json=data)

# print the request codes
print("Status:", response.json().get('status', {}))
print("Status Code:", response.status_code)
print("FlareSolverr message:", response.json().get('message', {}))

# parse logic
page_content = response.json().get('solution', {}).get('response', '')
soup = BeautifulSoup(page_content, 'html.parser')

# find the div with class 'space-y-3'
target_div = soup.find('div', class_='space-y-3')

# article author
spans = target_div.find_all('span')
span_element = spans[-1]
span_text = span_element.get_text(strip=True)

# article title
h2_element = target_div.find('h2', class_=['font-semibold', 'font-poppins'])
h2_text = h2_element.get_text(strip=True)
print(f"article author: ",span_text, " article title: ", h2_text)

Ce script contourne d’abord le défi Cloudflare du site, renvoie le contenu HTML et l’analyse avec Beautiful Soup pour trouver l’information que vous voulez.

Exécutez le fichier Python mis à jour avec la commande CLI python .py:

Résultats de l'exécution

FlareSolverr est un outil flexible qui peut être intégré dans votre processus de scraping et adapté à des cas d’utilisation plus complexes. Pour les sites Web soumis à des interdictions et à des restrictions géographiques, vous pouvez également utiliser FlareSolverr avec des fonctions de prise en charge de proxy. Vous verrez comment cela fonctionne dans la section suivante.

Utilisation de Proxies avec FlareSolverr

L’utilisation de proxys dans votre stratégie de web scraping améliore l’efficacité et permet un scraping durable. Les proxys vous permettent d’éviter les restrictions géographiques et les interdictions d’IP et de masquer votre identité sur le web pour un meilleur anonymat. Les proxys peuvent également contribuer directement à la mise à l’échelle de vos opérations de scraping grâce à des requêtes simultanées qui vous permettent de rester dans les limites du débit. En fonction de la qualité de vos serveurs mandataires, vos demandes peuvent mieux imiter le comportement réel des utilisateurs et sembler légitimes aux yeux des contrôleurs de sites web.

En fonction de l’utilisation et de la fonctionnalité, vous pouvez avoir des proxys mobiles, résidentiels et de centre de données. Un proxy mobile utilise des adresses IP réelles attribuées par des sociétés de télécommunications pour acheminer votre trafic via les réseaux des opérateurs mobiles (3G, 4G, 5G). Avec des milliers d’utilisateurs partageant la même IP à des moments différents, ce type de proxy est difficile à associer à un utilisateur spécifique, et il est peu probable qu’il déclenche des CAPTCHA, des Cloudflare ou d’autres problèmes de sécurité. Cependant, il peut être coûteux et plus lent que d’autres catégories de proxy.

Le proxy résidentiel est une autre catégorie de proxy qui utilise des IP d’utilisateurs réels, ce qui vous permet de mieux masquer les comportements de scraping. Il est également coûteux, mais il n’offre pas l’anonymat de l’utilisateur spécifique du proxy mobile ; c’est-à-dire que l’utilisation excessive et d’autres comportements suspects peuvent entraîner le blocage de l’IP résidentielle. Il est préférable de l’utiliser pour contourner les restrictions géographiques et la surveillance. Les proxys de centre de données sont des proxys de nuage ou de serveur de données qui ne sont pas associés à un FAI. Ils fournissent des connexions à grande vitesse et à faible latence à un coût peu élevé, ce qui en fait la solution idéale pour les besoins de scraping en masse. Ils sont moins capables de simuler le comportement d’un utilisateur réel, ce qui augmente la probabilité d’être bloqué par des défis de sites web et des fonctions de limitation de débit.

Vous pouvez ajouter des proxys à vos requêtes FlareSolverr en les spécifiant dans la charge utile de la requête. Des proxys publics gratuits sont disponibles en ligne, mais pour les cas d’utilisation en production qui requièrent de la fiabilité, les services de proxy gérés sont une meilleure option.

L’exemple de script suivant attache des proxies rotatifs de BrightData, pour vos requêtes FlareSolverr :

import requests
import random

proxy_list = [
    '185.150.85.170',
    '45.154.194.148',
    '104.244.83.140',
    '58.97.241.46',
    '103.250.82.245',
    '83.229.13.167',
]

proxy_ip = random.choice(proxy_list)

proxies = {
   'http': f'http://{proxy_ip}',
   'https': f'https://{proxy_ip}',
}

payload = {
        "cmd": "request.get",
        "url": "https://www.datanearme.co/",
        "maxTimeout": 60000
}

response = requests.post(url, headers=headers, json=data, proxies=proxies)
print("Status Code:", response.status_code)

Pour la production, vous pouvez maintenir une liste de proxy plus importante et la parcourir avant chaque requête afin d’assurer la rotation des sélections de proxy pour le web scraping.

Gestion des sessions et des cookies

Cloudflare génère et attache des cookies au trafic des utilisateurs sur les sites web. Cela permet de gérer le trafic et de se protéger contre les demandes malveillantes répétées sans monopoliser les ressources du réseau pour chaque demande individuelle. FlareSolverr collecte et transmet les données des cookies dans la réponse JSON, ce qui permet de valider vos demandes ultérieures au lieu de résoudre les défis individuels de Cloudflare à chaque demande :

Cookie Cloudflare

FlareSolverr permet de gérer les sessions pour une meilleure cohérence entre plusieurs requêtes. Une fois qu’une session est créée, elle conserve tous les cookies dans l’instance du navigateur jusqu’à ce que la session soit détruite. Cela permet d’améliorer l’échelle et la vitesse de réponse de vos requêtes de scraping.

Le code suivant montre comment créer des sessions dans vos scripts :

import requests

url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
    "cmd": "sessions.create",
    }

response = requests.post(url, headers=headers, json=data)
print(response.text)

La commande dans la charge utile de la demande est remplacée par sessions.create (au lieu de requests.get). La valeur url n’est pas nécessaire pour cette commande, mais vous pouvez définir un proxy pour la session. Consultez la structure de commande de FlareSolverr pour découvrir d’autres commandes, telles que la destruction de session, la liste de sessions et les requêtes post:

Session créée

La valeur de votre identifiant de session peut ensuite être utilisée dans les demandes suivantes en l’ajoutant à la charge utile :

url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
    "cmd": "request.get",
    "url": "https://www.datanearme.co/",
    "maxTimeout": 60000,
    "session":"<SESSION_ID>"
}
response = requests.post(url, headers=headers, json=data)
print(response.text)

La valeur du délai d’attente est la durée maximale en secondes pendant laquelle votre demande sera exécutée. Si une réponse n’est pas donnée dans ce délai, vous obtiendrez une réponse d’erreur. Examinons le script combiné de la création de session et de l’utilisation de l’identifiant de session :

import requests
import time

# creating the session
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
first_request = {
    "cmd": "sessions.create",
    }

first_response = requests.post(url, headers=headers, json=first_request)
session_id = first_response.json().get('session', {})

# using the session id
second_request = {
    "cmd": "request.get",
    "url": "https://www.datanearme.co/",
    "maxTimeout": 60000,
    "session":f"{session_id}"
}
second_response = requests.post(url, headers=headers, json=second_request)
print("Status:", second_response.json().get('status', {}))

Vous pouvez trouver tous les scripts Python dans ce dépôt GitHub.

Vous avez maintenant exploré comment faire des requêtes avec FlareSolverr et interpréter les réponses, mais il est tout aussi important de comprendre comment gérer les échecs.

Dépannage de vos requêtes FlareSolverr

Cloudflare met fréquemment à jour ses protocoles, et les différences entre les sites Web et les cas d’utilisation peuvent entraîner un comportement inattendu. Cette section traite des erreurs courantes, de la façon dont FlareSolverr les traite et de ce que vous pouvez faire pour résoudre les problèmes.

Pour dépanner vos requêtes de scraping, commencez toujours par ce qui suit :

  • Journal de bord de FlareSolverr

Voici quelques erreurs plus spécifiques et la manière dont vous pouvez y remédier :

  • Échecs répétés du challenge/CAPTCHA : cela peut signifier que le site a marqué vos demandes comme suspectes. Modifiez vos demandes et changez de proxy pour vous rapprocher davantage du comportement réel des utilisateurs. Les cookies peuvent également expirer. Veillez donc à les actualiser régulièrement tout en conservant vos sessions de demande.
  • Erreur dedéfi non détecté: Cette erreur peut être due à l’absence de défi, à la présence de mesures de sécurité non reconnues et incompatibles avec FlareSolverr, à l’utilisation d’une version obsolète de FlareSolverr ou au fait que le défi a été délibérément caché. Vous pouvez toujours obtenir le contenu souhaité si un défi n’est pas détecté, mais si cela ne fonctionne pas, essayez de mettre à jour votre version de FlareSolverr et refaites un test pour identifier le problème.
  • Les cookies fournis par FlareSolverr ne sont pas valides: Cette erreur se produit lorsque les cookies renvoyés par FlareSolverr ne fonctionnent pas correctement. Elle se produit souvent en raison de la non-concordance des adresses IP ou des réseaux entre Docker et FlareSolverr, en particulier lors de l’utilisation de réseaux privés virtuels.

Vous pouvez toujours trouver plus d’informations en ligne si vous rencontrez d’autres problèmes non mentionnés ici. Il existe une grande communauté open source derrière FlareSolverr, il est donc fort possible qu’une solution à vos problèmes soit déjà disponible.

FlareSolverr Alternatives

FlareSolverr est un outil open source conçu pour les utilisateurs ayant les compétences techniques nécessaires pour construire sur ses fondations. Cependant, il n’est pas toujours à jour avec les derniers changements de Cloudflare, ce qui peut affecter les opérations sensibles au temps. Depuis janvier 2025, ses résolveurs CAPTCHA ne sont pas fonctionnels, et certains sites présentent à Cloudflare des défis qu’il ne peut pas contourner.

Si vous avez besoin d’une solution pour le scraping à grande échelle ou d’un contournement plus robuste de Cloudflare, les alternatives suivantes offrent des fonctionnalités et une fiabilité supplémentaires :

  • Navigateur de scraping : Un navigateur de scraping est un navigateur GUI conçu spécifiquement pour le scraping web avec des fonctionnalités telles que la rotation automatisée du proxy et la résolution intégrée du CAPTCHA. Le navigateur Bright Data Scraping Browser offre une intégration facile avec des cadres web tels que Playwright, Puppeteer et Selenium, permettant des flux de travail programmatiques directement liés à un environnement de navigateur interactif à l’échelle.
  • API de grattage Web : Les API Web Scraper sont des cadres déjà intégrés à des domaines cibles, qui vous permettent de collecter des données à la demande sans passer par le processus de scraping manuel. Elles sont faciles à utiliser, avec des structures de données prêtes à l’emploi et une architecture permettant de gérer les appels de données en masse. Les API de Bright Data Web Scraper se connectent à un certain nombre de domaines populaires, tels que LinkedIn, Zillow, Yelp et Instagram, offrant une collecte de données 100 % conforme.
  • Jeux de données à la demande : Avec les ensembles de données à la demande, vous bénéficiez d’un service géré pour des ensembles de données prêts à l’emploi. Il s’agit d’un moyen simple d’obtenir les données dont vous avez besoin, déjà structurées et formatées pour vos opérations de données. Bright Data propose une vaste place de marché pour divers ensembles de données populaires, tels que les profils LinkedIn et Instagram, les produits Walmart et Shein, et les listes Booking.com. Ces ensembles de données sont maintenus et mis à jour régulièrement, avec des plans d’abonnement pour l’accès aux données.
  • Solution de scraping gérée: Enfin, les solutions entièrement gérées peuvent rationaliser le processus de scraping grâce à des fonctions permettant de prendre en charge la plupart des éléments de sécurité des sites web, tels que le rendu du javascript, les empreintes digitales du navigateur, le captcha et la géolocalisation. Par exemple, le Web Unlocker de BrightData peut déverrouiller n’importe quel domaine.

Conclusion

Dans cet article, vous avez exploré FlareSolverr et la façon dont il peut contourner les défis de Cloudflare. Vous avez configuré FlareSolverr pour le scraping multiproxy et le maintien de l’accès aux données au cours de plusieurs requêtes. Enfin, vous avez appris comment dépanner vos requêtes FlareSolverr et les erreurs courantes que vous pourriez rencontrer.

Si vous êtes à la recherche d’un outil de collecte de données cohérent et conforme, notre navigateur de scraping et nos Web Scrapers offrent des outils optimisés pour vos processus de scraping. Vous bénéficiez de services gérés avec des proxies fiables, d’une interface utilisateur intuitive et d’un taux de réussite de près de 100 % pour le web scraping.

Inscrivez-vous maintenant et commencez votre essai gratuit !

Aucune carte de crédit requise