Contourner les vérifications anti-bot avec Scrapling dans OpenClaw

Ashley Innocent

Ashley Innocent

5 March 2026

Contourner les vérifications anti-bot avec Scrapling dans OpenClaw

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Explorer Apidog Enterprise

En bref

Scrapling offre de puissantes capacités de contournement anti-bot grâce à ses modes StealthyFetcher et DynamicFetcher. Utilisez StealthyFetcher pour les sites protégés par Cloudflare (résolution automatique de Turnstile, randomisation des empreintes numériques de canvas, blocage WebRTC) ou DynamicFetcher pour les implémentations anti-bot fortement basées sur JavaScript. Intégrez-le à OpenClaw pour contrôler toutes les opérations de scraping via des commandes en langage naturel.

Introduction

Vous visitez un site web pour collecter des données. La page se charge. Puis vous le voyez : "Accès Refusé" ou un défi CAPTCHA. Le site a détecté votre scraper et a bloqué l'accès. Ce scénario se produit constamment pour les développeurs, les scientifiques des données et les chercheurs qui ont besoin de données web pour des projets légitimes.

Cela se produit parce que les sites web déploient de plus en plus de systèmes anti-bot sophistiqués. Cloudflare, PerimeterX, Akamai et d'autres services similaires analysent les empreintes numériques du navigateur, les schémas de comportement et les caractéristiques des requêtes pour identifier les accès automatisés. Les scrapers traditionnels échouent immédiatement face à ces défenses.

L'industrie de la détection de bots est devenue un marché de plusieurs milliards de dollars. Les entreprises investissent massivement dans la protection de leurs actifs numériques contre les accès automatisés. Cloudflare à lui seul déclare bloquer des milliards de requêtes de bots chaque jour. Cela crée des défis importants pour la collecte légitime de données, que ce soit pour des études de marché, des analyses concurrentielles, la surveillance des prix ou la recherche universitaire.

Scrapling résout ce problème. La bibliothèque inclut plusieurs modes anti-détection conçus spécifiquement pour contourner ces protections. Combiné à l'interface en langage naturel d'OpenClaw, vous pouvez demander à votre assistant IA de contourner les vérifications anti-bot sans écrire de code complexe.

💡
Pour les workflows de développement et de test d'API, Apidog fournit des outils complets qui complètent les capacités de scraping web, vous permettant de tester et de valider les données que vous collectez sur les sites protégés.
button

Comprendre la détection anti-bot

Avant de contourner la détection, vous devez comprendre comment elle fonctionne. Les systèmes anti-bot analysent plusieurs facteurs :

Empreinte numérique du navigateur (Browser Fingerprinting) : Les sites collectent des informations sur votre navigateur, y compris la résolution d'écran, les polices installées, le moteur de rendu WebGL, la sortie du canvas et des centaines d'autres signaux. Les outils automatisés se révèlent souvent par des empreintes numériques cohérentes qui diffèrent de celles des navigateurs réels.

Analyse comportementale : Les utilisateurs humains déplacent la souris de manière imprévisible, font défiler les pages à des vitesses variables et tapent avec un timing naturel. Les bots présentent souvent des schémas mécaniques : chargements instantanés des pages, vitesses de défilement uniformes, synchronisation parfaite entre les actions.

Analyse des requêtes : Chaque requête HTTP inclut des en-têtes, des empreintes TLS et des modèles de connexion. Les bibliothèques HTTP standard comme 'requests' effectuent des requêtes qui semblent clairement automatisées par rapport au trafic de navigateur réel.

Défis JavaScript : Les sites modernes exécutent du JavaScript pour collecter des informations sur le navigateur. Turnstile de Cloudflare, par exemple, exécute des tests invisibles qui vérifient l'intégrité du navigateur avant d'afficher le contenu.

Réputation de l'IP : Les adresses IP sont signalées en fonction du fournisseur d'hébergement, de l'historique d'activités suspectes et de la localisation géographique. Les IP des centres de données déclenchent une suspicion immédiate.

Scrapling aborde chacun de ces vecteurs de détection grâce à ses fetchers spécialisés.

Capacités anti-bot de Scrapling

Scrapling fournit deux fetchers principaux pour contourner les systèmes anti-bot :

StealthyFetcher gère la plupart des protections Cloudflare et similaires. Il utilise Chrome sans interface graphique (headless) avec des techniques d'évasion intégrées qui corrigent automatiquement les vecteurs de détection courants.

