Amazon AWS WAF
e CapMonster Cloud

Risoluzione captcha, installazione sul sito e test.

Prezzi della soluzione Amazon AWS WAF

CAPTCHA
Prezzo (USD)
$ 1.40
1000 gettoni
Hai ereditato un sito con una captcha o un'altra protezione ma senza accesso al codice sorgente? È normale chiedersi quale soluzione sia installata, se sia configurata correttamente e come testarla.

In questo articolo abbiamo cercato di rispondere a tutte le domande principali. Il primo passo per risolvere il problema è capire quale sistema di protezione viene utilizzato. A questo scopo puoi consultare l’elenco dei captcha e dei sistemi di protezione antibot più diffusi, dove trovi esempi visivi e caratteristiche chiave che ti aiutano a identificare rapidamente con cosa hai a che fare.

Se scopri che sul tuo sito viene utilizzato Amazon AWS WAF, il passo successivo è analizzarne più nel dettaglio le proprietà e il funzionamento. In questo stesso articolo puoi anche studiare la guida all’integrazione di Amazon AWS WAF, per comprendere a fondo come opera sul tuo sito. Questo ti permetterà non solo di capire la protezione attuale, ma anche di pianificarne correttamente la manutenzione.

Cos'è AWS WAF di Amazon
Cos'è AWS WAF di Amazon

AWS WAF (Amazon Web Services Web Application Firewall) è un firewall per applicazioni web basato su cloud di Amazon, che protegge siti, API e applicazioni web da attacchi e traffico dannoso. In parole povere, è un filtro che si posiziona davanti al tuo sito o API e decide quale traffico di visitatori lasciar passare e quale bloccare.

Se sul sito è abilitato il Challenge/CAPTCHA, il visitatore potrebbe vedere una pagina di verifica separata. Gli verrà chiesto di completare un compito, ad esempio selezionare tutte le immagini di una categoria, per confermare di non essere un bot.

Come risolvere AWS WAF tramite CapMonster Cloud

Quando si testano risorse protette da AWS WAF, è importante assicurarsi che la protezione funzioni correttamente e sia integrata nel modo giusto.

Puoi verificare manualmente il funzionamento della protezione:

  • Apri la pagina con il modulo o la risorsa e assicurati che AWS WAF reagisca correttamente alle richieste.
  • Prova a eseguire azioni che potrebbero essere limitate dal WAF (ad esempio, richieste di massa, intestazioni sospette): il server dovrebbe bloccare tali richieste o restituire un errore.

Dopo aver superato con successo la verifica, AWS WAF imposta dei cookie che confermano che l'utente o il client ha superato il controllo e che il traffico fidato è consentito.

Per il riconoscimento automatico dei captcha è possibile utilizzare servizi specializzati, ad esempio CapMonster Cloud, uno strumento che accetta i parametri del captcha, li elabora sui propri server e restituisce cookie o token pronti. Questi possono essere inseriti nel browser per superare la verifica senza la partecipazione dell'utente.

Lavorare con CapMonster Cloud via API di solito prevede i seguenti passaggi:

Creazione della taskCreazione della task
arrow
Invio della richiesta APIInvio della richiesta API
arrow
Ricezione del risultatoRicezione del risultato
arrow
Sostituzione dei cookie aws-waf-token sulla paginaSostituzione dei cookie aws-waf-token sulla pagina
arrow
Riconoscimento di Amazon AWS WAF utilizzando librerie pronte
Il servizio CapMonster Cloud fornisce librerie pronte per lavorare comodamente nei linguaggi Python, JavaScript (Node.js) e C#.

Importante: questi esempi di codice utilizzano cookieSolution=False. Se come risultato hai bisogno di ottenere i cookie, imposta cookieSolution=True.

Python
JavaScript
C#
Soluzione, recupero parametri e impostazione cookie
Esempio in Node.js per il ciclo completo di riconoscimento del captcha sulla tua pagina web. Approcci possibili: utilizzare richieste HTTP per ottenere l'HTML e i parametri del sistema di protezione, inviare la risposta ed elaborare il risultato. Oppure tramite strumenti di automazione (ad esempio Playwright): aprire la pagina, attendere la verifica, inviare i parametri tramite il client CapMonster Cloud, ottenere il risultato, inserire i cookie nel browser (per i test puoi usare sia dati corretti che errati) e vedere il risultato.
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from "playwright";
import { CapMonsterCloudClientFactory, ClientOptions, AmazonRequest } from "@zennolab_com/capmonstercloud-client";

