logo
bars

GeeTest CAPTCHA v4
e CapMonster Cloud

Risoluzione della captcha, integrazione sul sito e test.
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 GeeTest CAPTCHA v4, il passo successivo è analizzarne più nel dettaglio le proprietà e il funzionamento. In questo stesso articolo puoi anche studiare la guida all’integrazione di GeeTest CAPTCHA v4, 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.

Che cos'è GeeTest CAPTCHA v4
Che cos'è GeeTest CAPTCHA v4
GeeTest CAPTCHA v4 (Adaptive CAPTCHA/Behavior Verification) è una versione più moderna rispetto alla v3, pensata per proteggere i siti web dalle azioni automatizzate che possono danneggiare la risorsa. Il sistema traccia il comportamento e le caratteristiche del dispositivo del visitatore e seleziona un compito adeguato: per un utente reale il controllo sarà il più semplice possibile — è sufficiente un clic sul widget della captcha, mentre in caso di sospetto di automazione viene proposto un compito più complesso che l’utente deve superare.
Background
Esempi di GeeTest CAPTCHA v4
No CAPTCHA
No CAPTCHA
La verifica dell’utente avviene principalmente in base al suo comportamento e all’interazione con il sito, senza dover risolvere compiti espliciti.
Icon CAPTCHA
Icon CAPTCHA
Selezione di immagini nell’ordine indicato.
IconCrush CAPTCHA
IconCrush CAPTCHA
Scambiare gli elementi per allineare tre icone identiche in fila (come nei puzzle «match-3»).
Slide CAPTCHA
Slide CAPTCHA
Slider per comporre un puzzle o allineare elementi dell’immagine.
Gobang CAPTCHA
Gobang CAPTCHA
Slider per comporre un puzzle o allineare elementi dell’immagine.

Come risolvere GeeTest CAPTCHA v4 tramite CapMonster Cloud

Quando testi form che includono GeeTest CAPTCHA v4 devi spesso verificare che la captcha funzioni e sia integrata correttamente.

Puoi verificare manualmente la captcha inserita nel tuo sito.

  • Apri la pagina del form e assicurati che la captcha venga visualizzata.
  • Prova a inviare il form senza risolverla: il server dovrebbe restituire un errore.
  • Dopo una soluzione corretta il form deve essere inviato senza problemi.

Per la risoluzione automatica puoi usare strumenti come CapMonster Cloud, che accetta i parametri della captcha, li elabora sui propri server e restituisce un token pronto all'uso. Inserisci quel token nel form per superare il controllo senza intervento 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
Inserimento del token nella paginaInserimento del token nella pagina
arrow
Riconoscimento di GeeTest CAPTCHA v4 con librerie pronte all’uso
Il servizio CapMonster Cloud mette a disposizione librerie pronte per lavorare in modo comodo con Python, JavaScript (Node.js) e C#.
Python
JavaScript
C#
Risoluzione, inserimento del token e invio del form
Esempio in Node.js per l’intero ciclo di riconoscimento della captcha sulla tua pagina web. Approcci possibili: usare richieste HTTP per ottenere l’HTML e i parametri della captcha, inviare la risposta ed elaborare il risultato; oppure usare strumenti di automazione (ad esempio Playwright) per aprire la pagina, attendere la captcha, inviare i parametri (per i test puoi inviare dati sia corretti che errati), ottenere la soluzione tramite il client CapMonster Cloud, inserire il token nel form e vedere il risultato.
// npm install playwright @zennolab_com/capmonstercloud-client

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

const CAPMONSTER_API_KEY = "YOUR_CAPMONSTER_API_KEY";

