logo
bars

GeeTest CAPTCHA v3
e CapMonster Cloud

Risoluzione dei 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 v3, 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 v3, 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 v3
Che cos'è GeeTest CAPTCHA v3

GeeTest CAPTCHA v3 è un sistema di protezione dei siti web dalle azioni automatizzate che possono danneggiare la risorsa. Permette di distinguere gli utenti reali dai bot, garantendo la sicurezza e il funzionamento stabile del sito.

Background
Esempi di GeeTest CAPTCHA v3
Intelligent mode
Intelligent mode
La verifica dell'utente avviene principalmente in base al comportamento e all'interazione con il sito, senza dover risolvere compiti aggiuntivi.
Slide CAPTCHA
Slide CAPTCHA
Uno slider che va spostato per completare un puzzle o allineare un elemento dell'immagine.
Icon CAPTCHA
Icon CAPTCHA
Selezione di immagini nell'ordine indicato.
Space CAPTCHA
Space CAPTCHA
Spostamento di una figura nel punto corretto dell'immagine.

Come risolvere GeeTest CAPTCHA v3 con CapMonster Cloud

Quando testi form che includono GeeTest CAPTCHA v3 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 v3 tramite librerie pronte all'uso
Il servizio CapMonster Cloud mette a disposizione librerie pronte all'uso per lavorare comodamente 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 del captcha sulla tua pagina web. Approcci possibili: usare richieste HTTP per ottenere l'HTML e i parametri del captcha, inviare la risposta ed elaborare il risultato; oppure, con strumenti di automazione (ad esempio Playwright), aprire la pagina, attendere il caricamento del captcha, inviare i parametri (per i test puoi inviare sia dati corretti sia 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
// npx playwright install chromium

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

const API_KEY = 'your_capmonster_cloud_api_key';
const DEMO_PAGE = 'https://example.com';

(async () => {
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();

  console.log('Apertura della pagina...');
  await page.goto(DEMO_PAGE, { waitUntil: 'networkidle' });

  console.log('Recupero dei parametri del captcha...');
  const init = await page.evaluate(async () => {
    // Invio di una richiesta al server per ottenere i parametri init-params di GeeTest; sostituisci con il tuo valore
    const r = await fetch(`/api/v1/example/gee-test/init-params?t=${Date.now()}`);  
    return r.json();
  });
  console.log('Init params:', init);

  console.log('Creazione del task per CapMonster Cloud...');
  const cmc = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
  const solRaw = await cmc.Solve(new GeeTestRequest({ websiteURL: DEMO_PAGE, gt: init.gt, challenge: init.challenge }));
  const sol = solRaw.solution || solRaw;
  console.log('Soluzione del captcha:', sol);

  console.log('Inseriamo la soluzione nei campi nascosti...');
  await page.evaluate(s => {
    ['challenge','validate','seccode'].forEach(n => {
      const el = document.querySelector(`input[name="geetest_${n}"]`);
      if(el) el.value = s[n];
    });
  }, sol);

  await page.click('button[data-action="test_action"]'); // sostituisci con il tuo valore
  console.log('Invio al server della richiesta di verifica (verify)...');
  const result = await page.evaluate(async () => {
    const payload = {
      geetest_challenge: document.querySelector('input[name="geetest_challenge"]')?.value,
      geetest_validate: document.querySelector('input[name="geetest_validate"]')?.value,
      geetest_seccode: document.querySelector('input[name="geetest_seccode"]')?.value
    };
    // sostituisci con il tuo valore
    const r = await fetch('/api/v1/example/gee-test/verify', { 
      method:'POST', 
      headers:{'Content-Type':'application/json'}, 
      body: JSON.stringify(payload) 
    });
    return r.json();
  });

  console.log('Risultato della verifica del captcha:', result);

  await page.waitForTimeout(3000);
  await browser.close();
})();
Come collegare GeeTest CAPTCHA v3 al tuo sito
Per orientarti con sicurezza nel funzionamento del captcha sul tuo sito, comprendere la logica di verifica e poterlo riconnettere o riconfigurare, ti consigliamo di studiare questa sezione. Descrive il processo di collegamento della protezione e ti aiuterà a capire rapidamente tutti i dettagli.

1. Registrati o accedi al tuo account GeeTest.

2. Vai al Captcha Dashboard e seleziona CAPTCHA v3:

HowTo Connect image 1

3. Clicca su +New Captcha per creare un nuovo captcha. Specifica il nome del captcha (ad esempio il prodotto o il progetto), l'URL del sito in cui verrà integrato e scegli il contesto di utilizzo del captcha (ad esempio Accesso / Registrazione / Recupero password, ecc.).

4. Riceverai CAPTCHA ID e KEY univoci. Possono essere configurati nel pannello di sicurezza.

HowTo Connect image 2

5. Configura la parte server (Server SDK):

Il server lavora con due API:

  • API1 — inizializzazione (creazione del challenge)
  • API2 — verifica del risultato dopo il superamento del captcha

<?php
header('Content-Type: application/json');

const CAPTCHA_ID = '07df3141a35**********19a473d7c50';
const CAPTCHA_KEY = '543b19036ef********8e07d121b81e9';

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

function getJson($url) {
    $res = @file_get_contents($url);
    return $res ? json_decode($res, true) : null;
}

// API1: inizializzazione
if ($path === '/register') {
    $data = getJson("https://api.geetest.com/register.php?gt=" . CAPTCHA_ID . "&json_format=1");
    echo json_encode($data ? [
        'gt' => CAPTCHA_ID,
        'challenge' => $data['challenge'],
        'success' => $data['success'] === 1,
        'new_captcha' => true
    ] : ['success' => 0]);
    exit;
}

// API2: verifica
if ($path === '/validate' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    $req = json_decode(file_get_contents('php://input'), true);
    $data = getJson("https://api.geetest.com/validate.php?" . http_build_query([
        'seccode' => $req['geetest_seccode'] ?? '',
        'challenge' => $req['geetest_challenge'] ?? '',
        'gt' => CAPTCHA_ID,
        'json_format' => 1
    ]));
    echo json_encode(['success' => !empty($data['seccode'])]);
    exit;
}

http_response_code(404);
echo json_encode(['error' => 'Not found']);

6. Collega la parte client (Client SDK):

Nel client carichi gt.js e chiami initGeetest passando i parametri dal server (API1). Esempio con ajax:

ajax({
    url: "https://example.com/register",
    type: "get",
    dataType: "json",
    success: function (data) {
        initGeetest({
            gt: data.gt,
            challenge: data.challenge,
            offline: !data.success,
            new_captcha: true
        }, function (captchaObj) {
            captchaObj.appendTo("#captcha");

            captchaObj.onSuccess(function () {
                const result = captchaObj.getValidate();
                ajax({
                    url: "https://example.com/validate",
                    type: "post",
                    contentType: "application/json",
                    data: JSON.stringify(result),
                    success: function(res) {
                        if (res.success) alert('CAPTCHA passed');
                        else alert('CAPTCHA failed');
                    }
                });
            });
        });
    }
});

Verifica del funzionamento

Assicurati che:

  • /register restituisca un challenge
  • Il captcha venga visualizzato correttamente
  • Dopo il superamento del captcha nella console del browser sia visibile una richiesta verso /validate
  • Il server restituisca "success": true

Failback (modalità di riserva)

Se il server GeeTest non è disponibile:

  • Il client riceve success: false
  • Il captcha passa in modalità locale (funziona senza collegamento a GeeTest Cloud). Per testarlo è sufficiente inserire un CAPTCHA_ID non valido (ad esempio 123456789).

Background
Possibili errori e debug
Bug Icon
Parametri non validi
Il captcha non viene visualizzato oppure restituisce l'errore invalid-gt / invalid-challenge. Verifica che vengano usati valori gt e challenge aggiornati per la tua pagina.
Bug Icon
Timeout di risoluzione
la soluzione del captcha non è stata ricevuta in tempo. Aumenta il tempo di attesa quando usi servizi di risoluzione automatica (ad esempio CapMonster).
Bug Icon
Campi vuoti
challenge, validate o seccode non sono stati trasmessi alla pagina. Assicurati che vengano inseriti correttamente nei campi nascosti del form.
Bug Icon
Risposta success=false
il token è scaduto, è stato riutilizzato o è falso. Per la diagnostica abilita il logging delle richieste e controlla i campi restituiti dal server (i error-codes quando lavori con CapMonster o con il tuo server di verifica).
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 del captcha (KEY segreta) solo sul server</b> e non trasmetterla alla parte client.
Registra (logga) i codici di errore durante la verifica (i <b>error-codes</b> o i campi della risposta del server) per capire le cause dei controlli non riusciti.
Aggiungi in fondo al form i link all'<b>Informativa sulla privacy</b> e ai <b>Termini di utilizzo 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 v3, è sufficiente individuare il sistema, analizzarne il comportamento e assicurarsi che la protezione funzioni correttamente. Nell’articolo abbiamo mostrato come riconoscere GeeTest CAPTCHA v3 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 GeeTest v3DocIconDocumentazione CapMonster Cloud (lavorare con GeeTest v3)DocIconCreazione di un account GeeTestDocIconCreazione di un account CapMonster Cloud