const API_KEY = "YOUR_API_KEY";
const CAPTCHA_URL = "https://example.com";

// Impostazioni proxy
const PROXY = {
    proxyType: "http",
    proxyAddress: "PROXY_HOST",
    proxyPort: 1234,
    proxyLogin: "PROXY_USER",
    proxyPassword: "PROXY_PASS"
};

(async () => {
    // 1) Apriamo la pagina tramite proxy e raccogliamo i parametri AWS WAF
    const browser = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const page = await browser.newPage();
    await page.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    // attendiamo il caricamento degli script challenge e captcha
    await page.waitForFunction(() => {
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return scripts.some(src => src.includes("challenge")) && scripts.some(src => src.includes("captcha"));
    });

    // estraiamo i parametri AWS WAF (chiave, context, iv, link agli script)
    const params = await page.evaluate(() => {
        const gokuProps = window.gokuProps || {};
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return {
            websiteKey: gokuProps.key || null,
            context: gokuProps.context || null,
            iv: gokuProps.iv || null,
            challengeScript: scripts.find(src => src.includes("challenge")),
            captchaScript: scripts.find(src => src.includes("captcha"))
        };
    });

    await browser.close();

    // 2) Risolviamo AWS WAF tramite CapMonster Cloud
    const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));

    const req = new AmazonRequest({
        websiteURL: CAPTCHA_URL,
        websiteKey: params.websiteKey,
        challengeScript: params.challengeScript,
        captchaScript: params.captchaScript,
        context: params.context,
        iv: params.iv,
        cookieSolution: true,
        proxy: PROXY
    });

    const solved = await client.Solve(req);
    const wafToken = solved.solution.cookies["aws-waf-token"];

    // 3) Inseriamo aws-waf-token e puliamo quelli vecchi
    const browser2 = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const context2 = await browser2.newContext();

    // pulizia dei vecchi aws-waf-token per il tuo dominio
    const existingCookies = await context2.cookies();
    const filteredCookies = existingCookies.filter(c => !(c.name === "aws-waf-token" && c.domain.endsWith(".your-domain")));
    await context2.clearCookies();
    await context2.addCookies(filteredCookies);

    // impostazione del nuovo aws-waf-token
    await context2.addCookies([{
        name: "aws-waf-token",
        value: wafToken,
        domain: ".your-domain",
        path: "/",
        httpOnly: false,
        secure: true
    }]);

    const page2 = await context2.newPage();
    const response = await page2.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    console.log("Final page status:", response.status());
    console.log("Final page URL:", page2.url());

    await browser2.close();
})();
Come collegare AWS WAF al tuo sito
Per orientarti con sicurezza nel funzionamento del captcha sul tuo sito, comprendere la logica della sua verifica, ricollegarlo o riconfigurarlo, ti consigliamo di studiare questa sezione. Descrive il processo di connessione della protezione — questo ti aiuterà a capire rapidamente tutte le sfumature.

