← Toutes les réponses

Comment scraper un site web protégé par Cloudflare sans recevoir de 403 ?

Cloudflare renvoie un 403 lorsqu’une règle WAF, son Browser Integrity Check ou son score de bot signale votre requête comme automatisée ; vous l’évitez donc en supprimant ce qui fait paraître votre client automatisé : une poignée de main TLS qu’aucun navigateur n’envoie, des en-têtes absents ou inhabituels, l’absence d’exécution JavaScript et des rafales de requêtes qui déclenchent les règles du site. D’après la documentation de Cloudflare, le score de bot va de 1 (Cloudflare est quasiment certain que la requête était automatisée) à 99 (quasiment certain qu’elle provenait d’un humain), et une requête sans en-tête User-Agent reçoit immédiatement un score de 1. Vous pouvez combler ces lacunes avec un vrai navigateur, ou envoyer l’URL à une API de scraping comme ScrapeUnblocker qui renvoie la page rendue.

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

La documentation de Cloudflare liste plusieurs fonctionnalités susceptibles de répondre par un 403 : les règles WAF personnalisées ou gérées avec une action de blocage ou de challenge, le paramètre Security Level, la protection DDoS, le Browser Integrity Check et la plupart des erreurs 1xxx. Le code d’erreur vous indique quelle couche s’est déclenchée. L’erreur 1020 (“Access denied”, soit accès refusé) signifie qu’une règle de pare-feu définie par le propriétaire du site vous a bloqué. L’erreur 1010 signifie que le propriétaire a interdit votre accès “based on your browser’s signature” (en fonction de la signature de votre navigateur). Le Browser Integrity Check soumet à un challenge les visiteurs sans user agent ou avec un user agent non standard. Les sites qui achètent Cloudflare Bot Management peuvent aussi utiliser les empreintes JA3 et JA4, qui identifient un client par la façon dont il ouvre la connexion TLS, ainsi que des détections JavaScript qui identifient les navigateurs headless. C’est pourquoi des en-têtes de navigateur collés dans un script Python peuvent quand même recevoir un 403. L’explication complète se trouve dans Empreinte TLS : pourquoi votre scraper Python se fait bloquer.

Comment scraper un site Cloudflare sans 403, étape par étape ?

  1. Lisez le blocage. Un 1020 renvoie à une règle du site, un 1010 à la signature de votre client, une page de challenge à une vérification que votre client n’a pas encore passée.
  2. Corrigez l’empreinte TLS. requests en Python envoie une poignée de main qu’aucun navigateur n’envoie ; curl_cffi peut en imiter une.
  3. Utilisez un vrai navigateur pour les pages de challenge. Le Non-Interactive Challenge de Cloudflare exécute du JavaScript qui “typically takes less than five seconds” (prend généralement moins de cinq secondes) ; un client HTTP ne peut pas l’exécuter.
  4. Gardez la clearance là où elle a été obtenue. Le cookie cf_clearance de Cloudflare “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 pour lesquels il a été émis) ; réutilisez-le donc depuis le même navigateur et la même IP (persistance de session).
  5. Ralentissez. Les règles de limitation de débit peuvent déclencher des challenges, et Cloudflare recommande de limiter le débit de chaque cookie cf_clearance.
  6. Vérifiez le contenu, pas le statut. Une page de challenge peut arriver avec un 200 (blocages silencieux).
  7. Ou déléguez. Le /getPageSource de ScrapeUnblocker effectue toujours le rendu dans un vrai navigateur, et son guide de gestion des échecs suggère de changer de proxy_country après un 403.

Combien une API de scraping facture-t-elle les pages protégées par Cloudflare ?

ScrapeUnblocker facture un crédit par requête quel que soit le site, de 1,00 € les 1 000 requêtes en paiement à l’usage à environ 0,55 € les 1 000 avec l’offre Ultimate à 1 000 €, et un 403 n’est pas facturé. Certaines API à crédits facturent au contraire un supplément pour Cloudflare. La documentation de ScraperAPI liste “Cloudflare Bypass” et “Cloudflare Turnstile Bypass” (contournement de Cloudflare et de Cloudflare Turnstile) à 10 crédits par scrape (la FAQ de ses tarifs indique que les sites protégés “add 10 credits per request”, soit ajoutent 10 crédits par requête), et la documentation de Scrapingdog indique que son Stealth Mode “enables bypassing Cloudflare and similar bot protection systems” (permet de contourner Cloudflare et les systèmes de protection anti-bot similaires) à 10 crédits par requête. Sur les pages qui ne nécessitent aucun contournement, ces API commencent à 1 crédit : l’offre Business de ScraperAPI, à 299 $ pour 3 000 000 de crédits API, revient à environ 0,10 $ les 1 000 requêtes à un crédit, contre 0,55 € à 1,00 € les 1 000 sur ScrapeUnblocker (devises différentes, non converties). Le test équitable est 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 24 septembre 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 · 500 requêtes gratuites à l'inscription.