Come scoprire quale protezione è attiva su un sito e cosa sta raccogliendo su di te
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.
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 |
|---|---|---|
|
|
|
|
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 |
|---|---|---|
|
|
|
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