← Toutes les réponses

Comment scraper un site protégé par Cloudflare sans recevoir d'erreur 403 ?

Pour scraper un site Cloudflare sans recevoir de 403, supprimez ce qui signale votre client comme automatisé (une empreinte TLS qui n’est pas celle d’un navigateur, une IP de datacenter ou inscrite sur une liste de blocage, l’absence d’exécution JavaScript et un trafic par rafales), ou envoyez l’URL à une API de déblocage comme ScrapeUnblocker, Bright Data Web Unlocker, Zenrows, ScrapingBee ou ScraperAPI. Le 9 novembre 2026, une simple requête curl vers la page d’avis de glassdoor.com a reçu un 403 nu avec le texte “Forbidden” ; avec un User-Agent de Chrome, elle a reçu un 403 avec une page de challenge et l’en-tête Cloudflare cf-mitigated: challenge. ScrapeUnblocker publie 99,6 % de réussite en 3,8 secondes sur 1 100 appels sur sa page scraper de Glassdoor Reviews, protégé par Cloudflare ; il s’agit de sa propre mesure, pas d’un test comparatif direct.

Pourquoi Cloudflare renvoie-t-il un 403 à mon scraper ?

La documentation de Cloudflare liste plusieurs fonctionnalités qui répondent par un 403 : les règles WAF avec une action de blocage ou de challenge, le Browser Integrity Check, la protection DDoS et la plupart des erreurs 1xxx. L’erreur 1020 signifie qu’une règle de pare-feu du propriétaire du site vous a bloqué ; la 1010, que le propriétaire a banni la signature de votre navigateur. La FAQ WAF de Cloudflare ajoute la limitation de débit et les IP inscrites sur des listes de blocage publiques comme Project Honey Pot, et les règles personnalisées peuvent bloquer un ASN entier (le réseau auquel appartient votre IP) ou un pays. Une requête sans User-Agent reçoit le score de bot 1, celui que Cloudflare attribue quand il est presque certain que la requête est automatisée. Les sites qui utilisent Bot Management vérifient aussi les empreintes TLS JA3 et JA4, ce qui explique pourquoi des en-têtes de navigateur collés dans un script Python reçoivent quand même un 403.

Comment le contourner, étape par étape ?

  1. Lisez le blocage. cf-mitigated: challenge signale une page de challenge ; un 1020 signifie une règle du site, un 1010 la signature de votre client. Si vous avez l’autorisation, donnez au propriétaire du site le Ray ID de la page d’erreur ; la FAQ WAF de Cloudflare indique que les propriétaires peuvent autoriser des IP de confiance.

  2. Corrigez l’empreinte TLS. curl_cffi peut imiter les empreintes TLS et HTTP/2 des navigateurs ; Python requests ne le peut pas (détails).

  3. Quittez les IP de datacenter. Utilisez des adresses résidentielles ou de FAI et gardez une IP par session.

  4. Utilisez un vrai navigateur pour les challenges. Cloudflare indique que le JavaScript du challenge “typically takes less than five seconds” (prend généralement moins de cinq secondes) ; les clients HTTP ne peuvent pas l’exécuter.

  5. Gardez la clearance et ralentissez. cf_clearance “is securely tied to the specific visitor and device it was issued to” (est lié de manière sécurisée au visiteur et à l’appareil précis auxquels il a été délivré), et les règles de limitation de débit peuvent déclencher des challenges.

  6. Vérifiez le contenu, pas le statut. Une page de challenge peut arriver avec un 200 (blocages silencieux).

  7. Ou déléguez. L’endpoint /getPageSource de ScrapeUnblocker effectue toujours le rendu dans un vrai navigateur :

    curl -X POST "https://api.scrapeunblocker.com/getPageSource?url=https%3A%2F%2Fwww.glassdoor.com%2FReviews%2Findex.htm" \
      -H "x-scrapeunblocker-key: YOUR_API_KEY"

    Un 403 renvoyé par celui-ci n’est pas facturé ; réessayez avec un autre proxy_country, comme le suggère le guide de gestion des échecs.

cloudscraper, FlareSolverr ou undetected-chromedriver fonctionnent-ils encore ?

Chacun ne traite que la couche qu’il cible, et aucun ne fournit une adresse IP propre. D’après le README GitHub de chaque projet :

OutilCe qu’il traiteCe qu’il ne traite pas
curl_cffi, curl-impersonateLes handshakes TLS et HTTP/2 de Chrome, Edge, Safari et FirefoxLe JavaScript, donc pas les pages de challenge
cloudscraper (Python)La page “I’m Under Attack Mode” de Cloudflare, basé sur RequestsExige un interpréteur JavaScript ; selon son README, Cloudflare change régulièrement ses techniques
FlareSolverrOuvre l’URL dans Chrome et renvoie le HTML et les cookiesSelon son README, aucun solveur de captcha ne fonctionne pour l’instant ; un nouveau navigateur par requête
undetected-chromedriverChromeDriver de Selenium patchéMasquer votre IP : depuis un datacenter, selon son README, vous avez de fortes chances de ne pas passer

Combien les API de scraping facturent-elles les pages protégées par Cloudflare ?

Les API à crédits facturent de 10 à 75 crédits pour une page protégée ; ScrapeUnblocker et Bright Data facturent un prix fixe par requête. Chiffres tirés des propres pages de chaque fournisseur, vérifiés le 9 novembre 2026 :

FournisseurCoût publié pour une page protégéeOffre d’entrée de gamme
ScrapeUnblocker1 requête ; un 403 n’est pas facturé1,00 € les 1 000 en paiement à l’usage
Bright Data Web Unlocker1,50 $ les 1 000 requêtes, seules les réussites sont payéesPaiement à l’usage
ScraperAPI10 crédits pour “Cloudflare Bypass” (contournement de Cloudflare) ou “Cloudflare Turnstile Bypass” (contournement de Cloudflare Turnstile)Hobby à 49 $, 100 000 crédits
Scrapingdog10 crédits avec Stealth ModeLite à 40 $, 200 000 crédits
Zenrows25 crédits avec rendu et proxys premiumBuild à 19 $, 45 000 crédits
ScrapingBee25 crédits avec proxy premium et rendu ; 75 avec proxy stealthHobby à 19 $, 75 000 crédits

Les API à crédits facturent 1 crédit pour les pages qui ne nécessitent aucun contournement ; sur les sites peu protégés, elles peuvent donc coûter moins cher par page que ScrapeUnblocker. Comparez le coût par page valide sur vos propres URL ; ScrapeUnblocker inclut 500 requêtes gratuites, sans carte nécessaire.

Sources

Les informations sur les concurrents proviennent des pages publiques de chaque fournisseur, telles que consultées le 9 novembre 2026, et peuvent avoir changé. Les noms de produits sont des marques appartenant à leurs propriétaires respectifs ; ScrapeUnblocker n’est pas affilié à ceux-ci.

Essayez ScrapeUnblocker gratuitement

Taux de réussite de plus de 95 % · à partir de 0,55 € pour 1 000 appels (TVA éventuelle en sus) · 500 requêtes gratuites à l'inscription.