Scarnox · Blog

Captcha AWS WAF spiegato e come gestirlo

Il captcha AWS WAF è una sfida servita dall'Web Application Firewall di Amazon quando un proprietario di sito lo ha configurato per verificare i visitatori. Una richiesta che il firewall ritiene sospetta riceve una pagina di sfida invece del contenuto. Il visitatore deve superare un controllo prima che si carichi la pagina vera. Se ti imbatti in questo durante un test o una raccolta di dati, devi sapere come riconoscerlo, cosa controlla il proprietario del sito e cosa può fare Scarnox oggi. Questa guida copre tutti e tre i punti.

Cos'è il captcha AWS WAF

AWS WAF è un motore di regole che si trova davanti a un'applicazione web, su Amazon CloudFront, un Application Load Balancer o un API Gateway. Le regole possono consentire, bloccare, contare o sfidare una richiesta. Una sfida può essere un controllo JavaScript silenzioso o un puzzle captcha visibile, a seconda di come è configurata la regola.

Il punto importante è che la decisione spetta al proprietario del sito. Il firewall non conosce lo scopo del tuo scraper. Valuta solo il traffico che vede: la frequenza delle richieste, la reputazione dell'IP, gli header e il comportamento del client.

Come riconoscerlo nel codice

Le sfide AWS WAF sono spesso riconoscibili dalle loro risposte. Un segnale comune è l'header di risposta x-amzn-waf-action, e una sfida viene spesso servita con stato HTTP 202 prima che compaia la pagina vera. Trattali come indizi, non come prove, perché i siti configurano il firewall in modi diversi:

import requests

def looks_like_aws_waf(resp: requests.Response) -> bool:
    # Un segnale dall'header, non una prova. Verifica sulla pagina che stai testando.
    return "x-amzn-waf-action" in resp.headers

resp = requests.get("https://example.com/products", timeout=30)
if looks_like_aws_waf(resp):
    print("Challenge served. Stop, slow down, and check your request rate.")
else:
    print("Status", resp.status_code)

Cerca anche uno script caricato da un percorso di sfida AWS WAF nel sorgente della pagina, e una pagina che non mostra contenuto finché non viene eseguito uno script. Una semplice chiamata requests spesso riceverà la pagina di sfida invece dei dati. È normale.

Cosa può fare il proprietario del sito

Se gestisci tu il sito, la console AWS WAF ti permette di regolare le regole che attivano una sfida. Le opzioni più utili sono:

Se stai testando il tuo sito, la soluzione più pulita è una allowlist per i tuoi runner di test. Non cercare di aggirare la sfida su un sito che non controlli. È la protezione del proprietario, ed è la prima cosa che farà saltare il tuo accesso.

A che punto è il supporto Scarnox

Quindi, se un sito con cui sei autorizzato a lavorare mostra oggi una sfida AWS WAF, le opzioni sono quelle sopra: rallenta, usa una allowlist se il sito è tuo, oppure chiedi al proprietario un'API o un feed di dati. Puoi creare un account e iniziare con crediti di prova gratuiti, senza carta di credito, per impostare il tuo flusso PopularCaptcha adesso ed essere pronto quando il supporto AWS WAF sarà attivo. I prezzi attuali sono nella pagina dei prezzi.

Testa il tuo sito dietro AWS WAF

Se sei il proprietario del sito e vuoi che i test automatici superino il firewall senza indebolirlo per i visitatori reali, usa gli strumenti del firewall invece di aggirare la sfida:

Questi passaggi mantengono la protezione attiva e rendono prevedibile il traffico di test, che è il risultato che ti serve davvero. Rivedi le regole dopo ogni modifica alla configurazione dei test, perché una regola corretta per i runner del mese scorso potrebbe ora bloccarli.

Scraping responsabile

Se il motivo per cui colpisci una pagina AWS WAF è raccogliere dati:

Prossimi passi