W tym artykule staraliśmy się odpowiedzieć na wszystkie najważniejsze pytania. Pierwszym krokiem w rozwiązywaniu problemu jest ustalenie, jaki system ochrony jest używany. W tym celu możesz skorzystać z listy popularnych captcha i systemów ochrony antybotowej, gdzie znajdziesz przykłady graficzne oraz kluczowe cechy, które pomogą szybko rozpoznać, z czym masz do czynienia.
Jeśli okaże się, że na Twojej stronie używany jest reCAPTCHA v2 Enterprise, kolejnym krokiem będzie dokładniejsze poznanie jej właściwości i sposobu działania. W tym artykule możesz również zapoznać się z instrukcją integracji systemu reCAPTCHA v2 Enterprise, aby w pełni zrozumieć, jak funkcjonuje on na Twojej stronie. Dzięki temu nie tylko lepiej poznasz obecną ochronę, ale też świadomie zaplanujesz jej dalsze utrzymanie.
Podczas testowania formularzy z reCAPTCHA v2 Enterprise często trzeba zweryfikować, czy captcha jest poprawnie zintegrowana i działa.
Możesz ręcznie sprawdzić captchę na swojej stronie.
Do automatycznego rozwiązywania wykorzystaj narzędzia takie jak CapMonster Cloud, które przyjmują parametry captcha, przetwarzają je na serwerach i zwracają gotowy token. Wstaw go do formularza, aby przejść weryfikację bez udziału użytkownika.
Praca z CapMonster Cloud poprzez API zazwyczaj obejmuje następujące kroki:
W żądaniu podaj:
type - RecaptchaV2EnterpriseTask;
websiteURL - adres strony z captchą;
websiteKey - sitekey widoczny na stronie;
enterprisePayload - przekaż go, jeśli widget reCAPTCHA Enterprise wysyła dodatkowe pole s w strukturze przekazywanej do grecaptcha.enterprise.render wraz z sitekey;
pageAction - wartość action wysyłana do Google (domyślnie verify).
Ponieważ reCAPTCHA Enterprise działa w Google Cloud, najpierw musisz utworzyć projekt w konsoli:
1. Przejdź do Google Cloud Console.
2. W górnym menu wybierz istniejący projekt lub kliknij Nowy projekt.
3. Wprowadź nazwę projektu, określ swoją organizację i potwierdź utworzenie.

4. Otwórz stronę API: reCAPTCHA Enterprise API i kliknij Włącz.
5. W konsoli przejdź do Utwórz klucz i kliknij Utwórz klucz.

6. Skonfiguruj podstawowe ustawienia:
Następnie otwórz Dodatkowe ustawienia, włącz opcję Czy będziesz używać wyzwań (challenges)? i aktywuj Checkbox Challenge.

7. Kliknij Utwórz. Otrzymasz klucz, który należy dodać do witryny, aby aktywować ochronę.

