Tornar al blog
Enginyeria Publicat el 27.08.2026 7 min de lectura

El CAPTCHA hi és, però no protegeix res

Un giny visible de reCAPTCHA, hCaptcha o Turnstile diu ben poc sobre si un formulari està protegit. Aquí trobarà els errors de configuració típics i com comprovar els seus formularis en pocs minuts.

Molts propietaris de llocs web afegeixen un CAPTCHA al formulari de contacte, veuen que apareix el petit distintiu o la casella de selecció i donen per resolt el problema dels missatges brossa. Després, la brossa continua arribant. Sovint, el CAPTCHA en si funciona bé: simplement no està connectat a res que pugui aturar un bot. Aquest article repassa les maneres habituals en què reCAPTCHA, hCaptcha i Cloudflare Turnstile acaben sent decoratius, i com comprovar els seus formularis.

On es produeix realment la protecció

Tots tres serveis funcionen segons el mateix principi. Un script al navegador executa les seves comprovacions i lliura al formulari un testimoni: una cadena curta que diu «aquest visitant ha superat la comprovació». El testimoni viatja amb l'enviament del formulari fins al seu servidor. És només allà on es pren la decisió real: el seu servidor envia el testimoni juntament amb una clau secreta al proveïdor i rep una resposta —èxit o error i, en el cas de reCAPTCHA v3, també una puntuació. Si falta qualsevol baula d'aquesta cadena, el giny continua tenint un aspecte perfectament normal, però un bot que envia directament al gestor del formulari hi passa sense obstacles.

La cadena de què depèn un CAPTCHA
1Es carrega l'script
L'script del proveïdor es carrega i té permís per executar-se a la pàgina del formulari.
2S'emet un testimoni
El navegador rep un testimoni de curta durada que només es pot utilitzar una vegada.
3S'envia el testimoni
El testimoni s'envia al servidor juntament amb els camps del formulari.
4El servidor verifica
El seu servidor comprova el testimoni amb el proveïdor mitjançant la clau secreta.
5El servidor decideix
L'enviament es rebutja si la resposta no és positiva (o, en el cas de v3, si la puntuació no és prou alta).
La protecció només existeix si tots els passos funcionen, i els decisius tenen lloc al servidor, fora de la vista.

La clau de prova que ho deixa passar tot

Google, hCaptcha i Cloudflare publiquen claus de prova especials perquè els desenvolupadors puguin executar proves automatitzades sense resoldre trencaclosques. Amb la clau secreta de prova corresponent, la verificació sempre té èxit: aquesta és precisament la seva finalitat. Estan pensades per a entorns locals i de preproducció, però sovint es mantenen en passar a producció: un desenvolupador les enganxa durant la creació del lloc, el lloc es publica i ningú no les substitueix. reCAPTCHA almenys mostra un avís al giny que indica que només és per a proves, però amb una configuració invisible gairebé ningú no s'hi fixa. Si tant la clau de lloc de prova com la clau secreta de prova són actives en producció, tots els enviaments superen la comprovació, tant si provenen d'una persona com d'un bot; si només la clau de lloc és de prova, la verificació falla i es poden rebutjar missatges reals.

Un testimoni que ningú no comprova

El segon clàssic és un servidor que mai no consulta el proveïdor. El giny s'executa, es crea i s'envia un testimoni i, després, el gestor del formulari simplement l'ignora. Les causes habituals són formularis escrits a mà, fragments de codi copiats que només cobreixen la part del navegador i configuracions de connectors a mig acabar. Un cas semblant: el servidor sí que crida el servei de verificació, però només comprova que la petició s'hagi completat, no què diu la resposta. O bé el llindar de puntuació de reCAPTCHA v3 està fixat a 0, cosa que accepta qualsevol puntuació que pugui retornar el servei. Alguns gestors també «accepten en cas d'error»: si falta el testimoni o falla la verificació, accepten el missatge igualment, i el bot simplement omet el testimoni.

Quan el giny no arriba a carregar-se realment

