Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Come bypassare i CAPTCHA con headless browsing e AI

Come bypassare i CAPTCHA con l'intelligenza artificiale e l'headless browsing in un contesto etico, didattico e legale
Come bypassare i CAPTCHA con l'intelligenza artificiale e l'headless browsing in un contesto etico, didattico e legale
Link copiato negli appunti

I CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) sono uno degli "ostacoli" più diffusi nel web. Servono a distinguere utenti reali dai bot e sono utilizzati da siti web per prevenire spam, abusi, scraping automatizzato e altri comportamenti indesiderati.

Ma cosa succede quando uno sviluppatore ha un bisogno legittimo di accedere a dati pubblici da un sito web che impone un CAPTCHA? O quando si lavora nel campo del testing automatico, dell'accessibilità, o della ricerca sull'intelligenza artificiale?

In questo articolo vedremo come funziona il bypass dei CAPTCHA attraverso headless browsing e tecniche di AI, in un contesto etico, didattico e legale. Il nostro obiettivo è informare, non incoraggiare l'abuso.

Cos'è un CAPTCHA?

I CAPTCHA sono test progettati per essere difficili da superare per le macchine ma semplici per gli esseri umani. I tipi più comuni includono:

  • testo distorto
  • reCAPTCHA di Google (v2: clic su "Non sono un robot", v3: punteggio invisibile)
  • Immagine (seleziona immagini con semafori, auto, ecc.)
  • Puzzle o slider CAPTCHA
  • hCaptcha, alternativa open source a reCAPTCHA
  • Il progresso dell'intelligenza artificiale ha reso questi sistemi sempre più sofisticati. Tuttavia, anche gli strumenti per automatizzare l'interazione con essi si sono evoluti.

    Headless Browsing: la base dell'automazione

    Un headless browser è un browser web privo di interfaccia grafica, controllabile via codice. Questo consente agli sviluppatori di automatizzare la navigazione come se fosse un utente reale. I più noti sono:

    Un esempio con Puppeteer:

    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch({
        headless: true,
        args: ['--no-sandbox']
      });
      const page = await browser.newPage();
      await page.goto('https://example.com');
    
      // Simula comportamento umano
      await page.waitForTimeout(2000);
      await page.type('#email', 'example@example.com');
      await page.click('#submit');
      await browser.close();
    })();

    Questo codice non bypassa CAPTCHA ma mostra come simulare un utente.

    Tecniche per aggirare i CAPTCHA

    Non esistono soluzioni magiche, ma ci sono approcci differenti in base al tipo di "ostacolo" da superare. Una possibilità è quella di evitare il CAPTCHA (strategia soft), spesso infatti essi si attivano dopo troppe richieste rapide o da IP sospetti.

    Ma passiamo ai "trucchi legittimi":

    • Limitare la frequenza delle richieste (Rate Limiting).
    • Usare proxy residenziali affidabili.
    • Impostare User-Agent Accept-Language Referrer
    • Simulare i movimenti di mouse e tastiera
    • await page.mouse.move(100, 100);
      await page.keyboard.type('ciao');

      Se invece si vogliono utilizzare dei servizi di riconoscimento, esistono API che decifrano i CAPTCHA tramite AI o interventi manuali. Ecco alcuni esempi di servizi (a pagamento):

      • 2Captcha
      • AntiCaptcha
      • CapMonster
      • DeathByCaptcha
      • Integrazione con 2Captcha (un esempio con reCAPTCHA):

        const axios = require('axios');
        async function solveCaptcha(siteKey, pageUrl, apiKey) {
          const submitUrl = `http://2captcha.com/in.php?key=${apiKey}&method=userrecaptcha&googlekey=${siteKey}&pageurl=${pageUrl}`;
          const res = await axios.get(submitUrl);
          const requestId = res.data.split('|')[1];
          await new Promise(r => setTimeout(r, 20000)); // Attendi la risoluzione
          const resultUrl = `http://2captcha.com/res.php?key=${apiKey}&action=get&id=${requestId}`;
          const result = await axios.get(resultUrl);
          const token = result.data.split('|')[1];
          return token;
        }

        Nel browser headless userai successivamente il token per simulare il completamento del CAPTCHA.

        AI e OCR per CAPTCHA visivi

        CAPTCHA basati su testo distorto possono essere risolti tramite OCR (Optical Character Recognition). Alcuni degli strumenti più utili sono:

        Di seguito un esempio con tesseract.js:

        const Tesseract = require('tesseract.js');
        
        Tesseract.recognize(
          'captcha.png',
          'eng',
          { logger: m => console.log(m) }
        ).then(({ data: { text } }) => {
          console.log('Testo riconosciuto:', text);
        });

        Ovviamente, il successo dipende dalla qualità dell'immagine e dal tipo di distorsione.

        Etica e legalità

        Bypassare CAPTCHA può violare i "Termini di Servizio" di molti siti web. L'utilizzo di questi metodi deve essere limitato a contesti di test, ricerca o automazione lecita, come:

        • QA automatizzato per web app protette da CAPTCHA.
        • Accesso a dati pubblici quando il sito fornisce consenso (o API).
        • Test di accessibilità o usabilità.
        • Formazione e dimostrazioni tecniche.

        Mai usarli per scraping massivo, furto di dati, spam o frodi.

        Tecniche difensive: proteggersi dai bot

        Conoscere queste tecniche è utile anche per difendere i propri progetti. Ecco alcune contromisure:

        • Integrare CAPTCHA solo quando necessario.
        • Adottare reCAPTCHA v3 (invisibile, punteggio comportamentale).
        • Combinare CAPTCHA con altri sistemi (token CSRF, honeypot, fingerprinting).
        • Alternative ai CAPTCHA per una UX più performante

          Il problema dei CAPTCHA è che spesso penalizzano l'utente legittimo. Alcune alternative includono:

          • Honeypot fields: campi nascosti che solo i bot riempiono.
          • Token di sessione temporanei.
          • reCAPTCHA v3, invisibile e più fluido.
          • Protezione lato server (rate limiter, AI..).
          • Conclusione

            Bypassare i CAPTCHA con tecniche di headless browsing e AI è possibile ma richiede una comprensione profonda di come funzionano i meccanismi di protezione online. Saperlo fare è utile per chi lavora nel testing, nella sicurezza informatica, nell'accessibilità e nella ricerca AI. Va però sempre tenuto presente che il confine tra uso lecito e abuso è molto sottile.

            L'obiettivo di questo articolo è fornire consapevolezza e strumenti per interagire con questi sistemi in modo etico. Se sviluppi applicazioni web, imparare a proteggerti da questi meccanismi è fondamentale tanto quanto saperli usare in fase di test. Se invece lavori nell'automazione o nella data analysis, il tuo compito è sempre rispettare i dati, le fonti e le regole del gioco.

            La tecnologia è potente ma va usata con intelligenza e rispetto. Sapere come funziona un CAPTCHA, anche nei suoi aspetti più nascosti, fa parte della conoscenza di ogni sviluppatore.

Ti consigliamo anche