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:
- Regole basate sulla frequenza che sfidano solo i client che inviano troppe richieste, così i visitatori normali passano.
- Allowlist per il tuo monitoraggio, la CI o gli intervalli IP dei partner, così i tuoi test non vengono sfidati.
- Una sfida solo sui percorsi sensibili, come login o checkout, invece che su tutto il sito.
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
- Attivo oggi: PopularCaptcha, proxyless e con il tuo proxy.
- In arrivo: AWS WAF, insieme a GeeTest, reCAPTCHA v2 e v3, Cloudflare Turnstile e Arkose. Non costruire un flusso di produzione che si basi su una risoluzione AWS WAF finché non è elencato come attivo.
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:
- Avvia una nuova regola in modalità count. Registra le richieste che sarebbero state sfidate senza influire su nessuno, così vedi esattamente cosa attivano i tuoi test.
- Attiva il logging di WAF verso Amazon CloudWatch Logs, Amazon S3 o Amazon Data Firehose. Il log ti dice quale regola è scattata e quale header o percorso l'ha causata.
- Dai all'ambiente di test un proprio dominio di staging con un set di regole separato, così la produzione resta protetta mentre la tua suite gira liberamente.
- Inserisci in allowlist solo gli intervalli IP o i valori degli header che usano i tuoi runner di test, e rivedi la lista ogni volta che i runner cambiano.
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:
- Leggi
robots.txte i termini di servizio del sito prima di inviare richieste. - Mantieni basso il ritmo delle richieste. Una sfida è spesso il sito che ti chiede di rallentare.
- Fermati quando il sito indica chiaramente che non vuole accesso automatico.
- Non raccogliere dati personali per cui non hai una ragione, e tratta con cura quelli che raccogli, nel rispetto delle norme sulla privacy applicabili.