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.
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.
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.
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:
Nella richiesta per risolvere GeeTest CAPTCHA v3 è necessario specificare i seguenti parametri:
type - GeeTestTask;
websiteURL - l'indirizzo della pagina in cui l'utente supera il captcha. L'URL corretto viene passato nell'intestazione Referer nella richiesta a https://api-na.geetest.com/gettype.php;
gt - chiave identificativa GeeTest gt per il dominio;
challenge - prima di ogni task è necessario inviare una richiesta da cui viene restituito un nuovo valore di challenge; in caso contrario un token scaduto genererà l'errore ERROR_TOKEN_EXPIRED;
geetestApiServerSubdomain - sottodominio del server Geetest API (deve essere diverso da api.geetest.com).
https://api.capmonster.cloud/createTask{
"clientKey":"YOUR_CAPMONSTER_CLOUD_API_KEY",
"task":
{
"type":"GeeTestTask",
"websiteURL":"https://www.example.com",
"gt":"022397c99c9f646f6477822485f30404",
"challenge":"7f044f48bc951ecfbfc03842b5e1fe59",
"geetestApiServerSubdomain":"api-na.geetest.com"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"validate":"6275e26419211d1f526e674d97110e15",
"seccode":"510cd9735583edcb158601067195a5eb|jordan"
}
}// 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();
})();1. Registrati o accedi al tuo account GeeTest.
2. Vai al Captcha Dashboard e seleziona CAPTCHA v3:

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.

5. Configura la parte server (Server SDK):
Il server lavora con due API:
<?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:
Failback (modalità di riserva)
Se il server GeeTest non è disponibile:
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.