AWS WAF non può essere installato direttamente su un sito. Funziona solo tramite risorse AWS:

  • Amazon CloudFront (l'opzione principale e migliore) — una CDN attraverso la quale è possibile proteggere qualsiasi sito. Funziona velocemente, a livello globale ed è adatta a quasi tutti i casi.
  • Application Load Balancer (ALB) — utilizzato per siti lato server, API e container all'interno di AWS. Se il tuo backend funziona su EC2, ECS, EKS — metti il WAF sull'ALB.
  • API Gateway — protezione di API REST e WebSocket. Adatto per SPA, applicazioni mobili e microservizi.
  • AWS AppSync (API GraphQL)
  • Amazon Cognito (login/registrazione)
  • AWS App Runner (applicazioni containerizzate)
  • AWS Amplify Hosting (hosting frontend)
  • AWS Verified Access (accesso ad applicazioni interne)

Passo 1. Crea un account AWS (se non ne hai uno)

Vai su: https://portal.aws.amazon.com/billing/signup. Crea l'account > conferma email e telefono.

Passo 2. Puoi usare l'interfaccia standard o la nuova interfaccia di AWS WAF:

  1. Vai alla console AWS
  2. Apri AWS WAF. Nel menu a sinistra clicca su Try the new experience (se offerto).

Passo 3. Crea un pacchetto di protezione (web ACL)

Questo è l'insieme delle regole di protezione per la tua risorsa.

  1. Nel menu a sinistra seleziona: Resources & protection packs (Web ACLs)
  2. Clicca su Add protection pack (web ACL).

Passo 4. Configura la categoria dell'applicazione:

Nel blocco Tell us about your app:

  • App category — seleziona Web / API / Both
  • Traffic source — da dove proviene il traffico (web, API o entrambi)

Questi parametri sono necessari affinché AWS offra regole ottimali.

Passo 5. Seleziona le risorse da proteggere

  1. Clicca su Add resources
  2. Scegli cosa stai collegando:

Se il tuo sito è su CloudFront > seleziona CloudFront distributions
Se il tuo backend è su ALB > seleziona Regional resources
Se API > seleziona API Gateway REST API
Spunta la casella sulla risorsa necessaria > clicca su Add.

Passo 6. Seleziona un set di regole iniziale.

AWS offrirà:

Recommended for you — l'opzione migliore per i principianti

Include:

  • protezione di base
  • regole contro SQLi e XSS
  • IP reputation lists (liste di reputazione IP)
  • Bot Control (opzionale)
  • regole per web/API

Clicca su Next.

Passo 7. Configurazione (opzionale)

Nella schermata Customize protection pack (web ACL):

Parametri principali:

  • Default action:
    • Allow all except blocked — di solito si sceglie questo
    • Block all except allowed — se il sito è chiuso
  • Default rate limits: Limite del numero di richieste (mitigazione DDoS L7)
  • IP addresses: Whitelist/Blacklist
  • Country specific origins: Restrizione del traffico per paesi

Logging

Scegli dove scrivere i log:

  • CloudWatch
  • S3
  • Firehose

(si raccomanda S3 + Athena).

Passo 8. Creare Web ACL

Clicca su: Add protection pack (web ACL)

AWS creerà le regole e le collegherà alla tua risorsa.

Verifica

Per assicurarsi che la protezione funzioni:

  1. Apri WAF > seleziona la tua web ACL
  2. Vai su Monitoring
  3. Osserva:
    • grafici del traffico
    • richieste bloccate
    • richieste campione (sample requests)

Aggiuntivo (opzionale)

  • Abilitare CAPTCHA o Challenge

    In qualsiasi regola > Action > CAPTCHA / Challenge

    Questo riduce il traffico dei bot e protegge le pagine di login e dei moduli.

  • Aggiungere Managed Rule Groups

    Nella sezione Rule groups puoi aggiungere:

    • AWS Managed
    • Bot Control
    • Account takeover prevention
    • Marketplace rules (F5, Imperva, Fortinet)
  • Collegare con Shield Advanced. Per la protezione da DDoS (L3–L7).

Background
Possibili errori e debug
Bug Icon
Dominio o regola non validi — Il Challenge non viene visualizzato
Verifica che l'AWS WAF WebACL sia collegato al dominio corretto (CloudFront Distribution / ALB / API Gateway), al percorso corretto e che non ci siano conflitti tra le regole.
Bug Icon
Timeout durante il caricamento della pagina o la verifica
A volte il browser o lo script non attende la risposta di AWS WAF. Aumenta i timeout nei test e assicurati che il backend elabori le richieste senza ritardi.
Bug Icon
Cookie AWS WAF scaduti
Gli _aws_waf_token_… obsoleti o i tag cookie correlati portano a un Challenge ripetuto o a un blocco temporaneo.
Bug Icon
Regole eccessivamente sensibili
Le firme di Bot Control troppo rigide, le regole CAPTCHA o le regole basate sulla frequenza (Rate-based) possono bloccare utenti reali.
Bug Icon
Configurazione errata della WebACL
Errori nell'ordine delle regole, nelle priorità o nelle condizioni possono portare a falsi positivi e blocchi.
Verifiche della resilienza della protezione
Dopo l'integrazione assicurati che il sistema protegga davvero il sito dalle azioni automatizzate.
Suggerimenti di sicurezza e ottimizzazione
Configura la WebACL in base al livello di rischio. Usa Managed Rules (AWS, AWS Marketplace), AWS Bot Control e regole personalizzate basate su reputazione IP, intestazioni, rate limiting e altre condizioni.
Registra gli eventi WAF. Abilita <a href="https://docs.aws.amazon.com/waf/latest/developerguide/logging.html" target="_blank">AWS WAF Logging (Kinesis Firehose / S3 / CloudWatch Logs)</a> per l'analisi dei falsi positivi e l'ottimizzazione delle regole.
Aggiungi link alla <span class="font-bold">Privacy Policy</span> e ai <span class="font-bold">Termini di utilizzo</span>. Questo è importante per la trasparenza e la conformità ai requisiti di sicurezza e alle aspettative degli utenti.
Conclusione

Se ti è capitato un sito con un captcha o un altro sistema di protezione già installato e senza accesso al codice, nessun problema! È piuttosto facile capire quale tecnologia viene utilizzata. Per verificare che tutto funzioni correttamente, puoi usare il servizio di riconoscimento CapMonster Cloud in un ambiente di test isolato, così da assicurarti che il meccanismo di elaborazione dei token e la logica di verifica funzionino correttamente.

Nel caso di Amazon AWS WAF, è sufficiente individuare il sistema, analizzarne il comportamento e assicurarsi che la protezione funzioni correttamente. Nell’articolo abbiamo mostrato come riconoscere Amazon AWS WAF e dove trovare le istruzioni per la sua integrazione o riconfigurazione, in modo da poter mantenere la protezione in modo affidabile e controllarne il funzionamento.

Conclusion
Link utili
DocIconDocumentazione AWS WAFDocIconDocumentazione CapMonster Cloud (lavoro con AWS WAF)DocIconPanoramica della protezione delle risorse web con AWS WAF

Domande frequenti su Amazon AWS WAF

I valori websiteKey, context e iv provengono dalla pagina di challenge AWS WAF e possono essere estratti dall'HTML di quella pagina o tramite JavaScript da window.gokuProps.key, window.gokuProps.context e window.gokuProps.iv. Puoi estrarli automaticamente usando i nostri script pronti all'uso.

Sono parametri legati alla sessione della pagina di challenge corrente, non valori statici generici da riutilizzare tra i tentativi.

Il campo booleano cookieSolution controlla il formato della soluzione AWS WAF restituita da CapMonster Cloud:

  • false — la risposta contiene captcha_voucher e existing_token
  • true — la soluzione include cookie con l'aws-waf-token pronto all'uso

Per i flussi di automazione del browser come Playwright, Puppeteer e Selenium, cookieSolution: true è solitamente l'opzione più conveniente, poiché restituisce cookie pronti all'uso che possono essere aggiunti direttamente alla sessione del browser.

Per impostazione predefinita, non è necessario fornire proxy propri per le attività AWS WAF, poiché CapMonster Cloud utilizza proxy integrati il cui costo è già incluso nel servizio.

Tuttavia, è necessario specificare proxy propri quando il sito web di destinazione non accetta il token o quando l'accesso ai servizi integrati è limitato. Se utilizzi un proxy con autorizzazione IP, assicurati di inserire nella whitelist l'indirizzo 65.21.190.34.

Un token AWS WAF valido non bypassa automaticamente il resto della logica Web ACL. AWS afferma che quando una richiesta ha un token valido per una regola CAPTCHA o Challenge, quella regola viene gestita in modo simile all'azione Count e AWS WAF continua a valutare la richiesta rispetto alle regole rimanenti nella Web ACL. Ciò significa che Bot Control, rate-based rules e altre regole possono ancora influenzare il traffico automatizzato, e AWS documenta separatamente gli scenari di falsi positivi per Bot Control.

In pratica, la risoluzione dei problemi dovrebbe concentrarsi sull'ordine delle regole, sulla priorità, sulle impostazioni del token e sui possibili falsi positivi, piuttosto che assumere che una CAPTCHA risolta da sola garantisca il passaggio.

I challenge AWS WAF ripetuti di solito si verificano quando il token è scaduto, il cookie aws-waf-token manca o è obsoleto, il tempo di immunità della sessione è terminato o la condivisione del token non è configurata per flussi multi-dominio.

Per gli sviluppatori di siti web: Imposta il tempo di immunità CAPTCHA o Challenge in base al comportamento reale degli utenti, configura un elenco di domini del token per domini correlati, verifica che l'integrazione JavaScript AWS WAF memorizzi correttamente il token e assicurati che regole Web ACL più rigorose non continuino a bloccare traffico legittimo dopo la risoluzione della CAPTCHA.

Per gli utenti di CapMonster Cloud: Usa dati di attività freschi dalla pagina di destinazione, passa il risultato nel formato richiesto tramite il cookie aws-waf-token o l'intestazione x-aws-waf-token, e crea una nuova attività con parametri aggiornati invece di riutilizzare una vecchia soluzione se i challenge continuano.