logo
bars

GeeTest CAPTCHA v4
en CapMonster Cloud

Oplossen van captcha’s, integratie op de website en testen.
Heb je een site geërfd met een ingebouwde captcha of andere bescherming, maar zonder toegang tot de broncode? Dan wil je natuurlijk weten welke oplossing draait, of die goed is ingesteld en hoe je de werking test.

In dit artikel hebben we geprobeerd antwoord te geven op alle belangrijke vragen. De eerste stap bij het oplossen van het vraagstuk is vaststellen welk beveiligingssysteem wordt gebruikt. Daarvoor kun je de lijst met populaire captcha’s en anti-botbeveiligingssystemen raadplegen, met visuele voorbeelden en kernkenmerken die je helpen snel te bepalen waarmee je te maken hebt.

Als je ontdekt dat je website GeeTest CAPTCHA v4 gebruikt, is de volgende stap om de eigenschappen en werking ervan uitgebreider te bestuderen. In dit artikel vind je ook een handleiding voor het integreren van GeeTest CAPTCHA v4, zodat je volledig begrijpt hoe het systeem op je website werkt. Zo kun je niet alleen de huidige bescherming beter doorgronden, maar ook het onderhoud ervan goed plannen.

Wat is GeeTest CAPTCHA v4
Wat is GeeTest CAPTCHA v4
GeeTest CAPTCHA v4 (Adaptive CAPTCHA/Behavior Verification) is een modernere versie in vergelijking met v3, ontworpen om websites te beschermen tegen geautomatiseerde acties die schade kunnen toebrengen aan de site. Het systeem volgt het gedrag en de apparaateigenschappen van de bezoeker en kiest een passende uitdaging: voor een echte gebruiker blijft de controle zo eenvoudig mogelijk — één klik op de captcha-widget is voldoende; bij een vermoeden van automatisering krijgt de gebruiker een complexere opdracht die moet worden uitgevoerd.
Background
Voorbeelden van GeeTest CAPTCHA v4
No CAPTCHA
No CAPTCHA
De controle van de gebruiker gebeurt voornamelijk op basis van zijn gedrag en interactie met de site, zonder dat er expliciete opdrachten hoeven te worden opgelost.
Icon CAPTCHA
Icon CAPTCHA
Afbeeldingen in een opgegeven volgorde selecteren.
IconCrush CAPTCHA
IconCrush CAPTCHA
Elementen verwisselen om drie gelijke pictogrammen op één rij te zetten (zoals in “match-3”-puzzelspellen).
Slide CAPTCHA
Slide CAPTCHA
Een slider om een puzzel te voltooien of elementen van een afbeelding op elkaar af te stemmen.
Gobang CAPTCHA
Gobang CAPTCHA
Een slider om een puzzel te voltooien of elementen van een afbeelding op elkaar af te stemmen.

Hoe los je GeeTest CAPTCHA v4 op met CapMonster Cloud

Bij het testen van formulieren met GeeTest CAPTCHA v4 moet je vaak bevestigen dat de captcha goed is ingebouwd en werkt.

Je kunt de captcha op je site handmatig testen.

  • Open de pagina met het formulier en controleer of de captcha verschijnt.
  • Probeer het formulier te versturen zonder oplossing — de server hoort een fout terug te geven.
  • Na een succesvolle oplossing moet het formulier probleemloos worden verzonden.

Voor automatische oplossingen kun je tools zoals CapMonster Cloud gebruiken. Deze ontvangen de captcha-parameters, verwerken ze op hun servers en sturen een token terug dat je in het formulier kunt zetten om de controle zonder gebruikersinteractie te omzeilen.

Werken met CapMonster Cloud via de API bestaat doorgaans uit de volgende stappen:

Taak aanmakenTaak aanmaken
arrow
API-aanvraag versturenAPI-aanvraag versturen
arrow
Resultaat ontvangenResultaat ontvangen
arrow
Token op de pagina plaatsenToken op de pagina plaatsen
arrow
GeeTest CAPTCHA v4 oplossen met behulp van kant-en-klare bibliotheken
De dienst CapMonster Cloud biedt kant-en-klare bibliotheken voor comfortabel werken met Python, JavaScript (Node.js) en C#.
Python
JavaScript
C#
Oplossen, token invoegen en formulier verzenden
Voorbeeld in Node.js voor de volledige cyclus van captcha-herkenning op je webpagina. Mogelijke aanpakken: HTTP-verzoeken gebruiken om de HTML en de captchaparameters op te halen, het antwoord te versturen en het resultaat te verwerken; of met automatiseringstools (bijvoorbeeld Playwright) de pagina openen, wachten tot de captcha geladen is, de parameters verzenden (voor tests kun je zowel correcte als foutieve gegevens sturen), de oplossing ophalen via de CapMonster-Cloud-client, de token in het formulier invoegen en het resultaat bekijken.
// 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. De /load-response onderscheppen (captcha_id, challenge, enz. bepalen)
  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. De pagina laden
  console.log("Opening page:", pageUrl);
  await page.goto(pageUrl, { waitUntil: "domcontentloaded" });

  // 3. Wachten tot /load is onderschept
  console.log("Waiting for GeeTest /load...");
  while (!detected) {
    await page.waitForTimeout(500);
  }

  // 4. De taak naar CapMonster Cloud sturen
  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. Eigen waarden in /verify invullen om een succesvolle response te krijgen
  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. De actie van een gebruiker nabootsen (bijvoorbeeld op de captchaknop klikken)
  console.log("Waiting for captcha interaction...");
  await page.waitForTimeout(3000);

  // Voorbeeld van een verificatie-aanroep:
  try {
    await page.click('.geetest_btn'); // captchaknop
    console.log("Clicked captcha button");
  } catch {
    console.log("Captcha button not found");
  }

  // Soms moet verify() handmatig worden aangeroepen:
  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"; // vervang dit door een pagina met GeeTest v4
  const res = await solveGeetestV4(url);
  console.log("FINISHED:", res);
})();
Hoe je GeeTest CAPTCHA v4 op je site aansluit
Om goed te begrijpen hoe de captcha op je site werkt, hoe de validatie zich gedraagt en hoe je haar opnieuw kunt aansluiten of opnieuw configureren, raden we je aan deze sectie te lezen. Hierin wordt het proces van het inschakelen van de bescherming beschreven — dit helpt je om snel inzicht te krijgen in alle details.

1. Registreer je of log in bij je GeeTest-account.

2. Ga naar het Captcha Dashboard en kies Behavior Verification v4:

HowTo Connect image 1

3. Klik in het dashboard op + Create application.