async function solveGeetestV4(pageUrl) {
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext({ viewport: null });
  const page = await context.newPage();

  let detected = null;
  let solutionObj = null;

  // 1. Intercettare la risposta /load (rilevare captcha_id, challenge, ecc.)
  page.on("response", async (response) => {
    const url = response.url();
    if (!url.startsWith("https://gcaptcha4.geetest.com/load?")) return;

    const params = new URLSearchParams(url.split("?")[1] || "");
    const captchaId = params.get("captcha_id");
    const challenge = params.get("challenge");
    const captchaType = params.get("captcha_type");

    if (captchaId && challenge) {
      detected = { captchaId, challenge, captchaType };
      console.log("Detected GeeTest v4 load:", detected);
    }
  });

  // 2. Caricare la pagina
  console.log("Opening page:", pageUrl);
  await page.goto(pageUrl, { waitUntil: "domcontentloaded" });

  // 3. Attendere finché non viene intercettato /load
  console.log("Waiting for GeeTest /load...");
  while (!detected) {
    await page.waitForTimeout(500);
  }

  // 4. Inviare il task a CapMonster Cloud
  console.log("Sending task to CapMonster...");
  const cmc = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: CAPMONSTER_API_KEY })
  );

  const task = new GeeTestRequest({
    websiteURL: pageUrl,
    gt: detected.captchaId,
    challenge: detected.challenge,
    version: "4",
    initParameters: {
      riskType: detected.captchaType || "slide"
    }
  });

  const solveRes = await cmc.Solve(task);
  const sol = solveRes.solution || solveRes;

  solutionObj = {
    captcha_id: sol.captcha_id || detected.captchaId,
    captcha_output: sol.captcha_output,
    lot_number: sol.lot_number,
    pass_token: sol.pass_token
  };

  console.log("Got solution from CapMonster:", solutionObj);

  // 5. Inserire i propri valori in /verify per ottenere una risposta positiva
  await page.route("https://gcaptcha4.geetest.com/verify*", async (route) => {
    console.log("Intercepted /verify, injecting fake success...");
    const body = `geetest_${Date.now()}(${JSON.stringify({
      status: "success",
      data: {
        result: "success",
        seccode: {
          captcha_id: solutionObj.captcha_id,
          captcha_output: solutionObj.captcha_output,
          lot_number: solutionObj.lot_number,
          pass_token: solutionObj.pass_token
        }
      }
    })})`;

    await route.fulfill({
      status: 200,
      contentType: "application/javascript",
      body
    });
  });

  // 6. Imitare l’azione dell’utente (ad esempio clic sul pulsante della captcha)
  console.log("Waiting for captcha interaction...");
  await page.waitForTimeout(3000);

  // Esempio di chiamata di verifica:
  try {
    await page.click('.geetest_btn'); // pulsante della captcha
    console.log("Clicked captcha button");
  } catch {
    console.log("Captcha button not found");
  }

  // A volte è necessario chiamare verify() manualmente:
  await page.evaluate(() => {
    if (window.initGeetest4 && typeof verify === "function") {
      verify();
    }
  });

  console.log("Waiting for verification request...");
  await page.waitForTimeout(3000);

  await browser.close();

  return { detected, solution: solutionObj };
}
(async () => {
  const url = "https://example.com"; // sostituisci con una pagina che utilizza GeeTest v4
  const res = await solveGeetestV4(url);
  console.log("FINISHED:", res);
})();
Come collegare GeeTest CAPTCHA v4 al proprio sito
Per orientarti in modo sicuro nel funzionamento della captcha sul tuo sito, capire la logica di verifica e poterla ricollegare o riconfigurare, ti consigliamo di studiare questa sezione. Qui è descritto il processo di attivazione della protezione: ti aiuterà a comprendere rapidamente tutti i dettagli.

1. Registrati o accedi al tuo account GeeTest.

2. Vai al Captcha Dashboard e seleziona Behavior Verification v4:

HowTo Connect image 1

3. Nel pannello di controllo clicca su + Create application.

