>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
JavaScript

Comment découvrir quelle protection est active sur un site et ce qu'elle collecte à votre sujet

Scrapfly Anti-bot Detector banner

Quiconque a déjà écrit un parser ou configuré des tests de bout en bout sur de vrais sites web a rencontré une situation où le script se retrouve soudain avec un code de statut 403 ou une redirection infinie vers une page vide. Vous vous asseyez dans DevTools, en faisant défiler les onglets Network et Application, en essayant de deviner : est-ce que Cloudflare a bloqué la requête, est-ce que DataDome a glissé une liste de contrôle invisible, ou est-ce que le script de la page a discrètement pris une empreinte Canvas et WebGL ?

L'équipe Scrapfly a publié une extension Chrome open source appelée Scrapfly Anti-bot Detector. C'est un outil pour les chercheurs en sécurité, les pentesters et les développeurs de parsers qui analyse les pages en temps réel et montre quels systèmes de protection sont actifs et quelles techniques d'empreinte digitale sont déclenchées à cet instant.

Detection overview

Ce que l'extension peut détecter

L'extension fonctionne avec Manifest V3 et n'envoie pas de données vers des serveurs externes. Toute l'analyse se fait localement dans le navigateur.

Elle classe les mécanismes de protection détectés en trois catégories :

  • Systèmes de protection anti-bots. Détecte Cloudflare, Akamai, DataDome, PerimeterX, Imperva, Kasada, Shape Security et AWS WAF.
  • CAPTCHA. Trouve reCAPTCHA, hCaptcha, FunCaptcha, GeeTest et Cloudflare Turnstile.
  • Techniques d'empreinte digitale. Suit 21 méthodes d'empreinte digitale, incluant Canvas, WebGL, AudioContext, polices, WebRTC, Performance API, propriétés Navigator et Storage.

| Détection | Historique | Éditeur de règles | |---|---|---| | Detection | History | Rules |

Comment fonctionne la détection multicouche

Les systèmes anti-bots se révèlent rarement avec un en-tête de réponse explicite. Habituellement, ils dispersent leur logique à travers des scripts, des cookies et des objets globaux. L'extension utilise cinq couches d'analyse simultanément.

Premièrement, elle inspecte le DOM. L'extension recherche des éléments de balisage caractéristiques, des noms de classes et des scripts externes connectés.

En parallèle, le service worker surveille les requêtes réseau, filtrant les en-têtes, les cookies, les URLs de requêtes et les corps des payloads soumis.

La partie la plus intéressante réside dans l'interception des appels d'API du navigateur. Avant que les scripts de la page ne commencent à s'exécuter (au stade document_start), l'extension injecte des hooks dans le contexte principal de la page (MONDE principal). Si un script de protection essaie de dessiner un élément caché sur un canvas ou de demander des paramètres de contexte audio, le hook enregistre l'appel, collecte les paramètres d'appel et les transmet via un pont isolé au module détecteur.

Les hooks ne restent pas actifs indéfiniment : ils sont automatiquement déchargés soit après deux secondes d'inactivité, soit 8 secondes après le démarrage de la page.

| Outils d'extraction de données | Paramètres | |---|---|---| | Advanced Tools | Settings |

Outils intégrés pour l'analyse approfondie

Au-delà d'une simple liste de vendors détectés, l'extension inclut une section Outils avancés. Elle résout un problème pratique : extraire les paramètres nécessaires pour le débogage de l'automatisation.

  • Pour reCAPTCHA, hCaptcha et Turnstile, le module trouve le SiteKey, les sélecteurs de conteneurs et les callbacks JS enregistrés.
  • Pour Akamai et DataDome, l'utilitaire intercepte les données de capteurs générées et analyse la validité des cookies de protection.
  • Pour FunCaptcha et GeeTest, il analyse les clés publiques et les paramètres de défi.
  • Pour Imperva et Shape Security, il scanne les en-têtes spécifiques et les scripts de validation associés.

L'outil peut capturer des données des pages de défi intermédiaires avant que le navigateur ne effectue la redirection finale vers la page cible.

Architecture du projet et sans étape de build

Le code source est écrit en JavaScript moderne pur sans bundlers, Webpack ou TypeScript. Pour exécuter le projet en local, il suffit de cloner le dépôt et de charger le dossier dans Chrome via le mode développeur.

La structure du dépôt est divisée en couches claires :

core/
├── manifest.json              # Конфигурация Manifest V3
├── background.js              # Service Worker, сетевой анализ
├── content.js                 # Content script в ISOLATED world
├── content-main-world.js      # JS-хуки в MAIN world
├── detectors/                 # Правила детекции в формате JSON
   ├── antibot/              # Cloudflare, Akamai, DataDome, Imperva
   ├── captcha/              # reCAPTCHA, Turnstile, hCaptcha
   └── fingerprint/          # Canvas, WebGL, Audio, Storage
└── modules/                   # Менеджеры состояния и обработчики

Toutes les signatures de détection et les règles sont extraites dans des fichiers JSON dans le répertoire detectors/. Vous pouvez les éditer directement dans l'interface de l'extension via l'éditeur de règles intégré, en ajoutant vos propres expressions régulières, des vérifications de variables d'objets globaux window ou des signatures de cookies personnalisées.

Pour l'optimisation des performances, les auteurs ont utilisé un cache LRU pour les expressions régulières compilées, ce qui élimine le risque de blocages par ReDoS, et un cache de 12 heures des résultats avec sortie anticipée sur les correspondances à haute confiance.

Les tests sont écrits sur le runner intégré node:test et ne nécessitent aucune dépendance externe. Vous pouvez exécuter la vérification de syntaxe et les tests avec une seule commande :

npm run verify

Pour quelles tâches cela sera utile

Avant tout, l'extension fait gagner du temps aux développeurs de crawlers et aux analystes de données. Au lieu de fouiller manuellement dans du code minifié et les logs réseau, vous pouvez en quelques secondes comprendre exactement avec qui vous avez affaire et quelles signatures d'environnement la page vérifie.

Le deuxième scénario est l'audit de votre propre protection. Si vous configurez un WAF ou un module anti-bot en production, l'extension vous montrera clairement si un observateur externe peut voir vos règles et si les défis fonctionnent correctement.

Enfin, c'est un excellent matériel d'apprentissage pour quiconque veut étudier comment fonctionne Manifest V3, le transfert sécurisé de données entre les contextes MAIN et ISOLATED, et les méthodes d'empreinte digitale passives. Le projet est sous licence NPOSL-3.0 et est disponible dans le Chrome Web Store.

Projets similaires