4. Vul APP/website name in (de naam van de site of applicatie waar de captcha wordt gebruikt), Address (het hoofddomein van de site waar de captcha wordt geïnstalleerd, bijvoorbeeld https://example.com), Industry (de categorie van de site, bijvoorbeeld “E-commerce”, “Social Media”, enz.) en klik op Confirm.

5. Klik op Add events naast de zojuist aangemaakte applicatie. Geef Event op – de naam van het specifieke scenario (event) waarin de captcha wordt gebruikt, bijvoorbeeld login, register enz.; Device – het platform (bijvoorbeeld Web/Wap); Business types – het type gebruiksscenario voor de captcha (bijvoorbeeld Sign-up / Sign-in — registratie / aanmelding). Klik op Add.

6. In je dashboard verschijnen nu de ID (gebruikt aan client- en serverzijde) en de Key (gebruikt aan serverzijde voor verificatie) van de aangemaakte captcha:

HowTo Connect image 2

7. Sluit de client-kant aan

Voeg het script toe:

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

Initialiseer de CAPTCHA:

initGeetest4(
  { captchaId: "Your CaptchaId" },
  function (captcha) {
    captcha.appendTo("#captcha"); // in een element op de pagina invoegen
  }
);

Belangrijk:

  • De CAPTCHA moet bij het laden van de pagina worden geïnitialiseerd, anders kan het gebruikersgedrag niet worden gevolgd.
  • Als je meerdere CAPTCHAs op één pagina gebruikt, roep initGeetest4 dan voor elke captcha afzonderlijk aan.
  • Als je de CAPTCHA in een iframe gebruikt, voeg dan sandbox="allow-scripts allow-popups" toe.

CodevoorbeeldCodevoorbeeld
arrow

8. Configureer de server-kant.

Wanneer de gebruiker de CAPTCHA op de frontend voltooit, wordt een set parameters gegenereerd. Deze parameters moeten naar de backend worden gestuurd en vervolgens via de secundaire GeeTest-API worden gecontroleerd om te bevestigen dat de verificatie is geslaagd.

Secundaire verificatie-API:

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

  • Methode: GET/POST
  • Content-Type: application/x-www-form-urlencoded
  • Response: JSON

Belangrijkste requestparameters

  • lot_number – serienummer van de verificatie
  • captcha_output – verificatiegegevens
  • pass_token – verificatietoken
  • gen_time – tijdstip waarop de verificatie is gegenereerd
  • captcha_id – CAPTCHA-ID
  • sign_token – handtekening voor de verificatie

Voorbeeld van een succesvolle responseVoorbeeld van een succesvolle response
arrow

Voorbeeld van CAPTCHA-verificatie in PHPVoorbeeld van CAPTCHA-verificatie in PHP
arrow

Background
Mogelijke fouten en debugging
Bug Icon
Ongeldige parameters
De captcha wordt niet weergegeven of geeft fouten terug zoals invalid-captcha-id / invalid-challenge. Controleer of je actuele waarden van captcha_id en challenge gebruikt die overeenkomen met je pagina. Deze parameters worden dynamisch gegenereerd bij elk /load-verzoek.
Bug Icon
Time-out bij oplossen
Het resultaat van de captcha-oplossing is niet op tijd ontvangen. Verhoog de wachttijd als je een automatische oplossingsdienst gebruikt (zoals CapMonster Cloud) en zorg ervoor dat de verbinding met de API stabiel is.
Bug Icon
Lege velden
captcha_output, pass_token of lot_number worden niet naar de pagina of naar het verificatieverzoek gestuurd. Controleer of deze waarden correct worden ingevuld in verborgen formulier-velden of in de body van het verzoek naar je server.
Bug Icon
Antwoord success=false
De token is verlopen, opnieuw gebruikt of vervalst. Schakel logging in voor alle verzoeken en antwoorden van de verificatieserver zodat je velden als error_code of error_msg kunt volgen.
Controle van de robuustheid
Controleer na de integratie of het systeem de site echt beschermt tegen geautomatiseerde acties.
Aanbevelingen voor veiligheid en optimalisatie
Bewaar de <b>captchasleutel (geheime KEY) uitsluitend op de server</b> en geef deze nooit door aan de client-side.
Log foutcodes tijdens de verificatie (<b>error-codes</b> of velden uit het serverantwoord) zodat je de oorzaken van mislukte controles begrijpt.
Voeg onderaan het formulier links toe naar je <b>privacybeleid</b> en de <b>gebruiksvoorwaarden van GeeTest</b>, als dit door de licentie of interne richtlijnen is vereist.
Conclusie

Als je een website in beheer krijgt waarop al een captcha of een ander beveiligingssysteem is geïnstalleerd en je geen toegang hebt tot de code, is dat geen probleem! Het is vrij eenvoudig te bepalen welke technologie precies wordt gebruikt. Voor het controleren of alles correct werkt, kun je de herkenningsservice CapMonster Cloud in een geïsoleerde testomgeving gebruiken, zodat je zeker weet dat het tokenverwerkingsmechanisme en de validatielogica correct functioneren.

In het geval van GeeTest CAPTCHA v4 is het voldoende om het systeem te herkennen, het gedrag te analyseren en te bevestigen dat de beveiliging correct werkt. In het artikel hebben we laten zien hoe je GeeTest CAPTCHA v4 kunt herkennen en waar je instructies vindt om het te koppelen of opnieuw te configureren, zodat je de bescherming met vertrouwen kunt onderhouden en de werking onder controle kunt houden.

Conclusion