DynamicFetcher fournit une automatisation complète du navigateur via Playwright. Utilisez-le lorsque StealthyFetcher échoue ou lorsque le site utilise une détection avancée basée sur JavaScript.

Voici comment choisir :

Scénario Fetcher recommandé
Protection Cloudflare StealthyFetcher
CAPTCHA Turnstile StealthyFetcher
Détection de bot basique StealthyFetcher
Défis JavaScript complexes DynamicFetcher
Défilement infini avec anti-bot DynamicFetcher
Solutions anti-bot personnalisées DynamicFetcher

StealthyFetcher : Examen approfondi

StealthyFetcher est l'outil principal de Scrapling pour contourner les systèmes anti-bot. Il gère automatiquement la plupart des mécanismes de protection courants.

Utilisation de base

from scrapling.fetchers import StealthyFetcher

fetcher = StealthyFetcher()
page = fetcher.get('https://protected-site.com')
print(page.text)

Le fetcher tente automatiquement de contourner Cloudflare, PerimeterX et les protections similaires.

Contournement de Cloudflare Turnstile

Cloudflare Turnstile est l'un des défis anti-bot les plus courants. StealthyFetcher le résout automatiquement :

page = StealthyFetcher.fetch(
    'https://cloudflare-protected-site.com',
    solve_cloudflare=True
)

Le paramètre solve_cloudflare=True déclenche la résolution automatique du défi. Cela fonctionne à la fois pour les défis interstitiels (la page "Vérification de votre navigateur avant l'accès") et les widgets Turnstile.

Randomisation de l'empreinte numérique du Canvas

L'empreinte numérique du canvas crée des identifiants uniques basés sur la façon dont votre navigateur rend les graphiques. StealthyFetcher ajoute un bruit aléatoire aux opérations du canvas :

page = StealthyFetcher.fetch(
    'https://site.com',
    hide_canvas=True
)

Chaque requête génère une sortie de canvas différente, rendant le suivi d'empreintes numériques inefficace.

Prévention des fuites WebRTC

WebRTC peut exposer votre véritable adresse IP même en utilisant des proxys. StealthyFetcher bloque les requêtes WebRTC :

page = StealthyFetcher.fetch(
    'https://site.com',
    block_webrtc=True
)

Cela empêche les fuites d'IP locales qui pourraient révéler votre identité ou votre localisation.

Usurpation du référent de recherche Google

De nombreux sites autorisent l'accès s'ils pensent que le trafic provient de la recherche Google. StealthyFetcher usurpe ce référent :

page = StealthyFetcher.fetch(
    'https://site.com',
    google_search=True
)

Cela fait en sorte que la requête semble provenir de la page de résultats de recherche de Google.

Utilisation de Chrome installé

Pour une évasion maximale, utilisez votre navigateur Chrome installé au lieu du Chromium de Playwright :

page = StealthyFetcher.fetch(
    'https://site.com',
    real_chrome=True
)

Cela utilise votre véritable installation de Chrome, qui a une empreinte numérique de navigateur légitime.

Usurpation géographique

Faites correspondre votre requête à un emplacement spécifique :

page = StealthyFetcher.fetch(
    'https://site.com',
    locale='en-US',
    timezone_id='America/New_York'
)

Cela définit les paramètres de fuseau horaire et de langue du navigateur pour correspondre à l'emplacement souhaité.

DynamicFetcher pour la protection avancée

Certains sites utilisent des systèmes anti-bot sophistiqués que StealthyFetcher ne peut pas contourner. DynamicFetcher fournit une automatisation complète du navigateur avec Playwright :

from scrapling.fetchers import DynamicFetcher

fetcher = DynamicFetcher()
page = fetcher.get('https://highly-protected-site.com')
print(page.text)

Gestion du défilement infini

Les sites avec défilement infini et protection anti-bot nécessitent une automatisation du navigateur :

from scrapling.fetchers import DynamicFetcher
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    fetcher = DynamicFetcher(playwright=p)
    page = fetcher.get('https://site.com/infinite-scroll')

    # Wait for content to load
    page.wait_for_selector('.content-item')

    # Scroll to load more
    for _ in range(5):
        page.evaluate('window.scrollTo(0, document.body.scrollHeight)')
        page.wait_for_timeout(1000)

Attendre l'exécution de JavaScript

Certains contenus se chargent via JavaScript après le chargement initial de la page :

page = DynamicFetcher.get('https://site.com')
page.wait_for_load_state('networkidle')
content = page.content()

Cela garantit que tout le JavaScript a été exécuté avant l'extraction du contenu.