4. Specifica APP/website name (il nome del sito o dell’applicazione in cui verrà usata la captcha), Address (il dominio principale del sito in cui verrà installata la captcha, ad esempio https://example.com), Industry (la categoria del sito, ad esempio “E-commerce”, “Social Media” ecc.) e clicca su Confirm.

5. Clicca su Add events accanto al nome dell’applicazione appena creata. Specifica Event – il nome dello scenario concreto (evento) in cui verrà usata la captcha, ad esempio login, register ecc.; Device – la piattaforma (ad esempio Web/Wap); Business types – il tipo di scenario di utilizzo della captcha (ad esempio Sign-up / Sign-in — registrazione / accesso). Poi clicca su Add.

6. Nel tuo pannello vedrai ora l’ID (usato lato client e server) e la Key (usata lato server per la verifica) della captcha creata:

HowTo Connect image 2

7. Collega la parte client

Collega lo script:

<script src="https://static.geetest.com/v4/gt4.js"></script>

Inizializza la CAPTCHA:

initGeetest4(
  { captchaId: "Your CaptchaId" },
  function (captcha) {
    captcha.appendTo("#captcha"); // inserire in un elemento della pagina
  }
);

Importante:

  • La CAPTCHA deve essere inizializzata al caricamento della pagina, altrimenti non potrà tracciare il comportamento dell’utente.
  • Se utilizzi più CAPTCHA sulla stessa pagina, chiama initGeetest4 separatamente per ognuna.
  • Se usi la CAPTCHA all’interno di un iframe, aggiungi sandbox="allow-scripts allow-popups".

Esempio di codiceEsempio di codice
arrow

8. Configura la parte server.

Quando l’utente supera la CAPTCHA sul frontend, viene generato un set di parametri. È necessario inviarli al backend e poi verificarli tramite la secondary API di GeeTest per confermare che il controllo sia stato superato con successo.

Secondary verification API:

url
http://gcaptcha4.geetest.com/validate

  • Metodo: GET/POST
  • Content-Type: application/x-www-form-urlencoded
  • Risposta: JSON

Principali parametri della richiesta

  • lot_number – numero di serie della verifica
  • captcha_output – dati della verifica
  • pass_token – token di verifica
  • gen_time – orario di generazione della verifica
  • captcha_id – ID della CAPTCHA
  • sign_token – firma per la verifica

Esempio di risposta positivaEsempio di risposta positiva
arrow

Esempio di verifica della CAPTCHA in PHPEsempio di verifica della CAPTCHA in PHP
arrow

Background
Possibili errori e debug
Bug Icon
Parametri non validi
La captcha non viene visualizzata oppure restituisce errori come invalid-captcha-id / invalid-challenge. Controlla di usare valori aggiornati di captcha_id e challenge corrispondenti alla tua pagina. Questi parametri vengono generati dinamicamente a ogni richiesta /load.
Bug Icon
Timeout di soluzione
La soluzione della captcha non è stata ricevuta in tempo. Aumenta il tempo di attesa quando usi servizi di soluzione automatica (ad esempio CapMonster Cloud) e assicurati che la connessione all’API sia stabile.
Bug Icon
Campi vuoti
captcha_output, pass_token o lot_number non vengono passati alla pagina o alla richiesta di verifica. Assicurati che questi valori siano inseriti correttamente nei campi nascosti del form o nel corpo della richiesta verso il tuo server.
Bug Icon
Risposta success=false
Il token è scaduto, è stato riutilizzato oppure è falso. Abilita il logging di tutte le richieste e risposte del server di verifica, in modo da poter tracciare campi come error_code o error_msg.
Verifiche della resilienza della protezione
Dopo l'integrazione assicurati che il sistema protegga davvero il sito dalle azioni automatizzate.
Suggerimenti di sicurezza e ottimizzazione
Conserva la <b>chiave della captcha (KEY segreta) solo sul server</b> e non trasmetterla mai al lato client.
Registra (log) i codici di errore durante la verifica (<b>error-codes</b> o i campi della risposta del server) per capire i motivi dei controlli non riusciti.
Aggiungi in fondo al form i link all’<b>Informativa sulla privacy</b> e alle <b>Condizioni d’uso di GeeTest</b>, se richiesto dalla licenza o dalle tue policy interne.
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 GeeTest CAPTCHA v4, è sufficiente individuare il sistema, analizzarne il comportamento e assicurarsi che la protezione funzioni correttamente. Nell’articolo abbiamo mostrato come riconoscere GeeTest CAPTCHA v4 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