8. Dodaj skrypt do swojej strony.
Jeśli przejąłeś stronę internetową, na której jest już zainstalowany captcha lub inny system zabezpieczeń, a jednocześnie nie masz dostępu do kodu — to nic strasznego! Dość łatwo jest ustalić, jaka dokładnie technologia jest używana. Aby sprawdzić poprawność działania, możesz skorzystać z usługi rozpoznawania CapMonster Cloud w odizolowanym środowisku testowym, żeby upewnić się, że mechanizm przetwarzania tokenów i logika weryfikacji działają prawidłowo.
W przypadku reCAPTCHA v2 Enterprise wystarczy rozpoznać system, przeanalizować jego zachowanie i upewnić się, że zabezpieczenie działa poprawnie. W artykule pokazaliśmy, jak zidentyfikować reCAPTCHA v2 Enterprise oraz gdzie znaleźć instrukcje dotyczące jego podłączenia lub ponownej konfiguracji, aby móc pewnie utrzymywać ochronę i kontrolować jej działanie.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV2EnterpriseTask",
"websiteURL": "https://mydomain.com/page-with-recaptcha-enterprise",
"websiteKey": "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
"pageAction": "verify",
"enterprisePayload": {
"s": "SOME_ADDITIONAL_TOKEN"
}
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AFcWeA66ZARdA5te7acD9vSwWE2hEQ2-B2aqFxm455iMA-g-Jis..."
}
}
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2EnterpriseRequest } from '@zennolab_com/capmonstercloud-client';
(async () => {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
// 2. Otwórz stronę z captchą
await page.goto('https://example.com');
// 3. Utwórz klienta CapMonster Cloud
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: '<your_capmonster_cloud_api_key>' })
);
// 4. Skonfiguruj zapytanie rozwiązujące
const recaptchaRequest = new RecaptchaV2EnterpriseRequest({
websiteURL: page.url(),
websiteKey: '6Lf76sUnAAAAAIKLuWNyegRsFUfmI-3Lex3xT5N'
// enterprisePayload: { s: 'SOME_ADDITIONAL_TOKEN' } // Opcjonalny parametr enterprise
});
// 5. Rozwiąż captchę przez CapMonster
const solution = await cmcClient.Solve(recaptchaRequest);
const token = solution.solution.gRecaptchaResponse;
console.log('Token captchy:', token);
// 6. Wstaw token do ukrytego pola
await page.evaluate((t) => {
const el = document.getElementById('g-recaptcha-response');
if (el) el.value = t;
}, token);
// 7. (Opcjonalnie) wyślij formularz — dopasuj selektor
await page.click('button[data-action="submit"]');
await page.waitForTimeout(5000);
await browser.close();
})();<html>
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
</head>
<body>
<form action="" method="POST">
<div class="g-recaptcha" data-sitekey="YOUR_SITEKEY" data-action="LOGIN"></div>
<br/>
<input type="submit" value="Submit">
</form>
</body>
</html>9. Zweryfikuj odpowiedź po stronie serwera.
Token (g-recaptcha-response) jest wysyłany do backendu.
Jest ważny przez 2 minuty, więc zweryfikuj go jak najszybciej po odebraniu! Do bezpiecznej komunikacji z API zalecamy oficjalne biblioteki Google Cloud:
<?php
require 'vendor/autoload.php';
// Zainstaluj biblioteki Google Cloud za pomocą Composer
use Google/Cloud/RecaptchaEnterprise/V1/RecaptchaEnterpriseServiceClient;
use Google/Cloud/RecaptchaEnterprise/V1/Event;
use Google/Cloud/RecaptchaEnterprise/V1/Assessment;
use Google/Cloud/RecaptchaEnterprise/V1/CreateAssessmentRequest;
use Google/Cloud/RecaptchaEnterprise/V1/TokenProperties/InvalidReason;
/**
* Zwaliduj token reCAPTCHA Enterprise i pobierz wynik ryzyka.
*
* @param string $recaptchaKey Klucz reCAPTCHA Twojej witryny/aplikacji
* @param string $token Token otrzymany od klienta
* @param string $projectId ID projektu Google Cloud
* @param string $action Nazwa akcji powiązana z tokenem
*/
function create_assessment(string $recaptchaKey, string $token, string $projectId, string $action): void {
$client = new RecaptchaEnterpriseServiceClient();
$projectName = $client->projectName($projectId);
// Utwórz zdarzenie oceny (assessment)
$event = (new Event())->setSiteKey($recaptchaKey)->setToken($token);
$assessment = (new Assessment())->setEvent($event);
$request = (new CreateAssessmentRequest())->setParent($projectName)->setAssessment($assessment);
try {
$response = $client->createAssessment($request);
if (!$response->getTokenProperties()->getValid()) {
echo 'Token jest nieprawidłowy: ' . InvalidReason::name($response->getTokenProperties()->getInvalidReason());
return;
}
if ($response->getTokenProperties()->getAction() === $action) {
echo 'Wynik ryzyka: ' . $response->getRiskAnalysis()->getScore();
} else {
echo 'Akcja w tagu reCAPTCHA nie zgadza się z oczekiwaną wartością';
}
} catch (Exception $e) {
echo 'Błąd podczas sprawdzania reCAPTCHA: ' . $e->getMessage();
}
}
// Wywołaj funkcję z podanymi zmiennymi
create_assessment(
'YOUR_SITE_KEY',
'YOUR_USER_RESPONSE_TOKEN',
'YOUR_PROJECT_ID',
'YOUR_RECAPTCHA_ACTION'
);
?>