Gestion manuelle des CAPTCHA

Pour les CAPTCHA qui ne peuvent pas être résolus automatiquement :

page = DynamicFetcher.get('https://site.com')

# Check if CAPTCHA is present
if page.is_visible('.captcha-container'):
    # Take screenshot for manual solving
    page.screenshot(path='captcha.png')
    # After manual solve, continue
    page.click('.captcha-submit')

Vous pouvez faire une pause pour une intervention manuelle, résoudre le CAPTCHA vous-même et reprendre le scraping.

Utilisation avec OpenClaw

OpenClaw vous permet de contrôler les capacités anti-bot de Scrapling via le langage naturel (si vous voulez savoir comment configurer Scrapling dans OpenClaw, consultez cet article) :

Contourner Cloudflare sur un site :

"Récupérer les données produit de https://shop.example.com, ce site a une protection Cloudflare"

OpenClaw utilise automatiquement StealthyFetcher avec solve_cloudflare activé.

Gérer un site avec une protection avancée :

"Scraper les offres d'emploi de https://careers.example.com, utiliser le mode navigateur sans tête car ils ont une forte protection anti-bot"

OpenClaw passe à DynamicFetcher pour une automatisation complète du navigateur.

Utiliser la rotation de proxy :

"Extraire les données de ces 100 URL, faire pivoter ces proxys : proxy1.com:8080, proxy2.com:8080, proxy3.com:8080"

OpenClaw distribue les requêtes sur plusieurs proxys.

Usurper la localisation géographique :

"Obtenir les données de prix de https://site.com, utiliser les paramètres de la côte Est des États-Unis"

OpenClaw configure le fuseau horaire et les paramètres régionaux en conséquence.

Techniques anti-bot expliquées

Comprendre les techniques sous-jacentes vous aide à choisir la bonne approche :

Usurpation de l'empreinte TLS

Lorsque votre navigateur se connecte à un site web, il effectue une négociation TLS. Le message ClientHello inclut des caractéristiques qui identifient votre bibliothèque cliente. Les requêtes Python standard ont des empreintes distinctives que les systèmes anti-bot reconnaissent.

Scrapling usurpe les empreintes TLS pour apparaître comme des navigateurs légitimes. Cela se produit automatiquement avec StealthyFetcher et DynamicFetcher.

Rotation de l'User-Agent

L'envoi de requêtes avec la même chaîne User-Agent déclenche la détection. Scrapling fait pivoter automatiquement les User-Agents :

# L'User-Agent est automatiquement tourné
page = StealthyFetcher.get('https://site.com')

Chaque requête semble provenir d'une version de navigateur différente.

Usurpation d'en-tête

Les navigateurs réels envoient des en-têtes spécifiques dans un ordre spécifique. Scrapling garantit que les en-têtes correspondent automatiquement au comportement légitime du navigateur.

Randomisation du Canvas

Lorsqu'un site web demande à votre navigateur de dessiner quelque chose, les pixels exacts révèlent votre navigateur et votre GPU. Scrapling ajoute un bruit imperceptible aux opérations du canvas, rendant chaque empreinte numérique unique.

Résolution d'écran et taille de fenêtre

Les navigateurs sans interface graphique (headless) signalent souvent des tailles d'écran par défaut. Scrapling randomise les dimensions de la fenêtre d'affichage pour correspondre aux écrans d'utilisateurs réels.

Simulation du mouvement de la souris

DynamicFetcher peut simuler des mouvements de souris de type humain :

page.mouse.move_to_element('.button')
page.mouse.move_by_offset(50, 20)
page.click('.submit')

Cela ajoute des motifs de mouvement réalistes qui passent l'analyse comportementale.

Intégration de proxy

L'utilisation de proxys aide à éviter le blocage basé sur l'IP et permet le scraping géographique :

Utilisation de base des proxys

from scrapling.fetchers import StealthyFetcher

fetcher = StealthyFetcher()
page = fetcher.get(
    'https://site.com',
    proxy='http://username:password@proxy.example.com:8080'
)

Rotation de proxy

Pour le scraping à grande échelle, utilisez plusieurs proxys en rotation :

import random
from scrapling.fetchers import StealthyFetcher

proxies = [
    'http://proxy1.com:8080',
    'http://proxy2.com:8080',
    'http://proxy3.com:8080'
]

fetcher = StealthyFetcher()

for url in urls:
    proxy = random.choice(proxies)
    page = fetcher.get(url, proxy=proxy)
    # Process page

Proxys résidentiels

