>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
JavaScript

Come scoprire quale protezione è attiva su un sito e cosa sta raccogliendo su di te

Scrapfly Anti-bot Detector banner

Chiunque abbia mai scritto un parser o configurato test end-to-end su siti reali si è trovato in una situazione in cui lo script improvvisamente riceve uno stato 403 o un reindirizzamento infinito a una pagina vuota. Ti siedi in DevTools, scorri le schede Network e Application, cercando di indovinare: è stato Cloudflare a bloccare la richiesta, DataDome ha inserito una checklist invisibile, oppure lo script della pagina ha silenziosamente preso un'impronta digitale di Canvas e WebGL?

Il team di Scrapfly ha rilasciato un'estensione Chrome open source chiamata Scrapfly Anti-bot Detector. Si tratta di uno strumento per ricercatori di sicurezza, pentester e sviluppatori di parser che analizza le pagine in tempo reale e mostra quali sistemi di protezione sono attivi e quali tecniche di fingerprinting vengono attivate in questo momento.

Detection overview

Cosa può rilevare l'estensione

L'estensione funziona su Manifest V3 e non invia dati a server esterni. Tutta l'analisi avviene localmente nel browser.

Classifica i meccanismi di protezione rilevati in tre categorie:

  • Sistemi di protezione anti-bot. Rileva Cloudflare, Akamai, DataDome, PerimeterX, Imperva, Kasada, Shape Security e AWS WAF.
  • CAPTCHA. Trova reCAPTCHA, hCaptcha, FunCaptcha, GeeTest e Cloudflare Turnstile.
  • Tecniche di fingerprinting digitale. Traccia 21 metodi di fingerprinting, tra cui Canvas, WebGL, AudioContext, font, WebRTC, Performance API, proprietà Navigator e Storage.

| Rilevamento | Cronologia | Editor regole | |---|---|---| | Detection | History | Rules |

Come funziona il rilevamento multilivello

I sistemi anti-bot raramente si rivelano con un header di risposta esplicito. Di solito distribuiscono la loro logica tra script, cookie e oggetti globali. L'estensione utilizza simultaneamente cinque livelli di analisi.

Innanzitutto, ispeziona il DOM. L'estensione cerca elementi di markup caratteristici, nomi di classi e script esterni collegati.

In parallelo, il service worker monitora le richieste di rete, filtrando header, cookie, URL delle richieste e i corpi dei payload inviati.

La parte più interessante sta nell'intercettare le chiamate alle API del browser. Prima che gli script della pagina inizino l'esecuzione (nello stage document_start), l'estensione inietta hook nel contesto principale della pagina (MAIN world). Se uno script di protezione tenta di disegnare un elemento nascosto su una canvas o richiedere parametri dell'audio context, l'hook registra la chiamata, raccoglie i parametri e li passa attraverso un bridge isolato al modulo di rilevamento.

Gli hook non rimangono attivi indefinitamente: vengono scaricati automaticamente dopo due secondi di inattività o 8 secondi dall'avvio della pagina.

| Strumenti di estrazione dati | Impostazioni | |---|---|---| | Advanced Tools | Settings |

Strumenti integrati per l'analisi approfondita

Oltre a un semplice elenco dei vendor rilevati, l'estensione include una sezione Strumenti avanzati. Risolve un problema pratico: estrarre i parametri necessari per il debug dell'automazione.

  • Per reCAPTCHA, hCaptcha e Turnstile, il modulo trova il SiteKey, i selettori dei container e i callback JavaScript registrati.
  • Per Akamai e DataDome, l'utilità intercetta i dati dei sensori generati e analizza la validità dei cookie di protezione.
  • Per FunCaptcha e GeeTest, analizza le chiavi pubbliche e i parametri delle challenge.
  • Per Imperva e Shape Security, esegue la scansione di header specifici e degli script di validazione associati.

Lo strumento può catturare dati da pagine di challenge intermedie prima che il browser esegua il reindirizzamento finale alla pagina di destinazione.

Architettura del progetto e nessuna fase di build

Il codice sorgente è scritto in JavaScript moderno puro senza bundler, Webpack o TypeScript. Per eseguire il progetto localmente, è sufficiente clonare la repository e caricare la cartella in Chrome tramite la modalità sviluppatore.

La struttura della repository è suddivisa in livelli chiari:

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/                   # Менеджеры состояния и обработчики

Tutte le firme di rilevamento e le regole sono estratte in file JSON nella directory detectors/. Puoi modificarle direttamente nell'interfaccia dell'estensione attraverso l'editor di regole integrato, aggiungendo le tue espressioni regolari, controlli per variabili di oggetti globali window o firme di cookie personalizzate.

Per l'ottimizzazione delle prestazioni, gli autori hanno utilizzato una cache LRU per le espressioni regolari compilate, che elimina il rischio di blocchi da ReDoS, e una cache dei risultati di 12 ore con uscita anticipata per corrispondenze ad alta confidenza.

I test sono scritti sul runner integrato node:test e non richiedono dipendenze esterne. Puoi eseguire il controllo della sintassi e i test con un singolo comando:

npm run verify

Per quali attività sarà utile

Prima di tutto, l'estensione fa risparmiare tempo agli sviluppatori di crawler e agli analisti di dati. Invece di scavare manualmente nel codice minificato e nei log di rete, puoi in un paio di secondi capire esattamente con chi hai a che fare e quali firme ambientali la pagina controlla.

Il secondo scenario è l'audit della propria protezione. Se stai configurando un WAF o un modulo anti-bot in produzione, l'estensione mostrerà chiaramente se un osservatore esterno può vedere le tue regole e se le challenge funzionano correttamente.

Infine, questo è un eccellente materiale didattico per chiunque voglia studiare come funziona Manifest V3, il trasferimento sicuro dei dati tra i contesti MAIN e ISOLATED, e i metodi di fingerprinting passivo. Il progetto è concesso in licenza sotto NPOSL-3.0 ed è disponibile nel Chrome Web Store.

Progetti correlati