Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Cloudflare /crawl - Aspirez un site entier en un seul appel API

Par : Korben
11 mars 2026 à 13:47

Crawler un site entier, ça devrait pas être aussi compliqué. Et pourtant, entre les scripts maison qui cassent tous les 2 jours et les headless browsers qui bouffent de la RAM comme pas permis, c'est assez la galère ! Du coup, Cloudflare, dans sa grande bonté (lol) vient de sortir un endpoint /crawl (en open beta) dans la section Browser Rendering qui simplifie tout ça... vous balancez une URL dessus et hop, ça ASPIRE tout le site (oui oui).

En gros, vous envoyez une requête POST avec l'URL de départ, et le service se charge de découvrir les pages (via le sitemap, les liens internes, ou les deux), de les générer dans un navigateur headless, et de vous renvoyer le contenu en HTML, Markdown ou même en JSON structuré grâce à Workers AI. Le tout de manière asynchron ! Vous, vous récupérez juste un job ID et vous revenez plus tard chercher les résultats quand c'est prêt.

Créer votre token API

Avant toute chose, il vous faut un token API Cloudflare avec la permission "Browser Rendering - Edit". Rendez-vous dans votre dashboard Cloudflare, section API Tokens, et créez-en un nouveau. Notez aussi votre Account ID (visible dans l'URL du dashboard ou dans la section Overview de n'importe quel domaine).

Lancer un crawl

Là, ensuite c'est hyper simple. Un seul appel curl suffit :

curl -X POST "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl" \
 -H "Authorization: Bearer VOTRE_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{"url": "https://example.com"}'

Et là, vous récupérez un job ID en retour (genre c7f8s2d9-a8e7-4b6e-...). Par défaut, le crawler va explorer 10 pages max avec une profondeur quasi illimitée. Mais bon, 10 pages c'est vite limité, du coup vous pouvez ajuster tout ça comme ceci :

curl -X POST "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl" \
 -H "Authorization: Bearer VOTRE_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
 "url": "https://example.com/docs",
 "limit": 50,
 "depth": 3,
 "formats": ["markdown"],
 "render": false,
 "options": {
 "includePatterns": ["https://example.com/docs/**"],
 "excludePatterns": ["**/changelog/**"]
 }
 }'

Le paramètre render: false permet de récupérer le HTML brut sans lancer de navigateur headless, c'est carrément plus rapide pour les sites statiques. Sachez quand même que pendant la beta, ce mode n'est pas facturé ! Youpi !

Récupérer les résultats

Une fois le crawl lancé, vous interrogez le job avec un GET :

curl "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl/VOTRE_JOB_ID" \
 -H "Authorization: Bearer VOTRE_TOKEN"

Vous obtenez alors le statut (running, completed, errored...) et la liste des pages crawlées avec leur contenu dans le format demandé. Si le résultat dépasse 10 Mo, un curseur de pagination est inclus pour récupérer la suite.

Les options qui tuent