Les proxys résidentiels utilisent des adresses IP de véritables fournisseurs d'accès Internet. Ils sont plus difficiles à détecter que les IP des centres de données :

page = StealthyFetcher.get(
    'https://site.com',
    proxy='http://residential-proxy-provider:port'
)

Les proxys résidentiels coûtent plus cher mais offrent des taux de réussite nettement plus élevés sur les sites protégés.

Scénarios anti-bot courants

Protection Cloudflare

Cloudflare est la solution anti-bot la plus courante. La plupart des sites fonctionnent avec StealthyFetcher de base :

page = StealthyFetcher.fetch('https://cloudflare-site.com', solve_cloudflare=True)

Si Cloudflare affiche une page de défi, le fetcher la résout automatiquement et réessaie.

PerimeterX (maintenant Ownl)

PerimeterX (maintenant intégré à Ownl) utilise l'analyse comportementale :

# Utiliser DynamicFetcher pour PerimeterX
page = DynamicFetcher.get('https://perimeterx-site.com')

L'automatisation complète du navigateur gère mieux les défis comportementaux.

Akamai

Akamai offre une gestion des bots de qualité entreprise :

# Akamai nécessite souvent des proxys résidentiels
page = StealthyFetcher.get(
    'https://akamai-protected.com',
    proxy='http://residential-proxy:port',
    solve_cloudflare=True
)

Les sites protégés par Akamai nécessitent souvent de combiner plusieurs techniques d'évasion.

Solutions anti-bot personnalisées

Certains sites créent leurs propres systèmes de détection :

# Utiliser les paramètres de furtivité maximale
page = StealthyFetcher.fetch(
    'https://custom-protected.com',
    solve_cloudflare=True,
    block_webrtc=True,
    hide_canvas=True,
    google_search=True,
    real_chrome=True
)

Si cela échoue, passez à DynamicFetcher avec une automatisation complète du navigateur.

Bonnes pratiques

Commencer simple

Commencez avec le StealthyFetcher de base. N'ajoutez de la complexité que si vous rencontrez des blocages :

# Essayer le basique d'abord
page = StealthyFetcher.get('https://site.com')

# Ajouter l'évasion si nécessaire
if 'blocked' in page.text.lower():
    page = StealthyFetcher.fetch('https://site.com', solve_cloudflare=True)

Respecter les limites de débit

Même avec des capacités anti-bot, l'envoi de trop de requêtes déclenche la protection :

import time

for url in urls:
    page = StealthyFetcher.get(url)
    time.sleep(2)  # Attendre entre les requêtes

Utiliser des proxys résidentiels pour la production

Les proxys gratuits ou bon marché ont souvent une mauvaise réputation. Investissez dans des proxys résidentiels de qualité pour un scraping fiable :

# Proxy résidentiel de qualité
page = StealthyFetcher.get(
    'https://site.com',
    proxy='http://premium-residential-proxy:port'
)

Vérifier robots.txt

Vérifiez toujours si le site autorise le scraping :

# Vérifier robots.txt avant le scraping
from urllib.parse import urlparse

domain = urlparse('https://site.com').netloc
robots_url = f'https://{domain}/robots.txt'

Gérer les erreurs avec élégance

Intégrez la gestion des erreurs dans votre scraper :

from scrapling.fetchers import StealthyFetcher

fetcher = StealthyFetcher()

try:
    page = fetcher.get('https://site.com')
except Exception as e:
    print(f'Erreur: {e}')
    # Revenir à DynamicFetcher
    from scrapling.fetchers import DynamicFetcher
    fetcher = DynamicFetcher()
    page = fetcher.get('https://site.com')

Dépannage

Toujours bloqué

Si vous rencontrez des blocages malgré l'utilisation de StealthyFetcher :

  1. Activez toutes les options d'évasion :
page = StealthyFetcher.fetch(
    'https://site.com',
    solve_cloudflare=True,
    block_webrtc=True,
    hide_canvas=True,
    google_search=True,
    real_chrome=True
)
  1. Passez à DynamicFetcher :
from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.get('https://site.com')
  1. Ajouter la rotation de proxy :
page = StealthyFetcher.get(
    'https://site.com',
    proxy='http://residential-proxy:port'
)

Boucle de défi Cloudflare

Parfois, StealthyFetcher reste bloqué dans une boucle de défi :

  1. Augmentez le délai d'attente :
page = StealthyFetcher.fetch(
    'https://site.com',
    solve_cloudflare=True,
    timeout=120
)
  1. Utilisez real_chrome :