Altres errors de configuració afecten la part del navegador. Si la clau de lloc no està registrada per al domini —cosa habitual després de passar de preproducció a producció, d'un canvi de domini o d'un subdomini nou—, el proveïdor es nega a emetre testimonis i mostra un error al giny o a la consola del navegador. Després d'un canvi de tema o d'una actualització d'un connector, el marcatge del giny pot continuar a la pàgina, mentre que l'script que el fa funcionar ha desaparegut. Una eina de consentiment de galetes pot tenir el mateix efecte si bloqueja l'script del CAPTCHA fins que el visitant hi dona el consentiment. El que passa després depèn del servidor: si exigeix un testimoni vàlid, els visitants reals ja no poden enviar missatges i ningú no s'adona de les consultes perdudes; si no l'exigeix, els bots passen lliurement.

Hi ha dos casos més que és fàcil passar per alt. Amb reCAPTCHA v3, el distintiu a la cantonada només indica que l'script està carregat en algun punt de la pàgina —potser pel tema o per un altre connector—, mentre que la integració al connector del formulari està desactivada. A més, els connectors de memòria cau poden emmagatzemar una pàgina juntament amb un testimoni incrustat a l'HTML. Els testimonis CAPTCHA només són vàlids durant uns minuts i només es poden verificar una vegada; per tant, un testimoni a la memòria cau falla per als visitants reals. La temptadora «solució» de desactivar la comprovació elimina discretament la protecció.

Aparença i realitat
Què es veu
  • El giny mostra un avís que diu «for testing purposes only»
  • El distintiu v3 apareix a la cantonada
  • El giny es renderitza i retorna un testimoni
  • Els missatges brossa han deixat d'arribar, però les consultes reals també
Què pot estar passant
  • S'utilitzen claus de prova públiques i totes les verificacions tenen èxit
  • La integració de reCAPTCHA del connector del formulari està desactivada
  • El servidor mai no envia el testimoni per verificar-lo, o ignora el resultat
  • La clau de lloc no està registrada per al domini, o els testimonis de la memòria cau han caducat

Una breu autocomprovació

  1. 1Obri la pàgina del formulari en una finestra privada, obri les eines de desenvolupament del navegador i busqui a la consola errors de l'script del CAPTCHA.
  2. 2Comprovi que el giny apareix realment —una vegada abans i una altra després d'acceptar el bàner de galetes— i que el formulari no es pot enviar mentre no hi és.
  3. 3A la consola d'administració del proveïdor, comprovi que la clau de lloc inclou el seu domini de producció (amb variants com www) i que les claus del connector del formulari o del codi hi corresponen, en lloc de ser claus de la documentació o d'una configuració de preproducció.
  4. 4A la configuració del connector del formulari, asseguri's que la integració del CAPTCHA està activada per a aquest formulari concret; en el cas de reCAPTCHA v3, comprovi que el llindar de puntuació és superior a 0.
  5. 5Si té accés al codi, localitzi la verificació al servidor i comprovi que rebutja l'enviament quan la resposta és negativa o falta el testimoni.
  6. 6Exclogui la pàgina del formulari de la memòria cau de pàgina completa, o asseguri's que el navegador crea un testimoni nou.
  7. 7Enviï un missatge de prova real i comprovi que arriba; repeteixi la comprovació després de canviar el tema, els connectors o l'eina de consentiment.
Què pot veure una comprovació externa i què no
Les claus de prova, el marcatge del giny sense el seu script, els errors de consola i els scripts bloquejats són visibles des de l'exterior: una comprovació gratuïta a formexposed.com busca precisament aquests senyals sense enviar res. La qüestió de si el seu servidor verifica realment el testimoni no es pot determinar a partir de la pàgina; això només es pot comprovar al codi del servidor o en un enviament real.

Un CAPTCHA és una capa, no tota la protecció. Combinat amb un camp trampa, una comprovació temporal i filtratge al servidor, un error de configuració en un punt no deixa el formulari completament obert. Si vol obtenir ràpidament una visió de l'estat dels seus formularis, introdueixi el seu domini a formexposed.com: l'informe mostra si les parts de la configuració del CAPTCHA que són visibles des de l'exterior estan en ordre.