Y'a quelques paramètres bien pensés pour les cas plus avancés :

  • modifiedSince et maxAge pour du crawling incrémental (ne re-crawler que les pages modifiées récemment)
  • source: "sitemaps" pour ne suivre que le sitemap au lieu de parser tous les liens
  • jsonOptions avec un prompt Workers AI pour extraire des données structurées automatiquement (genre récupérer le nom, le prix et le stock de 500 fiches produit d'un e-commerce en une seule passe)
  • rejectResourceTypes pour bloquer images, fonts et CSS et accélérer le crawl
  • authenticate pour les sites protégés par une auth HTTP basique

Attention quand même, y'a quelques subtilités à savoir. Un job peut tourner 7 jours max et les résultats sont conservés 14 jours seulement, du coup pensez à les récupérer vite. Le crawler respecte le robots.txt (y compris le crawl-delay), et si un site vous bloque, les URLs apparaissent comme "disallowed" dans les résultats. Sauf que ça ne vous dit pas pourquoi, faudra aller checker le robots.txt vous-même.

Voilà, cette "merveille" pour les scrappeurs fous est dispo sur les plans Free et Paid de Workers , et si vous voulez aller plus loin, Cloudflare propose aussi des endpoints pour les screenshots, les PDF et le scraping ciblé .

Voilà, un petit crawler inclus dans le plan Free de Workers, qui respecte le robots.txt et qui sort du Markdown ou du JSON structuré... je vais surveiller ça de près !

Botasaurus - Le scraper qui rend Cloudflare aussi facile à contourner qu'un CAPTCHA de 2005

Par : Korben
12 août 2025 à 11:21

Hey les scrapers de l’espace là, vous en avez marre de vous battre contre Cloudflare comme si c’était le boss final d’un Dark Souls ? Et bien sûr, vous avez testé Selenium et Playwright mais vos bots se font démasquer plus vite qu’un menteur à l’Assemblée Nationale ? Alors ça tombe bien car j’ai trouvé votre nouveau meilleur ami, et il s’appelle Botasaurus.

Derrière ce nom de dinosaure se cache un framework Python open source, conçu pour le scraping web moderne. Créé par Omkar Cloud, il promet de faire passer vos bots pour des humains plus vrais que nature.

La première chose avec Botasaurus, c’est sa capacité à contourner les protections anti-bot. Il passe notamment la barrière de Cloudflare avec brio mais pas seulement, puisqu’il gère aussi très bien PerimeterX, BrowserScan, Fingerprint Bot Detection, et même les CAPTCHA Turnstile. Le créateur du framework a même publié une vidéo où il contourne tous ces systèmes en live. La grande classe !

Concernant Datadome, il semble cependant galérer encore un peu d’après les retours que j’ai eu.

Ce qui démarque Botasaurus, c’est surtout son approche “humane driver” car au lieu d’utiliser bêtement Selenium ou Playwright, le framework ajoute une couche d’humanisation qui simule des mouvements de souris réalistes, des temps de pause naturels, et même des patterns de navigation qui imitent un vrai utilisateur. Du coup vos bots passent incognito avec du style ^^.

Ce framework permet même d’économiser jusqu’à 97% sur les coûts de proxy. Comment ? Et bien en utilisant des requêtes fetch basées sur le navigateur au lieu de lancer un navigateur complet pour chaque requête. C’est malin et ça fait une sacrée différence sur la facture à la fin du mois.

Pour l’installation, c’est du Python classique :

python -m pip install --upgrade botasaurus

Et voici un exemple simple pour scraper un site :

from botasaurus.browser import browser, Driver

@browser
def scrape_heading_task(driver: Driver, data):
# Visite le site via Google Referrer (pour bypass Cloudflare)
driver.google_get(data['url'])

# Récupère le texte du titre
heading = driver.get_text('h1')

return {"heading": heading}

# Lance le scraping
scrape_heading_task()

Ce décorateur @browser gère automatiquement tout le setup du navigateur, les anti-détections, et même la sauvegarde des résultats en JSON. Comme ça, pas besoin de se prendre la tête avec la configuration.

Et pour les cas où vous avez besoin de contourner du Cloudflare plus agressif, il suffit d’ajouter un paramètre comme ceci :

driver.google_get(url, bypass_cloudflare=True)

D’après les benchmarks de ScrapingAnt, Botasaurus est plus furtif qu’undetected-chromedriver et puppeteer-stealth. C’est dire le niveau de sophistication atteint.

Un autre point fort de Botasaurus, c’est également la possibilité de transformer votre scraper en application desktop. En une journée, vous pouvez créer une app pour Windows, Mac et Linux avec une interface graphique complète. C’est génial, car ça vous éviter d’expliquer à vos clients comment lancer un script Python. Ils ont juste une app sur laquelle double-cliquer.

Le framework inclut aussi un serveur web intégré qui permet de créer une UI pour vos scrapers comme ça, avec quelques lignes de JavaScript, vous pouvez définir des formulaires d’input, des filtres, des exports en CSV/Excel, et même une API REST pour intégrer votre scraper ailleurs.

Ce framework brille donc particulièrement pour tout ce qui est :

  • Les sites avec protection Cloudflare basique à modérée
  • Le scraping local ou sur VPS avec peu de volume
  • La création rapide de scrapers avec UI
  • Les projets où l’anti-détection prime sur la performance pure

Par contre, pour du scraping massif à grande échelle ou contre des protections enterprise ultra-sophistiquées, vous devrez probablement combiner Botasaurus avec d’autres outils ou services.

Bref, c’est à tester !

❌
❌