page = StealthyFetcher.fetch(
    'https://site.com',
    solve_cloudflare=True,
    real_chrome=True
)

Les CAPTCHA ne se résolvent pas

Certains CAPTCHA nécessitent une intervention manuelle :

page = DynamicFetcher.get('https://site.com')

if page.is_visible('[class*="captcha"]'):
    page.screenshot(path='manual_captcha.png')
    # Résolvez manuellement, puis continuez
    input('Appuyez sur Entrée après avoir résolu le CAPTCHA...')
    page.click('.submit-button')

Performances lentes

L'évasion anti-bot ajoute une surcharge. Pour un scraping plus rapide :

  1. Utilisez StealthyFetcher au lieu de DynamicFetcher lorsque c'est possible
  2. Ajoutez la mise en commun des connexions (connection pooling)
  3. Utilisez des proxys plus rapides
  4. Réduisez les options d'évasion inutiles

Conclusion

Le contournement des vérifications anti-bot nécessite de comprendre comment fonctionne la détection et d'utiliser les bons outils pour chaque situation. Scrapling fournit des solutions complètes via StealthyFetcher pour la plupart des systèmes de protection et DynamicFetcher pour les scénarios avancés.

Les principaux points à retenir :

Avec l'intégration OpenClaw, vous contrôlez toutes ces capacités via le langage naturel. Dites à votre assistant IA ce dont vous avez besoin, et il sélectionnera automatiquement l'approche anti-bot appropriée. Une fois vos données collectées, vous pouvez utiliser Apidog pour tester et valider les API, créer des suites de tests automatisées et générer de la documentation pour les points de terminaison que vous découvrez.

button

FAQ

Quelle est la différence entre StealthyFetcher et DynamicFetcher ?

StealthyFetcher utilise un Chrome sans interface graphique modifié avec des correctifs d'évasion intégrés. DynamicFetcher utilise l'automatisation complète de Playwright. StealthyFetcher est plus rapide mais peut échouer face à une détection avancée. DynamicFetcher est plus fiable mais plus lent.

Scrapling fonctionne-t-il contre tous les systèmes anti-bot ?

Aucune solution anti-bot ne fonctionne à 100 % du temps. Scrapling gère la plupart des systèmes courants (Cloudflare, PerimeterX, Akamai) de manière fiable. Les solutions personnalisées ou d'entreprise peuvent nécessiter des techniques supplémentaires ou une intervention manuelle.

Le contournement des anti-bots est-il légal ?

Les lois varient selon les juridictions et dépendent des conditions de service du site. Généralement, le scraping de données publiques est acceptable. Le contournement de l'authentification ou l'accès à des données privées sans autorisation franchit les limites légales.

Pourquoi mon scraping est-il toujours bloqué ?

Vérifiez ces problèmes courants : réputation de l'IP (utilisez des proxys résidentiels), limitation de débit (ajoutez des délais), évasion insuffisante (activez plus d'options), ou défis JavaScript (utilisez DynamicFetcher).

Comment gérer les CAPTCHA ?

StealthyFetcher résout automatiquement Cloudflare Turnstile. Pour les autres CAPTCHA, utilisez DynamicFetcher et mettez en pause pour une résolution manuelle, ou intégrez des services tiers de résolution de CAPTCHA.

Puis-je utiliser mon propre navigateur Chrome ?

Oui. Définissez real_chrome=True dans StealthyFetcher pour utiliser votre Chrome installé au lieu du Chromium de Playwright. Cela fournit une empreinte numérique de navigateur plus légitime.

Ai-je besoin de proxys ?

Pour le scraping à petite échelle, non. Pour les opérations de production ou à grande échelle, les proxys résidentiels améliorent considérablement les taux de réussite en évitant le blocage basé sur l'IP.

Comment faire pivoter les User-Agents ?

StealthyFetcher fait pivoter automatiquement les User-Agents. Pour un contrôle manuel :

fetcher = StealthyFetcher(headers={'User-Agent': 'Votre-UA-personnalisé'})

Quel est le taux de réussite contre Cloudflare ?

Avec une configuration appropriée, les taux de réussite dépassent 90 % pour la plupart des sites protégés par Cloudflare. Les défis Turnstile sont résolus automatiquement.

Puis-je scraper depuis plusieurs emplacements géographiques ?

Oui. Utilisez les paramètres timezone_id et locale :

page = StealthyFetcher.fetch(
    'https://site.com',
    timezone_id='Europe/London',
    locale='en-GB'
)

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API