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.
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.
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 v4 è necessario specificare i seguenti parametri:
type - GeeTestTask;
websiteURL - indirizzo della pagina in cui viene risolta la captcha;
gt - chiave identificativa GeeTest per il dominio – parametro captcha_id;
version - 4;
geetestApiServerSubdomain - sottodominio del server API di GeeTest (deve essere diverso da api.geetest.com);
geetestGetLib - percorso allo script della captcha per mostrarla sulla pagina. Può essere richiesto per alcuni siti;
initParameters - parametri aggiuntivi per la versione 4, usati insieme a “riskType” (tipo di captcha/caratteristiche della verifica).
https://api.capmonster.cloud/createTask{
"clientKey": "YOUR_CAPMONSTER_CLOUD_API_KEY",
"task": {
"type": "GeeTestTask",
"websiteURL": "https://gt4.geetest.com/",
"gt": "54088bb07d2df3c46b79f80300b0abbe",
"version": 4,
"initParameters": {
"riskType": "slide"
}
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "f5c2ad5a8a3cf37192d8b9c039950f79",
"lot_number": "bcb2c6ce2f8e4e9da74f2c1fa63bd713",
"pass_token": "edc7a17716535a5ae624ef4707cb6e7e478dc557608b068d202682c8297695cf",
"gen_time": "1683794919",
"captcha_output": "XwmTZEJCJEnRIJBlvtEAZ662T...[cut]...SQ3fX-MyoYOVDMDXWSRQig56"
}
}
// 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);
})();
1. Registrati o accedi al tuo account GeeTest.
2. Vai al Captcha Dashboard e seleziona Behavior Verification v4:

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:

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:
<!-- Colleghiamo lo script della CAPTCHA -->
<script src="https://static.geetest.com/v4/gt4.js"></script>
</head>
<body>
<h1>CAPTCHA Demo</h1>
<!-- Container per la CAPTCHA -->
<div id="captcha"></div>
<script>
// Inizializzazione della CAPTCHA
initGeetest4(
{
captchaId: "YOUR_CAPTCHA_ID" // sostituisci con il tuo CaptchaId
},
function (captcha) {
// Inseriamo la CAPTCHA nell’elemento della pagina
captcha.appendTo("#captcha");
// Qui puoi gestire il superamento della verifica
captcha.onSuccess(function() {
const validate = captcha.getValidate();
console.log("CAPTCHA passed!", validate);
// Qui puoi inviare validate al server per la verifica
});
}
);
</script>
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:
http://gcaptcha4.geetest.com/validatePrincipali parametri della richiesta
{
"status": "success",
"result": "success",
"reason": "",
"captcha_args": {
"used_type": "slide",
"user_ip": "127.0.0.1",
"lot_number": "4dc3cfc2cdff448cad8d13107198d473",
"scene": "anti crawler",
"referer": "http://127.0.0.1:8077/"
}
}<?php
$captcha_id = 'YOUR_CAPTCHA_ID';
$captcha_key = 'YOUR_CAPTCHA_KEY';
$api_server = 'http://gcaptcha4.geetest.com';
// Riceviamo i parametri dal frontend
$lot_number = $_POST['lot_number'] ?? '';
$captcha_output = $_POST['captcha_output'] ?? '';
$pass_token = $_POST['pass_token'] ?? '';
$gen_time = $_POST['gen_time'] ?? '';
// Generiamo la firma
$sign_token = hash_hmac('sha256', $lot_number, $captcha_key);
// Prepariamo i dati per la richiesta
$data = [
'lot_number' => $lot_number,
'captcha_output' => $captcha_output,
'pass_token' => $pass_token,
'gen_time' => $gen_time,
'sign_token' => $sign_token
];
// Richiesta alla secondary verification API
$url = $api_server . '/validate?captcha_id=' . $captcha_id;
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
'timeout' => 5
]
];
$context = stream_context_create($options);
$result = @file_get_contents($url, false, $context);
if ($result === FALSE) {
$response = ['login' => 'fail', 'reason' => 'request geetest api fail'];
} else {
$gt_msg = json_decode($result, true);
if ($gt_msg['result'] === 'success') {
$response = ['login' => 'success', 'reason' => $gt_msg['reason']];
} else {
$response = ['login' => 'fail', 'reason' => $gt_msg['reason']];
}
}
echo json_encode($response);
?>
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.